moved back to old acc
[vox.git] / examples / delegation.vx
blobf275d0a1910314364b36b28b5cbca6fa272c8d5e
1 \r
2 PEntity := {\r
3     name="noname"\r
4     pos={x=0,y=0,z=0}\r
5     type="entity"\r
6     //methamethod\r
7     _typeof=function()\r
8     {\r
9         return type;\r
10     }\r
11 }\r
13 function PEntity::PrintPos()\r
14 {\r
15     ::print("x="+pos.x+" y="+pos.y+" z="+pos.z+"\n");\r
16 }\r
18 function PEntity::new(name,pos)\r
19 {\r
20     local newentity=clone ::PEntity;\r
21     if(name)\r
22         newentity.name=name;\r
23     if(pos)\r
24         newentity.pos=pos;\r
25     return newentity;\r
26 }\r
28 PPlayer := {\r
29     model="warrior.mdl"\r
30     weapon="fist"\r
31     health=100\r
32     armor=0\r
33     //overrides the parent type\r
34     type="player"\r
35 }\r
37 function PPlayer::new(name,pos)\r
38 {\r
39     local p = clone ::PPlayer;\r
40     local newplayer = ::PEntity.new(name,pos);\r
41     newplayer.setdelegate(p);\r
42     return newplayer;\r
43 }\r
45 local player=PPlayer.new("godzilla",{x=10,y=20,z=30});\r
47 ::print("PLAYER NAME"+player.name+"\n");\r
48 ::print("ENTITY TYPE"+typeof player+"\n");\r
50 player.PrintPos();\r
52 player.pos.x=123;\r
54 player.PrintPos();