diff options
author | rubidium <rubidium@openttd.org> | 2009-02-25 01:21:50 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2009-02-25 01:21:50 +0000 |
commit | 1ad50ce4e6ed74c8eeb89a1f2780e6ed58a72b2b (patch) | |
tree | 0955433146cc59335ddaac1d6e08eb177a9ead61 /src/3rdparty/squirrel/samples/metamethods.nut | |
parent | 66a8c0a1325e1f8717150dc6bbe1bcb4fb458bef (diff) | |
download | openttd-1ad50ce4e6ed74c8eeb89a1f2780e6ed58a72b2b.tar.xz |
(svn r15578) -Change: unexternalise squirrel.
Diffstat (limited to 'src/3rdparty/squirrel/samples/metamethods.nut')
-rw-r--r-- | src/3rdparty/squirrel/samples/metamethods.nut | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/src/3rdparty/squirrel/samples/metamethods.nut b/src/3rdparty/squirrel/samples/metamethods.nut new file mode 100644 index 000000000..53439520e --- /dev/null +++ b/src/3rdparty/squirrel/samples/metamethods.nut @@ -0,0 +1,115 @@ + +local base_vec={ + function _add(n) + { + return { + x=x+n.x, + y=y+n.y, + z=z+n.z, + } + } + function _sub(n) + { + return { + x=x-n.x, + y=y-n.y, + z=z-n.z, + } + } + function _div(n) + { + return { + x=x/n.x, + y=y/n.y, + z=z/n.z, + } + } + function _mul(n) + { + return { + x=x*n.x, + y=y*n.y, + z=z*n.z, + } + } + function _modulo(n) + { + return { + x=x%n, + y=y%n, + z=z%n, + } + } + function _typeof() {return "vector";} + function _get(key) + { + if(key==100) + { + return test_field; + } + }, + function _set(key,val) + { + ::print("key = "+key+"\n"); + ::print("val = "+val+"\n") + if(key==100) + { + return test_field=val; + } + } + test_field="nothing" +} + +function vector(_x,_y,_z):(base_vec) +{ + return delegate base_vec : {x=_x,y=_y,z=_z } +} +//////////////////////////////////////////////////////////// + +local v1=vector(1.5,2.5,3.5); +local v2=vector(1.5,2.5,3.5); + +local r=v1+v2; + + +foreach(i,val in r) +{ + print(i+" = "+val+"\n"); +} + +r=v1*v2; + +foreach(i,val in r) +{ + print(i+" = "+val+"\n"); +} + +r=v1/v2; + +foreach(i,val in r) +{ + print(i+" = "+val+"\n"); +} + +r=v1-v2; + +foreach(i,val in r) +{ + print(i+" = "+val+"\n"); +} + +r=v1%2; + +foreach(i,val in r) +{ + print(i+" = "+val+"\n"); +} + +print(v1[100]+"\n"); +v1[100]="set SUCCEEDED"; +print(v1[100]+"\n"); + +if(typeof v1=="vector") + print("<SUCCEEDED>\n"); +else + print("<FAILED>\n"); |