The Squirrel interpreter. See http://www.squirrel-lang.org/
samples/delegation.nut
- Committer:
- jhnwkmn
- Date:
- 2014-12-16
- Revision:
- 0:97a4f8cc534c
File content as of revision 0:97a4f8cc534c:
PEntity <- { name="noname" pos={x=0,y=0,z=0} type="entity" //methamethod _typeof=function() { return type; } } function PEntity::PrintPos() { ::print("x="+pos.x+" y="+pos.y+" z="+pos.z+"\n"); } function PEntity::new(name,pos) { local newentity=clone ::PEntity; if(name) newentity.name=name; if(pos) newentity.pos=pos; return newentity; } PPlayer <- { model="warrior.mdl" weapon="fist" health=100 armor=0 //overrides the parent type type="player" } function PPlayer::new(name,pos) { local p = clone ::PPlayer; local newplayer = ::PEntity.new(name,pos); newplayer.setdelegate(p); return newplayer; } local player=PPlayer.new("godzilla",{x=10,y=20,z=30}); ::print("PLAYER NAME"+player.name+"\n"); ::print("ENTITY TYPE"+typeof player+"\n"); player.PrintPos(); player.pos.x=123; player.PrintPos();