case STATEMENT.REFREAD:
s1 = GetStringFromStack();
stack.Push(heap[s1]);
stack.Push(new Data(0));
case STATEMENT.REFWRITE:
s1 = GetStringFromStack();
case STATEMENT.REFEXISTS:
stack.Push(new Data(heap.ContainsKey(GetStringFromStack()) ? 1 : 0));
case STATEMENT.REFDELETE:
case STATEMENT.READ:
s1 = command.data.GetString();
stack.Push(heap[s1]);
stack.Push(new Data(0));
case STATEMENT.WRITE:
s1 = command.data.GetString();
case STATEMENT.EXISTS:
stack.Push(new Data(heap.ContainsKey(command.data.GetString()) ? 1 : 0));
case STATEMENT.DELETE:
case STATEMENT.REFREADGLOBAL:
s1 = GetStringFromStack();
stack.Push(GameSpace.instance.globalHeap[s1]);
stack.Push(new Data(0));
case STATEMENT.REFWRITEGLOBAL:
s1 = GetStringFromStack();
case STATEMENT.REFEXISTSGLOBAL:
stack.Push(new Data(GameSpace.instance.globalHeap.ContainsKey(GetStringFromStack()) ? 1 : 0));
case STATEMENT.REFDELETEGLOBAL:
case STATEMENT.READGLOBAL:
s1 = command.data.GetString();
stack.Push(GameSpace.instance.globalHeap[s1]);
stack.Push(new Data(0));
case STATEMENT.WRITEGLOBAL:
s1 = command.data.GetString();
case STATEMENT.EXISTSGLOBAL:
stack.Push(new Data(GameSpace.instance.globalHeap.ContainsKey(command.data.GetString()) ? 1 : 0));
case STATEMENT.DELETEGLOBAL:
case STATEMENT.CLEARGLOBALS:
case STATEMENT.NOTPERSIST:
s1 = GetStringFromStack();
case STATEMENT.INVOCATIONCOUNT:
stack.Push(new Data(invocationCount));
case STATEMENT.DOUBLEQUOTE:
stack.Push(new Data("\""));
case STATEMENT.GETTYPE:
d1 = GetDataFromStack();
stack.Push(new Data(d1.GetType().ToString()));
case STATEMENT.SETLISTELEMENTRPN:
// value, list, index
i1 = GetIntFromStack();
list1 = GetListFromStack();
if (stack.Count > 0) { d1 = stack.Pop(); } else { d1 = new Data(0);}
case STATEMENT.REMOVELISTELEMENT:
i1 = GetIntFromStack();
list1 = GetListFromStack();
case STATEMENT.GETKEY:
s1 = GetStringFromStack();
stack.Push(new Data(Input.GetKey(kc1) ? 1 : 0));
stack.Push(new Data(0));
case STATEMENT.GETKEYDOWN:
s1 = GetStringFromStack();
stack.Push(new Data(0));
stack.Push(new Data(Input.GetKeyDown(kc2) ? 1 : 0));
stack.Push(new Data(0));
case STATEMENT.GETKEYUP:
s1 = GetStringFromStack();
stack.Push(new Data(0));
stack.Push(new Data(Input.GetKeyUp(kc2) ? 1 : 0));
stack.Push(new Data(0));
case STATEMENT.GETMOUSEBUTTON:
i1 = GetIntFromStack();
stack.Push(new Data(Input.GetMouseButton(i1) ? 1 : 0));
case STATEMENT.GETMOUSEBUTTONDOWN:
i1 = GetIntFromStack();
stack.Push(new Data(Input.GetMouseButtonDown(i1) ? 1 : 0));
case STATEMENT.GETMOUSEBUTTONUP:
i1 = GetIntFromStack();
stack.Push(new Data(Input.GetMouseButtonUp(i1) ? 1 : 0));
case STATEMENT.GETMOUSESCREENPOSITION:
stack.Push(new Data(Input.mousePosition.x / Screen.width));
stack.Push(new Data(Input.mousePosition.y / Screen.height));
case STATEMENT.GETMOUSESCREENPIXELPOSITION:
stack.Push(new Data(Input.mousePosition.x));
stack.Push(new Data(Input.mousePosition.y));
case STATEMENT.GETMOUSEPOSITION:
Vector3 wp = GameSpace.instance.mainCamera.ScreenToWorldPoint(Input.mousePosition);
stack.Push(new Data(wp.x));
stack.Push(new Data(wp.y));
case STATEMENT.GETMOUSECELL:
Vector3 wp2 = GameSpace.instance.mainCamera.ScreenToWorldPoint(Input.mousePosition);
stack.Push(new Data((int)(wp2.x / (float)GameSpace.GRID_SIZE)));
stack.Push(new Data((int)(wp2.y / (float)GameSpace.GRID_SIZE)));
case STATEMENT.RESETGAMETIME:
case STATEMENT.SETGAMETIME:
f1 = GetFloatFromStack();
case STATEMENT.SETGAMETIMEFRAMES:
i1 = GetIntFromStack();
case STATEMENT.GETGAMETIMEFRAMES:
stack.Push(new Data(GameSpace.instance.updateCount));
case STATEMENT.PAUSEGAME:
GameSpace.instance.paused = true;
case STATEMENT.UNPAUSEGAME:
GameSpace.instance.paused = false;
case STATEMENT.OPERATEWHILEPAUSED:
operateWhilePaused = GetIntFromStack() == 1;
case STATEMENT.ISPAUSED:
stack.Push(new Data(GameSpace.instance.paused ? 1 : 0));
case STATEMENT.USERCANCELED:
stack.Push(new Data(GameSpace.instance.userCancelAction ? 1 : 0));
case STATEMENT.MAPWIDTH:
stack.Push(new Data(GameSpace.GAMESPACE_WIDTH));
case STATEMENT.MAPHEIGHT:
stack.Push(new Data(GameSpace.GAMESPACE_HEIGHT));
case STATEMENT.SCREENWIDTH:
stack.Push(new Data(Screen.width));
case STATEMENT.SCREENHEIGHT:
stack.Push(new Data(Screen.height));
case STATEMENT.DEBUG:
d1 = stack.Peek();
Debug.Log(d1.GetType() + " " + d1.GetInt() + " " + d1.GetFloat() + " " + d1.GetString());
Debug.Log("--EMPTY STACK--");
case STATEMENT.TRACE:
DebugText.LogMessage(this,GetStringFromStack());
case STATEMENT.PRINT:
DebugText.PrintMessage(this,GetStringFromStack());
case STATEMENT.TRACEALL:
foreach (Data d in stack) {
DebugText.LogMessage(this, sbu.ToString());
case STATEMENT.PRINTALL:
foreach (Data d in stack) {
DebugText.PrintMessage(this, sbu.ToString());
case STATEMENT.TRACEALLSP:
foreach (Data d in stack) {
DebugText.LogMessage(this, sbu.ToString());
case STATEMENT.PRINTALLSP:
foreach (Data d in stack) {
DebugText.PrintMessage(this, sbu.ToString());
case STATEMENT.TRACE2:
s1 = GetStringFromStack();
s2 = GetStringFromStack();
DebugText.LogMessage(this,s0);
case STATEMENT.PRINT2:
s1 = GetStringFromStack();
s2 = GetStringFromStack();
DebugText.PrintMessage(this,s0);
case STATEMENT.TRACE3:
s1 = GetStringFromStack();
s2 = GetStringFromStack();
s3 = GetStringFromStack();
DebugText.LogMessage(this,s0);
case STATEMENT.PRINT3:
s1 = GetStringFromStack();
s2 = GetStringFromStack();
s3 = GetStringFromStack();
DebugText.PrintMessage(this,s0);
case STATEMENT.TRACE4:
s1 = GetStringFromStack();
s2 = GetStringFromStack();
s3 = GetStringFromStack();
s4 = GetStringFromStack();
DebugText.LogMessage(this,s0);
case STATEMENT.PRINT4:
s1 = GetStringFromStack();
s2 = GetStringFromStack();
s3 = GetStringFromStack();
s4 = GetStringFromStack();
DebugText.PrintMessage(this,s0);
case STATEMENT.TRACE5:
s1 = GetStringFromStack();
s2 = GetStringFromStack();
s3 = GetStringFromStack();
s4 = GetStringFromStack();
s5 = GetStringFromStack();
DebugText.LogMessage(this,s0);
case STATEMENT.PRINT5:
s1 = GetStringFromStack();
s2 = GetStringFromStack();
s3 = GetStringFromStack();
s4 = GetStringFromStack();
s5 = GetStringFromStack();
DebugText.PrintMessage(this,s0);
case STATEMENT.TRACESTACK:
foreach(Data d in stack) {
DebugText.LogMessage(this,sb.ToString());
case STATEMENT.PRINTSTACK:
foreach(Data d in stack) {
DebugText.PrintMessage(this,sb.ToString());
case STATEMENT.CLEARTRACELOG:
case STATEMENT.GETUPDATECOUNT:
stack.Push(new Data(updateCount));
case STATEMENT.RANDINT:
int max = GetIntFromStack();
int min = GetIntFromStack();
stack.Push(new Data(min+amt));
case STATEMENT.RANDFLOAT:
stack.Push(new Data((float)GameSpace.instance.RandDouble()));
case STATEMENT.RANDCOORDS:
gsx = (int)(GameSpace.instance.RandDouble() * GameSpace.GRID_WIDTH);
gsy = (int)(GameSpace.instance.RandDouble() * GameSpace.GRID_HEIGHT);
stack.Push(new Data(gsx));
stack.Push(new Data(gsy));
case STATEMENT.RANDCOORDSINRANGE:
f1 = GetFloatFromStack();
gsy = GetIntFromStack();
gsx = GetIntFromStack();
stack.Push(new Data(i1));
stack.Push(new Data(i2));
case STATEMENT.RANDXCOORD:
stack.Push(new Data(gsx));
case STATEMENT.RANDYCOORD:
stack.Push(new Data(gsy));
case STATEMENT.CURRENTCOORDS:
stack.Push(new Data(GetCell(baseUnit.coordX)));
stack.Push(new Data(GetCell(baseUnit.coordY)));
case STATEMENT.CURRENTX:
stack.Push(new Data(GetCell(baseUnit.coordX)));
case STATEMENT.CURRENTY:
stack.Push(new Data(GetCell(baseUnit.coordY)));
case STATEMENT.SETUNITCURRENTCOORDS:
i3 = GetIntFromStack(); //UID
i2 = GetIntFromStack(); //x-coord
i1 = GetIntFromStack(); //y-coord
case STATEMENT.SETCURRENTCOORDS:
i2 = GetIntFromStack(); // x
i1 = GetIntFromStack(); // y
case STATEMENT.SETUNITCURRENTX:
i2 = GetIntFromStack(); // x
i1 = GetIntFromStack(); // UID
case STATEMENT.SETUNITCURRENTY:
i2 = GetIntFromStack(); // y
i1 = GetIntFromStack(); // UID
case STATEMENT.SETCURRENTX:
i1 = GetIntFromStack();
case STATEMENT.SETCURRENTY:
i1 = GetIntFromStack();
case STATEMENT.CURRENTPIXELCOORDS:
stack.Push(new Data(baseUnit.coordX));
stack.Push(new Data(baseUnit.coordY));
case STATEMENT.GETUNITTRANSFORMPOSITION:
stack.Push(new Data(baseUnit.transform.position.x));
stack.Push(new Data(baseUnit.transform.position.y));
stack.Push(new Data(baseUnit.transform.position.z));
case STATEMENT.SETSCREENMODE:
i1 = GetIntFromStack();
case STATEMENT.SETSCREENCOORDS:
f2 = GetFloatFromStack(); //screenY = f2
f1 = GetFloatFromStack(); //screenX = f1
case STATEMENT.SETSCREENCOORDX:
f1 = GetFloatFromStack(); //screenX = f1
case STATEMENT.SETSCREENCOORDY:
f1 = GetFloatFromStack(); //screenY = f1
case STATEMENT.SETSCREENPIXELCOORDS:
i2 = GetIntFromStack(); //screenY
i1 = GetIntFromStack(); //screenX
case STATEMENT.SETSCREENPIXELCOORDX:
i1 = GetIntFromStack();
case STATEMENT.SETSCREENPIXELCOORDY:
i1 = GetIntFromStack();
case STATEMENT.GETBUILDSLOTSCREENCOORDS:
i2 = GetIntFromStack(); // corner
i1 = GetIntFromStack(); // slot number
stack.Push(new Data(sp.x / (float)Screen.width));
stack.Push(new Data(sp.y / (float)Screen.height));
case STATEMENT.GETCONTROLPANELBUTTONSCREENCOORDS:
i1 = GetIntFromStack(); // corner
s1 = GetStringFromStack(); // button name
stack.Push(new Data(sp.x / (float)Screen.width));
stack.Push(new Data(sp.y / (float)Screen.height));
case STATEMENT.GETTECHPANELVISIBLE:
stack.Push(new Data(GameSpace.instance.gameControls.techPanel.activeSelf ? 1 : 0));
case STATEMENT.SETTECHPANELVISIBLE:
i1 = GetIntFromStack();
case STATEMENT.CELLTOPIXEL:
i2 = GetIntFromStack(); //y
i1 = GetIntFromStack(); //x
stack.Push(new Data(wx));
stack.Push(new Data(wy));
case STATEMENT.PIXELTOCELL:
f2 = GetFloatFromStack(); //py
f1 = GetFloatFromStack(); //px
stack.Push(new Data(x));
stack.Push(new Data(y));
case STATEMENT.CREATEEFFECT:
f2 = GetFloatFromStack(); //pixel y
f1 = GetFloatFromStack(); //pixel x
s1 = GetStringFromStack(); //Which effect
stack.Push(new Data(s.GUID));
case STATEMENT.DESTROYEFFECT:
i1 = GetIntFromStack(); //effect guid
case STATEMENT.GETALLUNITSINRANGE:
i1 = GetIntFromStack();
f1 = GetFloatFromStack();
gsy = GetIntFromStack();
gsx = GetIntFromStack();
stack.Push(new Data(units))
case STATEMENT.GETALLSHIPSINRANGE:
i1 = GetIntFromStack();
f1 = GetFloatFromStack();
gsy = GetIntFromStack();
gsx = GetIntFromStack();
stack.Push(new Data(units))
case STATEMENT.GETNEARESTSHIPINRANGE:
i1 = GetIntFromStack();
f1 = GetFloatFromStack();
gsy = GetIntFromStack();
gsx = GetIntFromStack();
stack.Push(new Data(nearestShip));
case STATEMENT.GETCORESWITHVAR:
d1 = stack.Pop();
s1 = GetStringFromStack();
stack.Push(new Data(cch.UID));
stack.Push(new Data(i1));
case STATEMENT.ADDSCRIPTTOUNIT:
s1 = GetStringFromStack();
i1 = GetIntFromStack();
case STATEMENT.SETSCRIPTVAR:
d1 = stack.Pop();
s2 = GetStringFromStack();
s1 = GetStringFromStack();
i1 = GetIntFromStack();
case STATEMENT.GETSCRIPTVAR:
s2 = GetStringFromStack();
s1 = GetStringFromStack();
i1 = GetIntFromStack();
stack.Push(d1);
case STATEMENT.SELF:
stack.Push(new Data(baseUnit.UID));
case STATEMENT.GETSHIPATTRIBUTE:
i2 = GetIntFromStack();
i1 = GetIntFromStack();
GetShipAttribute(i1, i2);
case STATEMENT.SETSHIPATTRIBUTE:
d1 = stack.Pop();
i2 = GetIntFromStack();
i1 = GetIntFromStack();
SetShipAttribute(i1, i2, d1);
case STATEMENT.GETATTRIBUTE:
i2 = GetIntFromStack();
i1 = GetIntFromStack();
GetAttribute(i1, i2);
case STATEMENT.SETATTRIBUTE:
d1 = stack.Pop();
i2 = GetIntFromStack();
i1 = GetIntFromStack();
SetAttribute(i1, i2, d1);
case STATEMENT.GETUNITTYPE:
i1 = GetIntFromStack(); // UID
stack.Push(new Data(unit.gameObject.name));
stack.Push(new Data(""));
case STATEMENT.SETIMAGE:
s1 = GetStringFromStack(); //image name
s2 = GetStringFromStack(); //image pos
i1 = GetIntFromStack(); //unit uid
case STATEMENT.REMOVEIMAGES:
i1 = GetIntFromStack(); //unit uid
case STATEMENT.SETIMAGEPOSITION:
f3 = GetFloatFromStack(); //z
f2 = GetFloatFromStack(); //y
f1 = GetFloatFromStack(); //x
s1 = GetStringFromStack(); //which image
i1 = GetIntFromStack(); //unit uid
case STATEMENT.SETIMAGEPOSITIONX:
f1 = GetFloatFromStack(); //x
s1 = GetStringFromStack(); //which image
i1 = GetIntFromStack(); //unit uid
case STATEMENT.SETIMAGEPOSITIONY:
f1 = GetFloatFromStack(); //y
s1 = GetStringFromStack(); //which image
i1 = GetIntFromStack(); //unit uid
case STATEMENT.SETIMAGEPOSITIONZ:
f1 = GetFloatFromStack(); //z
s1 = GetStringFromStack(); //which image
i1 = GetIntFromStack(); //unit uid
case STATEMENT.SETIMAGELAYER:
s2 = GetStringFromStack(); //layer name
s1 = GetStringFromStack(); //which image
i1 = GetIntFromStack(); //unit uid
case STATEMENT.SETIMAGEORDER:
i2 = GetIntFromStack(); //layer order
s1 = GetStringFromStack(); //which image
i1 = GetIntFromStack(); //unit uid
case STATEMENT.SETIMAGEROTATION:
f1 = GetFloatFromStack(); //rotation in radians
s1 = GetStringFromStack(); //which image
i1 = GetIntFromStack(); //unit uid
case STATEMENT.SETIMAGESCALE:
f2 = GetFloatFromStack(); //y
f1 = GetFloatFromStack(); //x
s1 = GetStringFromStack(); //which image
i1 = GetIntFromStack(); //unit uid
case STATEMENT.SETIMAGESCALEX:
f1 = GetFloatFromStack(); //x
s1 = GetStringFromStack(); //which image
i1 = GetIntFromStack(); //unit uid
case STATEMENT.SETIMAGESCALEY:
f1 = GetFloatFromStack(); //y
s1 = GetStringFromStack(); //which image
i1 = GetIntFromStack(); //unit uid
case STATEMENT.SETIMAGECOLOR:
i5 = GetIntFromStack(); //a
i4 = GetIntFromStack(); //b
i3 = GetIntFromStack(); //g
i2 = GetIntFromStack(); //r
s1 = GetStringFromStack(); //which image
i1 = GetIntFromStack(); //unit uid
case STATEMENT.GETIMAGEPOSITION:
s1 = GetStringFromStack(); //which image
i1 = GetIntFromStack(); //unit uid
case STATEMENT.GETIMAGEPOSITIONX:
s1 = GetStringFromStack(); //which image
i1 = GetIntFromStack(); //unit uid
stack.Push(new Data(id.go.transform.localPosition.x));
stack.Push(new Data());
case STATEMENT.GETIMAGEPOSITIONY:
s1 = GetStringFromStack(); //which image
i1 = GetIntFromStack(); //unit uid
stack.Push(new Data(id.go.transform.localPosition.y));
stack.Push(new Data());
case STATEMENT.GETIMAGEPOSITIONZ:
s1 = GetStringFromStack(); //which image
i1 = GetIntFromStack(); //unit uid
stack.Push(new Data(id.go.transform.localPosition.z));
stack.Push(new Data());
case STATEMENT.GETIMAGELAYER:
s1 = GetStringFromStack(); //which image
i1 = GetIntFromStack(); //unit uid
stack.Push(new Data((unit as CommonUnit).GetSortingLayerName(s1)));
stack.Push(new Data());
case STATEMENT.GETIMAGEORDER:
s1 = GetStringFromStack(); //which image
i1 = GetIntFromStack(); //unit uid
stack.Push(new Data((unit as CommonUnit).GetSortingOrder(s1)));
case STATEMENT.GETIMAGEROTATION:
s1 = GetStringFromStack(); //which image
i1 = GetIntFromStack(); //unit uid
stack.Push(new Data(id.go.transform.eulerAngles.z*Mathf.Deg2Rad));
stack.Push(new Data());
case STATEMENT.GETIMAGESCALE:
s1 = GetStringFromStack(); //which image
i1 = GetIntFromStack(); //unit uid
float scX, scY;
stack.Push(new Data(scX));
stack.Push(new Data(scY));
stack.Push(new Data());stack.Push(new Data());
case STATEMENT.GETIMAGESCALEX:
f1 = GetFloatFromStack(); //x
s1 = GetStringFromStack(); //which image
i1 = GetIntFromStack(); //unit uid
float scX, scY;
stack.Push(new Data(scX));
stack.Push(new Data());
case STATEMENT.GETIMAGESCALEY:
f1 = GetFloatFromStack(); //y
s1 = GetStringFromStack(); //which image
i1 = GetIntFromStack(); //unit uid
float scX, scY;
stack.Push(new Data(scY));
case STATEMENT.GETIMAGECOLOR:
s1 = GetStringFromStack(); //which image
i1 = GetIntFromStack(); //unit uid
stack.Push(new Data((int)(c1.r*255)));
stack.Push(new Data((int)(c1.g*255)));
stack.Push(new Data((int)(c1.b*255)));
stack.Push(new Data((int)(c1.a*255)));
stack.Push(new Data()); stack.Push(new Data()); stack.Push(new Data()); stack.Push(new Data());
case STATEMENT.WINMISSION:
case STATEMENT.FAILMISSION:
case STATEMENT.SETFAILONHQLOSS:
GameSpace.instance.failOnHQLoss = GetIntFromStack() != 0;
case STATEMENT.GETFAILONHQLOSS:
stack.Push(new Data(GameSpace.instance.failOnHQLoss ? 1 : 0));
case STATEMENT.SETHQJUMPTIME:
GameSpace.instance.hqJumpTime = GetIntFromStack();
case STATEMENT.SETSHOWSPECIALENDING:
GameSpace.instance.showSpecialEnding = GetIntFromStack() != 0;
case STATEMENT.PLAYSOUND:
CustomSounds.Play(GetStringFromStack());
case STATEMENT.SHOWCONVERSATION:
s1 = GetStringFromStack();
case STATEMENT.SHOWCONVERSATIONNOPAUSE:
s1 = GetStringFromStack();
case STATEMENT.SHOWCONVERSATIONAUTOMODE:
f2 = GetFloatFromStack();
f1 = GetFloatFromStack();
s1 = GetStringFromStack();
case STATEMENT.CLOSECONVERSATION:
s1 = GetStringFromStack();
case STATEMENT.ADDCONVERSATIONMESSAGE:
s2 = GetStringFromStack();
i1 = GetIntFromStack();
s1 = GetStringFromStack();
case STATEMENT.CLEARCONVERSATION:
s1 = GetStringFromStack();
case STATEMENT.DESTROYCONVERSATION:
s1 = GetStringFromStack();
case STATEMENT.CONVERSATIONSHOWING:
stack.Push(GameSpace.instance.conversationsManager.IsConversationShowing() ? new Data(1) : new Data(0));
case STATEMENT.SPECIFICCONVERSATIONSHOWING:
s1 = GetStringFromStack();
stack.Push(GameSpace.instance.conversationsManager.IsSpecificConversationShowing(s1) ? new Data(1) : new Data(0));
case STATEMENT.SETTEXT:
s1 = GetStringFromStack();
case STATEMENT.SETTEXTCOLOR:
i4 = GetIntFromStack(); // alpha
i3 = GetIntFromStack(); // blue
i2 = GetIntFromStack(); // green
i1 = GetIntFromStack(); // red
case STATEMENT.SETTEXTSIZE:
f1 = GetFloatFromStack();
case STATEMENT.SETTEXTX:
f1 = GetFloatFromStack();
case STATEMENT.SETTEXTY:
f1 = GetFloatFromStack();
case STATEMENT.SETTEXTROTATION:
f1 = GetFloatFromStack();
case STATEMENT.SETTEXTORDER:
i1 = GetIntFromStack();
case STATEMENT.SHOWMESSAGE:
s0 = GetStringFromStack();
case STATEMENT.SHOWMESSAGEDISMISSIBLE:
s0 = GetStringFromStack();
case STATEMENT.WASMESSAGEDISMISSED:
stack.Push(new Data(GameSpace.instance.messageDismissed ? 1 : 0));
case STATEMENT.CREATEINDICATORARROW:
i1 = GetIntFromStack(); //
f3 = GetFloatFromStack(); // rotation
f2 = GetFloatFromStack(); // position f2*Screen.height
f1 = GetFloatFromStack(); // position f1*Screen.width
s0 = GetStringFromStack(); //
case STATEMENT.DESTROYINDICATORARROW:
s0 = GetStringFromStack();
case STATEMENT.SETINDICATORARROWPOSITION:
f2 = GetFloatFromStack();
f1 = GetFloatFromStack();
s0 = GetStringFromStack();
case STATEMENT.SETINDICATORARROWROTATION:
f1 = GetFloatFromStack();
s0 = GetStringFromStack();
case STATEMENT.SETINDICATORARROWCOLOR:
i4 = GetIntFromStack();
i3 = GetIntFromStack();
i2 = GetIntFromStack();
i1 = GetIntFromStack();
s0 = GetStringFromStack();
case STATEMENT.DISTANCE:
float y1 = GetFloatFromStack();
float x1 = GetFloatFromStack();
float y2 = GetFloatFromStack();
float x2 = GetFloatFromStack();
float di = Mathf.Sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));
stack.Push(new Data(di));
case STATEMENT.ISEDITMODE:
stack.Push(new Data(GameSpace.editMode ? 1 : 0));
case STATEMENT.FUNC:
case STATEMENT.CALL:
case STATEMENT.CONST_LATHETARGETS:
stack.Push(new Data((int)CONST_UNIT_ATTRIBUTES.LATHETARGETS));
case STATEMENT.CONST_CREATEENERGYSOURCEWHENDESTROYED:
stack.Push(new Data((int)CONST_UNIT_ATTRIBUTES.CREATEENERGYSOURCEWHENDESTROYED));
case STATEMENT.CONST_CREATEAMPGEMWHENDESTROYED:
stack.Push(new Data((int)CONST_UNIT_ATTRIBUTES.CREATEAMPGEMWHENDESTROYED));
case STATEMENT.CONST_ISENEMY:
stack.Push(new Data((int)CONST_UNIT_ATTRIBUTES.ISENEMY));
case STATEMENT.CONST_GROWSTRUC:
stack.Push(new Data((int)CONST_UNIT_ATTRIBUTES.GROWSTRUC));
case STATEMENT.CONST_CREATEFOOTPRINT:
stack.Push(new Data((int)CONST_UNIT_ATTRIBUTES.CREATEFOOTPRINT));
case STATEMENT.CONST_MISSIONGOAL:
stack.Push(new Data((int)CONST_UNIT_ATTRIBUTES.MISSIONGOAL));
case STATEMENT.CONST_TAKEMAPSPACE:
stack.Push(new Data((int)CONST_UNIT_ATTRIBUTES.TAKEMAPSPACE));
case STATEMENT.CONST_ISBUILDING:
stack.Push(new Data((int)CONST_UNIT_ATTRIBUTES.ISBUILDING));
case STATEMENT.CONST_ISDESTROYED:
stack.Push(new Data((int)CONST_UNIT_ATTRIBUTES.ISDESTROYED));
case STATEMENT.CONST_SHIP_ISENEMY:
stack.Push(new Data((int)CONST_SHIP_ATTRIBUTES.ISENEMY));
case STATEMENT.CONST_SHIP_HULLSIZE:
stack.Push(new Data((int)CONST_SHIP_ATTRIBUTES.HULLSIZE));
case STATEMENT.CONST_SHIP_HULLBUILT:
stack.Push(new Data((int)CONST_SHIP_ATTRIBUTES.HULLBUILT));
case STATEMENT.CONST_SHIP_CMCOST:
stack.Push(new Data((int)CONST_SHIP_ATTRIBUTES.CMCOST));
case STATEMENT.CONST_SHIP_CMBUILTAMT:
stack.Push(new Data((int)CONST_SHIP_ATTRIBUTES.CMBUILTAMT));
break;
case STATEMENT.CONST_SHIP_ISCONNECTEDTOENERGYMINE:
stack.Push(new Data((int)CONST_SHIP_ATTRIBUTES.ISCONNECTEDTOENERGYMINE));
case STATEMENT.CONST_COORDX:
stack.Push(new Data((int)CONST_UNIT_ATTRIBUTES.COORDX));
case STATEMENT.CONST_COORDY:
stack.Push(new Data((int)CONST_UNIT_ATTRIBUTES.COORDY));
case STATEMENT.CONST_PIXELCOORDX:
stack.Push(new Data((int)CONST_UNIT_ATTRIBUTES.PIXELCOORDX));
case STATEMENT.CONST_PIXELCOORDY:
stack.Push(new Data((int)CONST_UNIT_ATTRIBUTES.PIXELCOORDY));
case STATEMENT.CONST_RECEIVESPACKETS:
stack.Push(new Data((int)CONST_UNIT_ATTRIBUTES.RECEIVESPACKETS));
case STATEMENT.SIGNAL_NONE:
stack.Push(new Data((int)CONST_SIGNALTYPES.SIGNAL_NONE));
case STATEMENT.SIGNAL_SINE:
stack.Push(new Data((int)CONST_SIGNALTYPES.SIGNAL_SINE));
case STATEMENT.SIGNAL_SQUARE:
stack.Push(new Data((int)CONST_SIGNALTYPES.SIGNAL_SQUARE));
case STATEMENT.SIGNAL_TRIANGLE:
stack.Push(new Data((int)CONST_SIGNALTYPES.SIGNAL_TRIANGLE));
case STATEMENT.SIGNAL_SAWTOOTH:
stack.Push(new Data((int)CONST_SIGNALTYPES.SIGNAL_SAWTOOTH));
case STATEMENT.SIGNAL_RANDOM:
stack.Push(new Data((int)CONST_SIGNALTYPES.SIGNAL_RANDOM));
case STATEMENT.SIGNAL_CONSTANT:
stack.Push(new Data((int)CONST_SIGNALTYPES.SIGNAL_CONSTANT));
case STATEMENT.ISUNIT:
stack.Push(new Data(baseUnit is UnitManager ? 1 : 0));
case STATEMENT.DESTROYPARTICLE:
i2 = GetIntFromStack(); //mode
i1 = GetIntFromStack(); //UID
case STATEMENT.DESTROYBOND:
i1 = GetIntFromStack(); //UID
case STATEMENT.CREATEUNIT:
i2 = GetIntFromStack(); //Y cell
i1 = GetIntFromStack(); //X cell
s1 = GetStringFromStack(); //Unit Name
stack.Push(new Data(unit.UID));
stack.Push(new Data(-1));
case STATEMENT.DESTROYUNIT:
i2 = GetIntFromStack(); //mode
i1 = GetIntFromStack(); //UID
case STATEMENT.SETUNITISGOAL:
i2 = GetIntFromStack(); //goal
i1 = GetIntFromStack(); //UID
case STATEMENT.GETUNITISGOAL:
i1 = GetIntFromStack(); //UID
stack.Push(new Data(u.isGoal ? 1 : 0));
stack.Push(new Data(0));
case STATEMENT.UNITISDESTROYED:
i1 = GetIntFromStack(); //UID
stack.Push(new Data(1));
stack.Push(new Data(u.dead ? 1 : 0));
case STATEMENT.INITCANNONSHOT:
i3 = GetIntFromStack(); //Enemy bool
i2 = GetIntFromStack(); //Target Particle UID (can be virtual)
i1 = GetIntFromStack(); //CannonShot UID
case STATEMENT.INITMISSILE:
i3 = GetIntFromStack(); //Enemy bool
i2 = GetIntFromStack(); //Target Particle UID (can be virtual)
i1 = GetIntFromStack(); //Missile UID
case STATEMENT.MOVESHIP:
i4 = GetIntFromStack(); //mode
i3 = GetIntFromStack(); //y
i2 = GetIntFromStack(); //x
i1 = GetIntFromStack(); // Ship UID
case STATEMENT.ROTATESHIPTOCELL:
i3 = GetIntFromStack(); //y
i2 = GetIntFromStack(); //x
i1 = GetIntFromStack(); // Ship UID
case STATEMENT.ROTATESHIPTOPIXEL:
f2 = GetIntFromStack(); //y
f1 = GetIntFromStack(); //x
i1 = GetIntFromStack(); // Ship UID
case STATEMENT.ROTATESHIP:
f1 = GetIntFromStack(); //angle in radians
i1 = GetIntFromStack(); // Ship UID
case STATEMENT.ROTATESHIPDEGREES:
f1 = GetIntFromStack(); //angle in degrees
i1 = GetIntFromStack(); // Ship UID
case STATEMENT.GETSHIPHULLSECTION:
i3 = GetIntFromStack(); // y
i2 = GetIntFromStack(); // x
i1 = GetIntFromStack(); // Ship UID
stack.Push(new Data(-1));
stack.Push(new Data(0));
stack.Push(new Data((int)h.hullType));
case STATEMENT.GETSHIPHULLSECTIONBUILT:
i3 = GetIntFromStack(); // y
i2 = GetIntFromStack(); // x
i1 = GetIntFromStack(); // Ship UID
stack.Push(new Data(0));
stack.Push(new Data(0));
stack.Push(new Data(h.isBuilding ? 0 : 1));
stack.Push(new Data(0));
case STATEMENT.DELETESHIPFROMSLOT:
i2 = GetIntFromStack(); //Destroy ship
i1 = GetIntFromStack(); //Slot ID
if (i1 >= 0 && i1 <= 23) {
GameSpace.instance.buildPanel.DeleteBuildButton(i1, i2 != 0, i2 > 1);
//DeleteShipFromSlot needs the second arg to indicate if you want to destroy the associated ship (if built).
// If the player builds a ship a script could then delete the build slot but leave the ship
// (so it could not be rebuilt for instance).
case STATEMENT.GETSHIPFROMSLOT:
i1 = GetIntFromStack(); //Slot ID
stack.Push(new Data(GameSpace.instance.buildPanel.GetShipFromSlot(i1)));
stack.Push(new Data(-1));
case STATEMENT.GETSLOTFROMSHIP:
i1 = GetIntFromStack(); //Ship UID
stack.Push(new Data(GameSpace.instance.buildPanel.GetSlotFromShip(i1)));
case STATEMENT.GETSHIPNAMEFROMSLOT:
i1 = GetIntFromStack(); //Slot ID
stack.Push(new Data(sn));
stack.Push(new Data(""));
case STATEMENT.GETSHIPSLOTCOUNT:
i1 = GetIntFromStack(); //builtships
stack.Push(new Data(GameSpace.instance.buildPanel.GetBuildSlotCount(i1 != 0)));
case STATEMENT.ADDSTOCKSHIPTOINVENTORY:
s1 = GetStringFromStack();
case STATEMENT.ADDCUSTOMSHIPTOINVENTORY:
s1 = GetStringFromStack();
byte[] bdata = System.Convert.FromBase64String(s1);
case STATEMENT.ADDGAMEEVENT:
s1 = GetStringFromStack();
i1 = GetIntFromStack();
stack.Push(new Data(pos));
case STATEMENT.ADDGAMEEVENTATCELL:
i4 = GetIntFromStack();
i3 = GetIntFromStack();
i2 = GetIntFromStack();
s1 = GetStringFromStack();
i1 = GetIntFromStack();
case STATEMENT.ADDGAMEEVENTATPIXEL:
i2 = GetIntFromStack();
f2 = GetFloatFromStack();
f1 = GetFloatFromStack();
s1 = GetStringFromStack();
i1 = GetIntFromStack();
stack.Push(new Data(pos));
case STATEMENT.SETGAMEEVENTFADETIME:
i2 = GetIntFromStack();
i1 = GetIntFromStack();
case STATEMENT.SETGAMEEVENTMESSAGE:
s1 = GetStringFromStack();
i1 = GetIntFromStack();
case STATEMENT.SETGAMEEVENTTYPE:
i2 = GetIntFromStack();
i1 = GetIntFromStack();
case STATEMENT.GETLANDCOUNT:
stack.Push(new Data(Land.instance.landTotal));
case STATEMENT.GETENEMYMIRECOUNT:
stack.Push(new Data(Land.instance.redCoverTotal));
case STATEMENT.GETMIRECOUNT:
stack.Push(new Data(Land.instance.blueCoverTotal));
case STATEMENT.GETENERGYSOURCECOUNT:
stack.Push(new Data(GameSpace.instance.energySources.Count));
case STATEMENT.GETENERGYSOURCES:
foreach (EnergySource es in GameSpace.instance.energySources) {
stack.Push(new Data(results));
case STATEMENT.GETRANDOMENERGYSOURCE:
stack.Push(new Data(-1));
stack.Push(new Data(es.UID));
case STATEMENT.GETGLOBALSTOREDENERGY:
stack.Push(new Data(f1));
case STATEMENT.SETGLOBALSTOREDENERGY:
f1 = GetFloatFromStack();
case STATEMENT.GETTECHAVAILABILITY:
i1 = GetIntFromStack();
stack.Push(new Data(0));
stack.Push(new Data(GameSpace.instance.techAvailable[i1] ? 1 : 0));
case STATEMENT.SETTECHAVAILABILITY:
i2 = GetIntFromStack();
i1 = GetIntFromStack();
case STATEMENT.GETALLOWSHIPAMP:
stack.Push(new Data(GameSpace.instance.allowShipAmp ? 1 : 0));
case STATEMENT.SETALLOWSHIPAMP:
i1 = GetIntFromStack();
case STATEMENT.SETHULLBUILDRATEMOD:
f1 = GetFloatFromStack();
case STATEMENT.GETAMPGEMCOUNT:
stack.Push(new Data(GameSpace.instance.ampGems));
case STATEMENT.SETAMPGEMCOUNT:
i1 = GetIntFromStack();
case STATEMENT.GETMAXBLUEEMERGENT:
stack.Push(new Data(GameSpace.instance.maxBlueEmergents));
case STATEMENT.GETMAXREDEMERGENT:
stack.Push(new Data(GameSpace.instance.maxRedEmergents));
case STATEMENT.SETMAXBLUEEMERGENT:
i1 = GetIntFromStack();
case STATEMENT.SETMAXREDEMERGENT:
i1 = GetIntFromStack();
case STATEMENT.GETBLUEEMERGENTRATE:
stack.Push(new Data(GameSpace.instance.blueEmergentRate));
case STATEMENT.GETREDEMERGENTRATE:
stack.Push(new Data(GameSpace.instance.redEmergentRate));
case STATEMENT.SETBLUEEMERGENTRATE:
f1 = GetFloatFromStack();
case STATEMENT.SETREDEMERGENTRATE:
f1 = GetFloatFromStack();
case STATEMENT.SETPICKUPTYPE:
s1 = GetStringFromStack(); //type
i1 = GetIntFromStack(); //UID
case STATEMENT.SETDOPPELBEHAVIOR:
s1 = GetStringFromStack(); //behavior
i1 = GetIntFromStack(); //UID
case STATEMENT.SETDOPPELHOMECELL:
i3 = GetIntFromStack(); //Y
i2 = GetIntFromStack(); //X
i1 = GetIntFromStack(); //UID
case STATEMENT.CREATEPARTICLE:
i2 = GetIntFromStack(); //enemy
i1 = GetIntFromStack(); //particle type (1=Triangle, 2=Square, 3-Free)
f4 = GetFloatFromStack(); //Speed
f3 = GetFloatFromStack(); //direction in rad
f2 = GetFloatFromStack(); //y
f1 = GetFloatFromStack(); //x
case STATEMENT.PARTICLEEXISTS:
i1 = GetIntFromStack(); //Particle UID
case STATEMENT.GETOWNEDPARTICLECOUNT:
i1 = GetIntFromStack(); //uid
case STATEMENT.CREATEBOND:
f1 = GetFloatFromStack(); //Bond distance
i3 = GetIntFromStack(); //Show
i2 = GetIntFromStack(); //Particle 2 UID
i1 = GetIntFromStack(); //Particle 1 UID
stack.Push(new Data(b.UID));
stack.Push(new Data(-1));
case STATEMENT.BONDEXISTS:
i1 = GetIntFromStack(); //Bond UID
stack.Push(new Data(1));
stack.Push(new Data(0));
case STATEMENT.GETPARTICLESINRANGE:
i5 = GetIntFromStack(); //enemy
i4 = GetIntFromStack(); //square
i3 = GetIntFromStack(); //range
i2 = GetIntFromStack(); //y
i1 = GetIntFromStack(); //x
stack.Push(new Data(results));
case STATEMENT.GETPARTICLESINRADIUS:
i5 = GetIntFromStack(); //enemy
i4 = GetIntFromStack(); //square
i3 = GetIntFromStack(); //range
i2 = GetIntFromStack(); //y
i1 = GetIntFromStack(); //x
stack.Push(new Data(results));
case STATEMENT.GETPARTICLECOUNTINRADIUS:
i5 = GetIntFromStack(); //enemy
i4 = GetIntFromStack(); //square
i3 = GetIntFromStack(); //range
i2 = GetIntFromStack(); //y
i1 = GetIntFromStack(); //x
stack.Push(new Data(c));
case STATEMENT.GETPARTICLEPOSITION:
i1 = GetIntFromStack(); //Particle UID
stack.Push(new Data(p.position.x));
stack.Push(new Data(p.position.y));
} else {
stack.Push(new Data(-1));
stack.Push(new Data(-1));
case STATEMENT.SETPARTICLEPOSITION:
f2 = GetFloatFromStack(); //y
f1 = GetFloatFromStack(); //x
i1 = GetIntFromStack(); //Particle UID
case STATEMENT.TELEPORTPARTICLE:
i3 = GetIntFromStack(); //breakbonds
i2 = GetIntFromStack(); //wholechain
f2 = GetFloatFromStack(); //py
f1 = GetFloatFromStack(); //px
i1 = GetIntFromStack(); //Particle UID
case STATEMENT.FINDPARTICLETARGET:
f3 = GetFloatFromStack(); //followEmitterProbability
f2 = GetFloatFromStack(); //followShipProbability
f1 = GetFloatFromStack(); //followTargetProbability
i1 = GetIntFromStack(); //Particle UID
case STATEMENT.GETPARTICLEMAXSPEED:
i1 = GetIntFromStack(); //Particle UID
stack.Push(new Data(p.MAX_DELTA));
stack.Push(new Data(0));
case STATEMENT.SETPARTICLEMAXSPEED:
f1 = GetFloatFromStack(); //max speed
i1 = GetIntFromStack(); //Particle UID
case STATEMENT.GETPARTICLEMAXAGE:
i1 = GetIntFromStack(); //Particle UID
stack.Push(new Data(p.maxAge));
} else {
stack.Push(new Data(0));
case STATEMENT.SETPARTICLEMAXAGE:
i2 = GetIntFromStack(); //max age in frames
i1 = GetIntFromStack(); //Particle UID
case STATEMENT.GETPARTICLEMAXDISTANCE:
i1 = GetIntFromStack(); //Particle UID
stack.Push(new Data(p.terminationDistance));
} else {
stack.Push(new Data(0));
case STATEMENT.GETPARTICLEHEALTH:
i1 = GetIntFromStack(); //Particle UID
stack.Push(new Data(p.health));
} else {
stack.Push(new Data(0));
case STATEMENT.SETPARTICLEMAXDISTANCE:
f1 = GetFloatFromStack(); //max distance from owner before destruction
i1 = GetIntFromStack(); //Particle UID
case STATEMENT.SETPARTICLEHEALTH:
f1 = GetFloatFromStack(); //health
i1 = GetIntFromStack(); //Particle UID
case STATEMENT.GETPARTICLEMASS:
i1 = GetIntFromStack(); //Particle UID
stack.Push(new Data(p.mass));
} else {
stack.Push(new Data(0));
case STATEMENT.SETPARTICLEMASS:
f1 = GetFloatFromStack(); //mass
i1 = GetIntFromStack(); //Particle UID
case STATEMENT.GETPARTICLEDRAG:
i1 = GetIntFromStack(); //Particle UID
stack.Push(new Data(p.dragAmt));
} else {
stack.Push(new Data(0));
case STATEMENT.SETPARTICLEDRAG:
f1 = GetFloatFromStack(); //mass
i1 = GetIntFromStack(); //Particle UID
case STATEMENT.SETPARTICLEIMMEDIATEFORCE:
f2 = GetFloatFromStack(); //force
f1 = GetFloatFromStack(); //direction in radians
i1 = GetIntFromStack(); //Particle UID
case STATEMENT.GETPARTICLETARGET:
i1 = GetIntFromStack(); //Particle UID
stack.Push(new Data(p.GetTargetObjectUID()));
} else {
stack.Push(new Data(0));
case STATEMENT.SETPARTICLETARGET:
i2 = GetIntFromStack(); //Target Object UID
i1 = GetIntFromStack(); //Particle UID
case STATEMENT.GETPARTICLETARGETATTRACTIONINTERVAL:
i1 = GetIntFromStack(); //Particle UID
stack.Push(new Data(p.targetObjectPullInterval));
stack.Push(new Data(0));
case STATEMENT.SETPARTICLETARGETATTRACTIONINTERVAL:
i2 = GetIntFromStack(); //Attraction interval in frames
i1 = GetIntFromStack(); //Particle UID
case STATEMENT.GETPARTICLETARGETATTRACTIONFORCE:
i1 = GetIntFromStack(); //Particle UID
stack.Push(new Data(p.targetObjectAttractionForce));
} else {
stack.Push(new Data(0));
case STATEMENT.SETPARTICLETARGETATTRACTIONFORCE:
f1 = GetFloatFromStack(); //Attraction force
i1 = GetIntFromStack(); //Particle UID
case STATEMENT.GETPARTICLESAMEINTERACTION:
i1 = GetIntFromStack(); //Particle UID
//Boolean is flipped in meaning between crpl and the particle variable's meaning
stack.Push(new Data(p.homoInteractionIgnore ? 0 : 1));
stack.Push(new Data(0));
case STATEMENT.GETPARTICLEMOTION:
i1 = GetIntFromStack(); //Particle UID
stack.Push(new Data(td.y));
stack.Push(new Data(td.x));
case STATEMENT.GETPARTICLEHASTELEPORTED:
i1 = GetIntFromStack(); //Particle UID
stack.Push(new Data(p.teleported ? 1 : 0));
case STATEMENT.SETPARTICLEMOTION:
f2 = GetFloatFromStack(); //deltay
f1 = GetFloatFromStack(); //deltaX
i1 = GetIntFromStack(); //Particle UID
case STATEMENT.SETPARTICLESAMEINTERACTION:
i2 = GetIntFromStack(); //Same interaction
i1 = GetIntFromStack(); //Particle UID
//Boolean is flipped in meaning between crpl and the particle variable's meaning
case STATEMENT.GETPARTICLEDESTROYATEDGE:
i1 = GetIntFromStack(); //Particle UID
stack.Push(new Data(p.destroyAtEdge ? 1 : 0));
case STATEMENT.SETPARTICLEDESTROYATEDGE:
i2 = GetIntFromStack(); //Destroy at edge bool
case STATEMENT.GETPARTICLEFORCEPARAMS:
i1 = GetIntFromStack(); //Particle UID
stack.Push(new Data((int)p.oscillationType));
stack.Push(new Data(p.oscillationForceMin));
stack.Push(new Data(p.oscillationForceMax));
stack.Push(new Data(p.oscillationTime));
stack.Push(new Data(p.oscillationPhase));
stack.Push(new Data((int)p.oscillationDirectionType));
stack.Push(new Data(p.oscillationDirectionMinAngle));
stack.Push(new Data(p.oscillationDirectionMaxAngle));
stack.Push(new Data(p.oscillationDirectionTime));
stack.Push(new Data(p.oscillationDirectionPhase));
} else {
stack.Push(new Data(0));
stack.Push(new Data(0));
stack.Push(new Data(0));
stack.Push(new Data(0));
stack.Push(new Data(0));
stack.Push(new Data(0));
stack.Push(new Data(0));
stack.Push(new Data(0));
stack.Push(new Data(0));
stack.Push(new Data(0));
case STATEMENT.SETPARTICLEFORCEPARAMS:
f6 = GetFloatFromStack(); //Oscillation direction phase
i5 = GetIntFromStack(); //Oscillation direction time
f5 = GetFloatFromStack(); //Oscillation direction max angle
f4 = GetFloatFromStack(); //Oscillation direction min angle
i4 = GetIntFromStack(); //Oscillation direction waveform Type
f3 = GetFloatFromStack(); //Oscillation phase
i3 = GetIntFromStack(); //Oscillation time
f2 = GetFloatFromStack(); //Oscillation max force
f1 = GetFloatFromStack(); //Oscillation min force
i2 = GetIntFromStack(); //Oscillation force waveform Type
i1 = GetIntFromStack(); //Particle UID
case STATEMENT.SETPARTICLEFORCESPEEDLIMIT:
f1 = GetFloatFromStack(); // Speed limit
i1 = GetIntFromStack(); // Particle
case STATEMENT.SETPARTICLEINTERACTDELAY:
i2 = GetIntFromStack(); //Delay
i1 = GetIntFromStack(); //Particle
case STATEMENT.GETPARTICLEINTERACTDELAY:
i1 = GetIntFromStack(); //Particle
stack.Push(new Data(p.interactWithSiblingsDelay));
case STATEMENT.SETPARTICLEFORCEDIRECTIONRELATIVEPARTICLE:
i2 = GetIntFromStack(); //The relative particle
i1 = GetIntFromStack(); //Particle to releative particle of
case STATEMENT.SETPARTICLERETURNWHENRECALLED:
i2 = GetIntFromStack(); //Bool on whether it should return when recalled by owner
i1 = GetIntFromStack(); //Particle UID
case STATEMENT.SETUNITRECALLCHILDPARTICLES:
i2 = GetIntFromStack(); //Bool on whether it should recall child particles
i1 = GetIntFromStack(); //Unit UID
case STATEMENT.GETBONDMOVEMENTPARAMS:
i1 = GetIntFromStack(); //Bond UID
stack.Push(new Data((int)bond.movementType));
stack.Push(new Data((int)bond.movementBondMinDistance));
stack.Push(new Data((int)bond.movementBondMaxDistance));
stack.Push(new Data((int)bond.movementTime));
stack.Push(new Data((int)bond.movementPhase));
} else {
stack.Push(new Data(0));
stack.Push(new Data(0));
stack.Push(new Data(0));
stack.Push(new Data(0));
stack.Push(new Data(0));
case STATEMENT.SETBONDMOVEMENTPARAMS:
f3 = GetFloatFromStack(); // phase
i3 = GetIntFromStack(); // time
f2 = GetFloatFromStack(); // max length
f1 = GetFloatFromStack(); // min length
i2 = GetIntFromStack(); //Signal waveform Type
i1 = GetIntFromStack(); //Bond UID
case STATEMENT.GETBONDLENGTH:
i1 = GetIntFromStack(); //Bond UID
stack.Push(new Data(bond.BOND_DISTANCE));
case STATEMENT.SETBONDLENGTH:
f1 = GetFloatFromStack(); //Length
i1 = GetIntFromStack(); //Bond UID
case STATEMENT.GETALLCONNECTEDPARTICLES:
i1 = GetIntFromStack();
stack.Push(new Data(rp.UID));
stack.Push(new Data(results.Count));
} else {
stack.Push(new Data(0));
case STATEMENT.GETALLCONNECTEDPARTICLECOUNT:
i1 = GetIntFromStack();
stack.Push(new Data(results.Count));
} else {
stack.Push(new Data(0));
case STATEMENT.GETALLCONNECTEDBONDS:
i1 = GetIntFromStack();
stack.Push(new Data(b.UID));
stack.Push(new Data(results.Count));
} else {
stack.Push(new Data(0));
case STATEMENT.GETALLCONNECTEDBONDCOUNT:
i1 = GetIntFromStack(); {
stack.Push(new Data(results.Count));
} else {
stack.Push(new Data(0));
case STATEMENT.GETNEARESTTARGET:
i8 = GetIntFromStack(); //onlyEnemyShip
i7 = GetIntFromStack(); //excludeVirtual
i6 = GetIntFromStack(); //excludeNormal
i5 = GetIntFromStack(); // bool for find untargeted particle
i4 = GetIntFromStack(); // bool for enemy
i3 = GetIntFromStack(); // range in cells
i2 = GetIntFromStack(); // cell y
i1 = GetIntFromStack(); // cell x
stack.Push(new Data(pb.UID));
} else {
stack.Push(new Data(-1));
case STATEMENT.DAMAGEPARTICLE:
f1 = GetFloatFromStack();
i1 = GetIntFromStack();
case STATEMENT.ISEMERGENT:
i1 = GetIntFromStack();
stack.Push(new Data(p != null ? 1 : 0));
case STATEMENT.ISHULL:
i1 = GetIntFromStack();
stack.Push(new Data(p != null ? 1 : 0));
case STATEMENT.ISPARTICLE:
i1 = GetIntFromStack();
stack.Push(new Data(p != null ? 1 : 0));
case STATEMENT.CLEARALLFIELDS:
case STATEMENT.SETFIELDCELL:
f2 = GetFloatFromStack(); //force y
f1 = GetFloatFromStack(); //force x
i2 = GetIntFromStack(); //y
i1 = GetIntFromStack(); //x
case STATEMENT.ISHQPRESENT:
stack.Push(new Data(GameSpace.instance.headquartersShips.Count == 0 ? 0 : 1));
case STATEMENT.GETHQS:
results.Add(new Data(cm.UID));
stack.Push(new Data(results));
case STATEMENT.GETLAND:
i2 = GetIntFromStack(); //y
i1 = GetIntFromStack(); //x
stack.Push(new Data(Land.instance.GetLand(i1, i2)));
case STATEMENT.SETLAND:
i3 = GetIntFromStack(); //land
i2 = GetIntFromStack(); //y
i1 = GetIntFromStack(); //x
case STATEMENT.SETLANDBULK:
i5 = GetIntFromStack(); //square
i4 = GetIntFromStack(); //range
i3 = GetIntFromStack(); //land
i2 = GetIntFromStack(); //y
i1 = GetIntFromStack(); //x
case STATEMENT.GETMIRE:
i2 = GetIntFromStack(); //y
i1 = GetIntFromStack(); //x
stack.Push(new Data(Land.instance.GetCovered(i1, i2)));
case STATEMENT.SETMIRE:
i3 = GetIntFromStack(); //-1,0,1
i2 = GetIntFromStack(); //y
i1 = GetIntFromStack(); //x
case STATEMENT.MIRELAND:
i3 = GetIntFromStack(); //enemy
i2 = GetIntFromStack(); //y
i1 = GetIntFromStack(); //x
case STATEMENT.GROWSTRUC:
i3 = GetIntFromStack(); //enemy
i2 = GetIntFromStack(); //y
i1 = GetIntFromStack(); //x
stack.Push(new Data(i4)); //0 for didn't do anything,
//1 for normal struc,
//2 for armor.
//That is whether it is built or destroyed the enemy type.
case STATEMENT.SETEMITTERPARTICLETYPE:
i2 = GetIntFromStack(); // 0 =ParticleType.FREE , 1 =ParticleType.TRIANGLE, else ParticleType.SQUARE;
i1 = GetIntFromStack(); // particle UID
case STATEMENT.SETEMITTERPRODUCTIONINTERVAL:
i2 = GetIntFromStack();
i1 = GetIntFromStack();
case STATEMENT.SETEMITTERMAXPARTICLES:
i2 = GetIntFromStack(); // MAX_PARTICLE_COUNT
i1 = GetIntFromStack(); // UID
case STATEMENT.SETEMITTERMAXTIME:
i2 = GetIntFromStack(); // Time
i1 = GetIntFromStack(); // UID
case STATEMENT.SETEMITTERMAXDISTANCE:
i2 = GetIntFromStack(); // Distance
i1 = GetIntFromStack(); // UID
case STATEMENT.SETEMITTERMAXPARTICLESPEED:
f1 = GetFloatFromStack(); // Speed
i1 = GetIntFromStack(); // UID
case STATEMENT.SETEMITTERPARTICLEHEALTH:
f1 = GetFloatFromStack(); // particleHealth
i1 = GetIntFromStack(); //UID
case STATEMENT.SETEMITTERTARGETPROBABILITY:
i2 = GetIntFromStack(); // UID
i1 = GetIntFromStack(); // targetProbability
case STATEMENT.SETEMITTEREMITTERTARGETPROBABILITY:
i2 = GetIntFromStack(); // emitterTargetProbability
i1 = GetIntFromStack(); // UID
\
case STATEMENT.SETEMITTERRECALLRANGE:
i2 = GetIntFromStack(); // recallRange
i1 = GetIntFromStack(); // UID
case STATEMENT.SETEMITTERDESTROYEATEDGE: // typo immortalized
case STATEMENT.SETEMITTERDESTROYATEDGE:
i2 = GetIntFromStack(); // bool
i1 = GetIntFromStack(); // UID
case STATEMENT.SETEMITTERENEMYPATTERN:
i2 = GetIntFromStack();
i1 = GetIntFromStack(); {
case STATEMENT.SETEMITTERBONDDISTANCE:
f1 = GetFloatFromStack();
i1 = GetIntFromStack(); {
case STATEMENT.SETEMITTERBONDSTIFFNESS:
f1 = GetFloatFromStack();
i1 = GetIntFromStack(); {
case STATEMENT.SETEMITTERMINCHAINLENGTH:
i2 = GetIntFromStack();
i1 = GetIntFromStack(); {
case STATEMENT.SETEMITTERMAXCHAINLENGTH:
i2 = GetIntFromStack();
i1 = GetIntFromStack(); {
case STATEMENT.SETEMITTERSHAPESIZE:
f1 = GetFloatFromStack();
i1 = GetIntFromStack(); {
case STATEMENT.GETEMITTERPARTICLETYPE:
i1 = GetIntFromStack(); {
tpti = 0; FREE
tpti = 1; TRIANGLE
tpti = 2; SQUARE
tpti = 3; ?? Round?
stack.Push(new Data(tpti));
} else {
stack.Push(new Data(0));
case STATEMENT.GETEMITTERPRODUCTIONINTERVAL:
i1 = GetIntFromStack(); {
stack.Push(new Data(productionInterval));
} else {
stack.Push(new Data(0));
case STATEMENT.GETEMITTERMAXPARTICLES:
i1 = GetIntFromStack(); {
stack.Push(new Data((MAX_PARTICLE_COUNT));
} else {
stack.Push(new Data(0));
case STATEMENT.GETEMITTERMAXTIME:
i1 = GetIntFromStack(); {
stack.Push(new Data(terminationTime));
} else {
stack.Push(new Data(0));
case STATEMENT.GETEMITTERMAXDISTANCE:
i1 = GetIntFromStack(); {
stack.Push(new Data(terminationDistance));
} else {
stack.Push(new Data(0));
case STATEMENT.GETEMITTERMAXPARTICLESPEED:
i1 = GetIntFromStack(); {
stack.Push(new Data(maxParticleSpeed));
} else {
stack.Push(new Data(0));
case STATEMENT.GETEMITTERPARTICLEHEALTH:
i1 = GetIntFromStack(); {
stack.Push(new Data((u as GravityWell).particleHealth));
} else {
stack.Push(new Data(0));
case STATEMENT.GETEMITTERTARGETPROBABILITY:
i1 = GetIntFromStack(); {
stack.Push(new Data((targetProbability));
} else {
stack.Push(new Data(0));
case STATEMENT.GETEMITTEREMITTERTARGETPROBABILITY:
i1 = GetIntFromStack(); {
stack.Push(new Data(emitterTargetProbability));
} else {
stack.Push(new Data(0));
case STATEMENT.GETEMITTERRECALLRANGE:
i1 = GetIntFromStack(); {
stack.Push(new Data(recallRange));
} else {
stack.Push(new Data(0));
case STATEMENT.GETEMITTERDESTROYEATEDGE: // typo immortalized
case STATEMENT.GETEMITTERDESTROYATEDGE:
i1 = GetIntFromStack(); {
stack.Push(new Data(destroyAtEdge ? 1 : 0));
} else {
stack.Push(new Data(0));
case STATEMENT.GETEMITTERENEMYPATTERN:
i1 = GetIntFromStack(); {
stack.Push(new Data((int)(enemyPattern)); // 0=SINGLE
// 1=CHAIN
// 2=BOX
// 3=CENTI
// 4=BAR
// 5=WHEEL
case STATEMENT.GETEMITTERBONDDISTANCE:
i1 = GetIntFromStack(); {
stack.Push(new Data((BOND_DISTANCE));
} else {
stack.Push(new Data(0));
case STATEMENT.GETEMITTERBONDSTIFFNESS:
i1 = GetIntFromStack(); {
stack.Push(new Data(BOND_STIFFNESS));
} else {
stack.Push(new Data(0));
case STATEMENT.GETEMITTERMINCHAINLENGTH:
i1 = GetIntFromStack(); {
stack.Push(new Data(minChainLength));
} else {
stack.Push(new Data(0));
case STATEMENT.GETEMITTERMAXCHAINLENGTH:
i1 = GetIntFromStack(); {
stack.Push(new Data(maxChainLength));
} else {
case STATEMENT.GETEMITTERSHAPESIZE:
i1 = GetIntFromStack(); {
stack.Push(new Data(SHAPE_SIZE));
} else {
stack.Push(new Data(0));
case STATEMENT.SETENERGYSOURCERATE:
f1 = GetFloatFromStack();
i1 = GetIntFromStack(); {
case STATEMENT.SETENERGYSOURCERANGE:
i2 = GetIntFromStack();
i1 = GetIntFromStack(); {
case STATEMENT.SETENERGYSOURCEGROWENEMYENERGYMINE:
i2 = GetIntFromStack(); //bool
i1 = GetIntFromStack(); {
case STATEMENT.GETENERGYSOURCERATE:
i1 = GetIntFromStack(); {
stack.Push(new Data((energyRate));
} else {
stack.Push(new Data(0));
case STATEMENT.GETENERGYSOURCERANGE:
i1 = GetIntFromStack(); {
stack.Push(new Data(range));
} else {
stack.Push(new Data(0));
case STATEMENT.GETENERGYSOURCEGROWENEMYENERGYMINE:
i1 = GetIntFromStack(); {
stack.Push(new Data(growEnemyEnergyMine ? 1 : 0));
// UnitAttribte list GET and SET calls for each of these Boolean or data, as may be the case.
For i1 = uid
LATHETARGETS latheCanTarget ? 1 : 0));
CREATEENERGYSOURCEWHENDESTROYED createEnergySourceWhenDestroyed ? 1 : 0));
CREATEAMPGEMWHENDESTROYED createAmpGemWhenDestroyed ? 1 : 0));
ISENEMY enemy ? 1 : 0));
GROWSTRUC growStruc ? 1 : 0));
CREATEFOOTPRINT createFootprint ? 1 : 0));
MISSIONGOAL isGoal ? 1 : 0));
CREATEFOOTPRINT createFootprint ? 1 : 0));
ISBUILDING isBuilding ? 1 : 0));
ISDESTROYED dead ? 1 : 0));
RECEIVESPACKETS) packReceiver 1 : 0));
HASHEALTHBAR healthBar l ? 1 : 0));
HASENERGYBAR energyBar != null ? 1 : 0));
PARTICLESDAMAGE particlesDamage ? 1 : 0));
SHIPHULLDAMAGES ignoreShipParticleCollisions? 0 : 1));
MIREDAMAGES mireDamage ? 1 : 0));
COORDX gameSpaceX));
COORDY gameSpaceY));
PIXELCOORDX coordX));
PIXELCOORDY coordY));
HEALTH health));
MAXHEALTH maxHealth));
ENERGY energyStore));
MAXENERGY MAX_ENERGY));
ENERGYPACKDELAY energyStorePackRequestRate));
MIREDAMAGEAMT MIRE_DAMAGE_AMT));
LATHEDAMAGEAMT LATHE_DAMAGE_AMT));
//
case STATEMENT.GETUNITLATHETARGETS:
case STATEMENT.SETUNITLATHETARGETS:
case STATEMENT.GETUNITCREATEENERGYSOURCEWHENDESTROYED:
case STATEMENT.SETUNITCREATEENERGYSOURCEWHENDESTROYED:
case STATEMENT.GETUNITISENEMY:
case STATEMENT.SETUNITISENEMY:
case STATEMENT.GETUNITGROWSTRUC:
case STATEMENT.SETUNITGROWSTRUC:
case STATEMENT.GETUNITCREATEAMPGEMWHENDESTROYED:
case STATEMENT.SETUNITCREATEAMPGEMWHENDESTROYED:
case STATEMENT.GETUNITCREATEFOOTPRINT:
case STATEMENT.SETUNITCREATEFOOTPRINT:
case STATEMENT.GETUNITMISSIONGOAL:
case STATEMENT.SETUNITMISSIONGOAL:
case STATEMENT.GETUNITTAKEMAPSPACE:
case STATEMENT.SETUNITTAKEMAPSPACE:
case STATEMENT.GETUNITISBUILDING:
case STATEMENT.SETUNITISBUILDING:
case STATEMENT.GETUNITCOORDX:
case STATEMENT.SETUNITCOORDX:
case STATEMENT.GETUNITCOORDY:
case STATEMENT.SETUNITCOORDY:
case STATEMENT.GETUNITPIXELCOORDX:
case STATEMENT.SETUNITPIXELCOORDX:
case STATEMENT.GETUNITPIXELCOORDY:
case STATEMENT.SETUNITPIXELCOORDY:
case STATEMENT.GETUNITRECEIVESPACKETS:
case STATEMENT.SETUNITRECEIVESPACKETS:
case STATEMENT.GETUNITHEALTH:
case STATEMENT.SETUNITHEALTH:
case STATEMENT.GETUNITMAXHEALTH:
case STATEMENT.SETUNITMAXHEALTH:
case STATEMENT.GETUNITENERGY:
case STATEMENT.SETUNITENERGY:
case STATEMENT.GETUNITMAXENERGY:
case STATEMENT.SETUNITMAXENERGY:
case STATEMENT.GETUNITHASHEALTHBAR:
case STATEMENT.SETUNITHASHEALTHBAR:
case STATEMENT.GETUNITHASENERGYBAR:
case STATEMENT.SETUNITHASENERGYBAR:
case STATEMENT.GETUNITENERGYPACKDELAY:
case STATEMENT.SETUNITENERGYPACKDELAY:
case STATEMENT.GETUNITPARTICLESDAMAGE:
case STATEMENT.SETUNITPARTICLESDAMAGE:
case STATEMENT.GETUNITSHIPHULLDAMAGES:
case STATEMENT.SETUNITSHIPHULLDAMAGES:
case STATEMENT.GETUNITMIREDAMAGES:
case STATEMENT.SETUNITMIREDAMAGES:
case STATEMENT.GETUNITMIREDAMAGEAMT:
case STATEMENT.SETUNITMIREDAMAGEAMT:
case STATEMENT.SETUNITLATHEDAMAGEAMT:
case STATEMENT.GETUNITLATHEDAMAGEAMT:
case STATEMENT.SETUNITCOORDS:
case STATEMENT.GETUNITCOORDS:
stack.Push(new Data(u.gameSpaceX));
stack.Push(new Data(u.gameSpaceY));
case STATEMENT.SETUNITPIXELCOORDS:
case STATEMENT.GETUNITPIXELCOORDS:
stack.Push(new Data(-1));
stack.Push(new Data(-1));
case STATEMENT.GETUNITISDESTROYED:
// ShipAttribte list GET and SET calls for each of these Boolean or data, as may be the case.
ISDESTROYED dead ? 1 : 0));
ISENEMY enemy ? 1 : 0));
ISCONNECTEDTOENERGYMINE IsConnectedToEnergyMine() ? 1 : 0));
HASAMP IsAmpGemInstalled() ? 1 : 0));
ROTATION eulerAngles.z*Mathf.Deg2Rad));
ROTATIONDEGREES eulerAngles.z));
COORDX cellX));
COORDY cellY));
PIXELCOORDX transform.position.x));
PIXELCOORDY transform.position.y));
HULLWIDTH shipPlan.GetHullWidth()));
HULLHEIGHT shipPlan.GetHullHeight()));
HULLSIZE shipPlan.totalHullCount));
HULLBUILT scannedHullCount - hullToBuildCount));
CMCOST BUILD_COST));
CMBUILTAMT builtAmt));
ENERGY energyStore));
ENERGYCAP ENERGYCAP));
THRUSTMULTIPLIER THRUST_MULTIPLIER));
//
case STATEMENT.GETSHIPISDESTROYED:
case STATEMENT.GETSHIPTHRUSTMULTIPLIER:
case STATEMENT.SETSHIPTHRUSTMULTIPLIER:
case STATEMENT.GETSHIPROTATION:
case STATEMENT.SETSHIPROTATION:
case STATEMENT.GETSHIPROTATIONDEGREES:
case STATEMENT.SETSHIPROTATIONDEGREES:
case STATEMENT.GETSHIPCOORDS:
stack.Push cellX));
stack.Push cellY));
case STATEMENT.SETSHIPCOORDS:
i3 = GetIntFromStack();
i2 = GetIntFromStack();
i1 = GetIntFromStack();
case STATEMENT.SETSHIPCOORDX:
case STATEMENT.GETSHIPCOORDX:
case STATEMENT.SETSHIPCOORDY:
case STATEMENT.GETSHIPCOORDY:
case STATEMENT.GETSHIPPIXELCOORDS:
stack.Push position.x));
stack.Push position.y));
case STATEMENT.SETSHIPPIXELCOORDS:
f2 = GetFloatFromStack();
f1 = GetFloatFromStack();
i1 = GetIntFromStack(); {
case STATEMENT.GETSHIPPIXELCOORDX:
case STATEMENT.SETSHIPPIXELCOORDX:
case STATEMENT.GETSHIPPIXELCOORDY:
case STATEMENT.SETSHIPPIXELCOORDY:
case STATEMENT.SETSHIPISENEMY:
case STATEMENT.GETSHIPISENEMY:
case STATEMENT.GETSHIPENERGY:
case STATEMENT.SETSHIPENERGY:
case STATEMENT.GETSHIPENERGYCAP:
case STATEMENT.SETSHIPENERGYCAP:
case STATEMENT.SETSHIPMODULESAMMO:
case STATEMENT.GETSHIPHULLSIZE:
case STATEMENT.GETSHIPHULLBUILT:
case STATEMENT.GETSHIPCMCOST:
case STATEMENT.GETSHIPCMBUILTAMT:
case STATEMENT.GETSHIPISCONNECTEDTOENERGYMINE:
case STATEMENT.GETSHIPHASAMP:
case STATEMENT.GETSHIPHULLWIDTH:
case STATEMENT.GETSHIPHULLHEIGHT: