The Squirrel interpreter. See http://www.squirrel-lang.org/

Dependents:   Squirrel

Revision:
0:97a4f8cc534c
diff -r 000000000000 -r 97a4f8cc534c samples/delegation.nut
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/samples/delegation.nut	Tue Dec 16 10:20:34 2014 +0000
@@ -0,0 +1,54 @@
+
+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();
\ No newline at end of file