]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/triggers/func/ladder.qc
Merge branch 'terencehill/menu_optimization' into 'master'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / triggers / func / ladder.qc
index 3785299e24444b361cf01bf23377e3a44fa5d94d..44687de4a163a57aa63156d38b7bea582610202d 100644 (file)
@@ -1,3 +1,5 @@
+REGISTER_NET_LINKED(ENT_CLIENT_LADDER)
+
 void func_ladder_touch()
 {SELFPARAM();
 #ifdef SVQC
@@ -5,9 +7,8 @@ void func_ladder_touch()
                return;
        if(IS_VEHICLE(other))
                return;
-#endif
-#ifdef CSQC
-       if(other.classname != "csqcmodel")
+#elif defined(CSQC)
+       if(!other.isplayermodel)
                return;
 #endif
 
@@ -18,66 +19,67 @@ void func_ladder_touch()
 }
 
 #ifdef SVQC
-float func_ladder_send(entity to, float sf)
+bool func_ladder_send(entity to, int sf)
 {SELFPARAM();
-       WriteByte(MSG_ENTITY, ENT_CLIENT_LADDER);
+       WriteHeader(MSG_ENTITY, ENT_CLIENT_LADDER);
 
        WriteString(MSG_ENTITY, self.classname);
        WriteByte(MSG_ENTITY, self.skin);
-       WriteByte(MSG_ENTITY, self.speed);
-       WriteString(MSG_ENTITY, self.mdl);
+       WriteCoord(MSG_ENTITY, self.speed);
 
-       trigger_common_write(false);
+       trigger_common_write(self, false);
 
        return true;
 }
 
 void func_ladder_link()
 {
-       //self.SendEntity = func_ladder_send;
-       //self.SendFlags = 0xFFFFFF;
+       self.SendEntity = func_ladder_send;
+       self.SendFlags = 0xFFFFFF;
        //self.model = "null";
 }
 
-spawnfunc(func_ladder)
+void func_ladder_init()
 {
-       self.mdl = self.model;
-       EXACTTRIGGER_INIT;
        self.touch = func_ladder_touch;
 
+       trigger_init(self);
        func_ladder_link();
 }
 
-spawnfunc(func_water)
+spawnfunc(func_ladder)
 {
-       self.mdl = self.model;
-       EXACTTRIGGER_INIT;
-       self.touch = func_ladder_touch;
+       func_ladder_init();
+}
 
-       func_ladder_link();
+spawnfunc(func_water)
+{
+       func_ladder_init();
 }
 
 #elif defined(CSQC)
 .float speed;
 
-void ent_func_ladder()
-{SELFPARAM();
+void func_ladder_remove(entity this)
+{
+       if(this.classname) { strunzone(this.classname); }
+       this.classname = string_null;
+}
+
+NET_HANDLE(ENT_CLIENT_LADDER, bool isnew)
+{
        self.classname = strzone(ReadString());
        self.skin = ReadByte();
-       self.speed = ReadByte();
-       self.model = strzone(ReadString());
+       self.speed = ReadCoord();
 
        trigger_common_read(false);
-       self.mins = self.maxs = '0 0 0';
 
        self.solid = SOLID_TRIGGER;
-       self.draw = trigger_draw_generic;
-       self.trigger_touch = func_ladder_touch;
+       self.move_touch = func_ladder_touch;
        self.drawmask = MASK_NORMAL;
        self.move_time = time;
-       self.entremove = trigger_remove_generic;
+       self.entremove = func_ladder_remove;
 
-       //precache_model(self.mdl);
-       EXACTTRIGGER_INIT;
+       return true;
 }
 #endif