Skip to content

Commit 44dd296

Browse files
committed
more compiletime impls
1 parent 732b63c commit 44dd296

13 files changed

Lines changed: 212 additions & 9 deletions

File tree

de.peeeq.wurstscript/build.gradle

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,11 +291,17 @@ shadowJar {
291291
def fatJar = shadowJar.archiveFile.map { it.asFile }
292292

293293
tasks.register('make_for_userdir', Copy) {
294-
dependsOn 'shadowJar'
294+
dependsOn 'shadowJar', 'make_for_userdir_wurst_compiler'
295295
from fatJar
296296
into "${System.properties['user.home']}/.wurst/"
297297
}
298298

299+
tasks.register('make_for_userdir_wurst_compiler', Copy) {
300+
dependsOn 'shadowJar'
301+
from fatJar
302+
into "${System.properties['user.home']}/.wurst/wurst-compiler/"
303+
}
304+
299305
tasks.register('make_for_wurstpack', Copy) {
300306
dependsOn 'shadowJar'
301307
from fatJar

de.peeeq.wurstscript/src/main/java/de/peeeq/wurstio/CompilationProcess.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public CompilationProcess(WurstGui gui, RunArgs runArgs) {
8282

8383
if (runArgs.isRunTests()) {
8484
timeTaker.measure("Run tests",
85-
() -> runTests(compiler.getImTranslator(), compiler, runArgs.getTestTimeout()));
85+
() -> runTests(compiler.getImTranslator(), compiler, runArgs.getTestTimeout(), runArgs.getTestFilter()));
8686
}
8787

8888
timeTaker.measure("Run compiletime functions", () ->compiler.runCompiletime(new WurstProjectConfigData(), isProd, false));
@@ -153,12 +153,12 @@ private File writeMapscript(CharSequence mapScript) {
153153
}
154154
}
155155

156-
private void runTests(ImTranslator translator, WurstCompilerJassImpl compiler, int testTimeout) {
156+
private void runTests(ImTranslator translator, WurstCompilerJassImpl compiler, int testTimeout, Optional<String> testFilter) {
157157
PrintStream out = System.out;
158158
// tests
159159
gui.sendProgress("Running tests");
160160
System.out.println("Running tests");
161-
RunTests runTests = new RunTests(Optional.empty(), 0, 0, Optional.empty(), testTimeout) {
161+
RunTests runTests = new RunTests(Optional.empty(), 0, 0, Optional.empty(), testTimeout, testFilter) {
162162
@Override
163163
protected void print(String message) {
164164
out.print(message);

de.peeeq.wurstscript/src/main/java/de/peeeq/wurstio/jassinterpreter/ReflectionNativeProvider.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public class ReflectionNativeProvider implements NativesProvider {
1616
private final HashMap<String, NativeJassFunction> methodMap = new HashMap<>();
1717

1818
public ReflectionNativeProvider(AbstractInterpreter interpreter) {
19+
addProvider(new AbilityProvider(interpreter));
1920
addProvider(new GamecacheProvider(interpreter));
2021
addProvider(new ForceProvider(interpreter));
2122
addProvider(new HandleProvider(interpreter));

de.peeeq.wurstscript/src/main/java/de/peeeq/wurstio/jassinterpreter/mocks/PlayerMock.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@
44
import de.peeeq.wurstscript.intermediatelang.ILconstInt;
55
import de.peeeq.wurstscript.intermediatelang.ILconstNull;
66

7+
import java.util.HashMap;
8+
79
public class PlayerMock {
810
public final ILconstInt id;
911
public ILconst playerColor = ILconstNull.instance();
12+
public final HashMap<Integer, ILconstInt> techMaxAllowed = new HashMap<>();
1013

1114
public PlayerMock(ILconstInt p) {
1215
this.id = p;
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package de.peeeq.wurstio.jassinterpreter.providers;
2+
3+
import de.peeeq.wurstscript.intermediatelang.ILconstInt;
4+
import de.peeeq.wurstscript.intermediatelang.ILconstString;
5+
import de.peeeq.wurstscript.intermediatelang.interpreter.AbstractInterpreter;
6+
7+
public class AbilityProvider extends Provider {
8+
public AbilityProvider(AbstractInterpreter interpreter) {
9+
super(interpreter);
10+
}
11+
12+
public ILconstString BlzGetAbilityIcon(ILconstInt abilCode) {
13+
return new ILconstString("");
14+
}
15+
16+
public ILconstString BlzGetAbilityExtendedTooltip(ILconstInt abilCode, ILconstInt level) {
17+
return new ILconstString("");
18+
}
19+
}

de.peeeq.wurstscript/src/main/java/de/peeeq/wurstio/jassinterpreter/providers/ConversionProvider.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,14 @@ public IlConstHandle ConvertUnitState(ILconstInt i) {
4747
return new IlConstHandle("unitstate" + i, new LinkedHashSet<>());
4848
}
4949

50+
public IlConstHandle ConvertUnitIntegerField(ILconstInt i) {
51+
return new IlConstHandle("unitintegerfield" + i, i.getVal());
52+
}
53+
54+
public IlConstHandle ConvertUnitWeaponIntegerField(ILconstInt i) {
55+
return new IlConstHandle("unitweaponintegerfield" + i, i.getVal());
56+
}
57+
5058
public IlConstHandle ConvertAIDifficulty(ILconstInt i) {
5159
return new IlConstHandle("aidifficulty" + i, new LinkedHashSet<>());
5260
}

de.peeeq.wurstscript/src/main/java/de/peeeq/wurstio/jassinterpreter/providers/ForceProvider.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ public void ForceClear(IlConstHandle force) {
3333
}
3434

3535
public ILconstBool IsPlayerInForce(IlConstHandle player, IlConstHandle force) {
36+
if (player == null || force == null) {
37+
return ILconstBool.FALSE;
38+
}
3639
LinkedHashSet<IlConstHandle> forceList = (LinkedHashSet<IlConstHandle>) force.getObj();
3740
return ILconstBool.instance(forceList.contains(player));
3841
}

de.peeeq.wurstscript/src/main/java/de/peeeq/wurstio/jassinterpreter/providers/OutputProvider.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,18 @@ public OutputProvider(AbstractInterpreter interpreter) {
1818
super(interpreter);
1919
}
2020

21+
public void DisplayTextToForce(IlConstHandle force, ILconstString msg) {
22+
outStream.println(msg.getVal());
23+
}
24+
25+
public void DisplayTimedTextToForce(IlConstHandle force, ILconstReal duration, ILconstString msg) {
26+
outStream.println(msg.getVal());
27+
}
28+
29+
public void DisplayTextToPlayer(IlConstHandle player, ILconstReal x, ILconstReal y, ILconstString msg) {
30+
outStream.println(msg.getVal());
31+
}
32+
2133
public void DisplayTimedTextToPlayer(IlConstHandle player, ILconstReal x, ILconstReal y, ILconstReal duration, ILconstString msg) {
2234
outStream.println(msg.getVal());
2335
}

de.peeeq.wurstscript/src/main/java/de/peeeq/wurstio/jassinterpreter/providers/PlayerProvider.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public ILconstInt GetPlayerNeutralAggressive() {
3535

3636

3737
public IlConstHandle GetLocalPlayer() {
38-
return new IlConstHandle("Local Player", "local player");
38+
return Player(ILconstInt.create(0));
3939
}
4040

4141
public ILconstInt GetBJMaxPlayerSlots() {
@@ -53,4 +53,12 @@ public void SetPlayerColor(IlConstHandle player, IlConstHandle playercolor) {
5353
public ILconst GetPlayerColor(IlConstHandle player) {
5454
return ((PlayerMock) player.getObj()).playerColor;
5555
}
56+
57+
public void SetPlayerTechMaxAllowed(IlConstHandle player, ILconstInt techid, ILconstInt maximum) {
58+
((PlayerMock) player.getObj()).techMaxAllowed.put(techid.getVal(), maximum);
59+
}
60+
61+
public ILconstInt GetPlayerTechMaxAllowed(IlConstHandle player, ILconstInt techid) {
62+
return ((PlayerMock) player.getObj()).techMaxAllowed.getOrDefault(techid.getVal(), ILconstInt.create(0));
63+
}
5664
}

de.peeeq.wurstscript/src/main/java/de/peeeq/wurstio/jassinterpreter/providers/UnitProvider.java

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package de.peeeq.wurstio.jassinterpreter.providers;
22

3+
import de.peeeq.wurstio.objectreader.ObjectHelper;
34
import de.peeeq.wurstio.jassinterpreter.mocks.UnitMock;
5+
import de.peeeq.wurstscript.intermediatelang.ILconstBool;
46
import de.peeeq.wurstscript.intermediatelang.ILconstInt;
57
import de.peeeq.wurstscript.intermediatelang.ILconstReal;
8+
import de.peeeq.wurstscript.intermediatelang.ILconstString;
69
import de.peeeq.wurstscript.intermediatelang.IlConstHandle;
710
import de.peeeq.wurstscript.intermediatelang.interpreter.AbstractInterpreter;
811

@@ -23,11 +26,58 @@ public ILconstInt GetUnitTypeId(IlConstHandle unit) {
2326
return ((UnitMock)unit.getObj()).unitid;
2427
}
2528

29+
public ILconstString GetUnitName(IlConstHandle unit) {
30+
if (unit == null) {
31+
return new ILconstString("");
32+
}
33+
UnitMock unitMock = (UnitMock) unit.getObj();
34+
return new ILconstString(ObjectHelper.objectIdIntToString(unitMock.unitid.getVal()));
35+
}
36+
37+
public ILconstInt GetUnitGoldCost(ILconstInt unitid) {
38+
return ILconstInt.create(0);
39+
}
40+
41+
public ILconstInt GetUnitWoodCost(ILconstInt unitid) {
42+
return ILconstInt.create(0);
43+
}
44+
45+
public ILconstInt GetUnitPointValueByType(ILconstInt unitid) {
46+
return ILconstInt.create(0);
47+
}
48+
49+
public ILconstInt GetFoodUsed(ILconstInt unitid) {
50+
return ILconstInt.create(0);
51+
}
52+
53+
public ILconstInt GetUnitBuildTime(ILconstInt unitid) {
54+
return ILconstInt.create(0);
55+
}
56+
57+
public ILconstInt BlzGetUnitIntegerField(IlConstHandle whichUnit, IlConstHandle whichField) {
58+
return ILconstInt.create(0);
59+
}
60+
61+
public ILconstInt BlzGetUnitWeaponIntegerField(IlConstHandle whichUnit, IlConstHandle whichField, ILconstInt index) {
62+
return ILconstInt.create(0);
63+
}
64+
65+
public ILconstBool IsUnitType(IlConstHandle whichUnit, IlConstHandle whichUnitType) {
66+
return ILconstBool.FALSE;
67+
}
68+
69+
public void RemoveUnit(IlConstHandle unit) {
70+
userDataMap.remove(unit);
71+
}
72+
2673
public ILconstInt GetUnitUserData(IlConstHandle unit) {
27-
return userDataMap.get(unit);
74+
return unit == null ? ILconstInt.create(0) : userDataMap.getOrDefault(unit, ILconstInt.create(0));
2875
}
2976

3077
public void SetUnitUserData(IlConstHandle unit, ILconstInt userData) {
78+
if (unit == null) {
79+
return;
80+
}
3181
userDataMap.put(unit, userData);
3282
}
3383
}

0 commit comments

Comments
 (0)