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: