@@ -50,7 +50,8 @@ public class LuaNatives {
5050
5151 addNative (Collections .singletonList ("S2I" ), f -> {
5252 f .getParams ().add (LuaAst .LuaVariable ("x" , LuaAst .LuaNoExpr ()));
53- f .getBody ().add (LuaAst .LuaLiteral ("return tonumber(x)" ));
53+ f .getBody ().add (LuaAst .LuaLiteral ("local m = string.match(tostring(x), \" ^[%+%-]?%d+\" )" ));
54+ f .getBody ().add (LuaAst .LuaLiteral ("if m then return tonumber(m) else return 0 end" ));
5455 });
5556
5657 addNative ("Player" , f -> {
@@ -63,7 +64,11 @@ public class LuaNatives {
6364 f .getBody ().add (LuaAst .LuaLiteral ("return x.id" ));
6465 });
6566
66- addNative ("GetRandomReal" , f -> f .getBody ().add (LuaAst .LuaLiteral ("return math.random" )));
67+ addNative ("GetRandomReal" , f -> {
68+ f .getParams ().add (LuaAst .LuaVariable ("l" , LuaAst .LuaNoExpr ()));
69+ f .getParams ().add (LuaAst .LuaVariable ("h" , LuaAst .LuaNoExpr ()));
70+ f .getBody ().add (LuaAst .LuaLiteral ("return l + math.random() * (h - l)" ));
71+ });
6772
6873 addNative ("GetRandomInt" , f -> {
6974 f .getParams ().add (LuaAst .LuaVariable ("l" , LuaAst .LuaNoExpr ()));
@@ -90,30 +95,83 @@ public class LuaNatives {
9095 addNative ("TriggerEvaluate" , f -> {
9196 f .getParams ().add (LuaAst .LuaVariable ("t" , LuaAst .LuaNoExpr ()));
9297 f .getBody ().add (LuaAst .LuaLiteral ("for i,a in ipairs(t.actions) do a() end" ));
98+ f .getBody ().add (LuaAst .LuaLiteral ("return true" ));
9399 });
94100
95101 addNative ("R2I" , f -> {
96102 f .getParams ().add (LuaAst .LuaVariable ("x" , LuaAst .LuaNoExpr ()));
97- f .getBody ().add (LuaAst .LuaLiteral ("return math.floor (x)" ));
103+ f .getBody ().add (LuaAst .LuaLiteral ("return math.modf (x)" ));
98104 });
99105
100- addNative ("InitHashtable" , f -> f .getBody ().add (LuaAst .LuaLiteral ("return {}" )));
106+ addNative (Arrays . asList ( "InitHashtable" , "__wurst_InitHashtable" ) , f -> f .getBody ().add (LuaAst .LuaLiteral ("return {}" )));
101107
102- addNative (Arrays .asList ("SaveInteger" , "SaveBoolean" , "SaveReal" , "SaveStr" , "SaveBoolean" ), f -> {
108+ addNative (Arrays .asList (
109+ "SaveInteger" , "SaveBoolean" , "SaveReal" , "SaveStr" ,
110+ "__wurst_SaveInteger" , "__wurst_SaveBoolean" , "__wurst_SaveReal" , "__wurst_SaveStr" ), f -> {
103111 f .getParams ().add (LuaAst .LuaVariable ("h" , LuaAst .LuaNoExpr ()));
104112 f .getParams ().add (LuaAst .LuaVariable ("p" , LuaAst .LuaNoExpr ()));
105113 f .getParams ().add (LuaAst .LuaVariable ("c" , LuaAst .LuaNoExpr ()));
106114 f .getParams ().add (LuaAst .LuaVariable ("i" , LuaAst .LuaNoExpr ()));
107115 f .getBody ().add (LuaAst .LuaLiteral ("if not h[p] then h[p] = {} end h[p][c] = i" ));
108116 });
109117
110- addNative (Arrays .asList ("LoadInteger" , "LoadBoolean" , "LoadReal" , "LoadStr" , "LoadBoolean" ), f -> {
118+ addNative (Arrays .asList (
119+ "LoadInteger" , "LoadBoolean" , "LoadReal" , "LoadStr" ,
120+ "__wurst_LoadInteger" , "__wurst_LoadBoolean" , "__wurst_LoadReal" , "__wurst_LoadStr" ), f -> {
111121 f .getParams ().add (LuaAst .LuaVariable ("h" , LuaAst .LuaNoExpr ()));
112122 f .getParams ().add (LuaAst .LuaVariable ("p" , LuaAst .LuaNoExpr ()));
113123 f .getParams ().add (LuaAst .LuaVariable ("c" , LuaAst .LuaNoExpr ()));
114124 f .getBody ().add (LuaAst .LuaLiteral ("if not h[p] then return nil end return h[p][c]" ));
115125 });
116126
127+ addNative (Arrays .asList (
128+ "HaveSavedInteger" , "HaveSavedBoolean" , "HaveSavedReal" , "HaveSavedString" ,
129+ "__wurst_HaveSavedInteger" , "__wurst_HaveSavedBoolean" , "__wurst_HaveSavedReal" , "__wurst_HaveSavedString" ), f -> {
130+ f .getParams ().add (LuaAst .LuaVariable ("h" , LuaAst .LuaNoExpr ()));
131+ f .getParams ().add (LuaAst .LuaVariable ("p" , LuaAst .LuaNoExpr ()));
132+ f .getParams ().add (LuaAst .LuaVariable ("c" , LuaAst .LuaNoExpr ()));
133+ f .getBody ().add (LuaAst .LuaLiteral ("return h[p] ~= nil and h[p][c] ~= nil" ));
134+ });
135+
136+ addNative (Arrays .asList ("FlushChildHashtable" , "__wurst_FlushChildHashtable" ), f -> {
137+ f .getParams ().add (LuaAst .LuaVariable ("h" , LuaAst .LuaNoExpr ()));
138+ f .getParams ().add (LuaAst .LuaVariable ("p" , LuaAst .LuaNoExpr ()));
139+ f .getBody ().add (LuaAst .LuaLiteral ("h[p] = nil" ));
140+ });
141+
142+ addNative (Arrays .asList ("FlushParentHashtable" , "__wurst_FlushParentHashtable" ), f -> {
143+ f .getParams ().add (LuaAst .LuaVariable ("h" , LuaAst .LuaNoExpr ()));
144+ f .getBody ().add (LuaAst .LuaLiteral ("for k in pairs(h) do h[k] = nil end" ));
145+ });
146+
147+ addNative (Arrays .asList (
148+ "RemoveSavedInteger" , "RemoveSavedBoolean" , "RemoveSavedReal" , "RemoveSavedString" ,
149+ "__wurst_RemoveSavedInteger" , "__wurst_RemoveSavedBoolean" , "__wurst_RemoveSavedReal" , "__wurst_RemoveSavedString" ), f -> {
150+ f .getParams ().add (LuaAst .LuaVariable ("h" , LuaAst .LuaNoExpr ()));
151+ f .getParams ().add (LuaAst .LuaVariable ("p" , LuaAst .LuaNoExpr ()));
152+ f .getParams ().add (LuaAst .LuaVariable ("c" , LuaAst .LuaNoExpr ()));
153+ f .getBody ().add (LuaAst .LuaLiteral ("if h[p] then h[p][c] = nil end" ));
154+ });
155+
156+ addNative ("typeIdToTypeName" , f -> {
157+ f .getParams ().add (LuaAst .LuaVariable ("typeId" , LuaAst .LuaNoExpr ()));
158+ f .getBody ().add (LuaAst .LuaLiteral ("return \" \" " ));
159+ });
160+
161+ addNative ("maxTypeId" , f -> {
162+ f .getBody ().add (LuaAst .LuaLiteral ("return 0" ));
163+ });
164+
165+ addNative ("instanceCount" , f -> {
166+ f .getParams ().add (LuaAst .LuaVariable ("typeId" , LuaAst .LuaNoExpr ()));
167+ f .getBody ().add (LuaAst .LuaLiteral ("return 0" ));
168+ });
169+
170+ addNative ("maxInstanceCount" , f -> {
171+ f .getParams ().add (LuaAst .LuaVariable ("typeId" , LuaAst .LuaNoExpr ()));
172+ f .getBody ().add (LuaAst .LuaLiteral ("return 0" ));
173+ });
174+
117175 }
118176
119177 private static void addNative (String name , Consumer <LuaFunction > g ) {
0 commit comments