IEnumerator initMoveTroopsAction(Base b, int numTroops) { WWWForm wwwform = new WWWForm(); wwwform.AddField("username", b.username); wwwform.AddField("baseId1", GenerateWorld.instance.lastBase.baseId); wwwform.AddField("baseId2", b.baseId); wwwform.AddField("numTroops", numTroops); WWW request = new WWW("localhost:8080/myapp/world/troops/startMove", wwwform); yield return(request); if (request.text.Equals("")) { Debug.Log("Move troops action invalid"); } else { MoveTroopsCommand mtc = JsonMapper.ToObject <MoveTroopsCommand>(request.text); mtc.portal.gameObject.GetComponent <Renderer>().material = PortalHandler.instance.portalBuildingMaterial; if (mtc.portal.base1.baseId == b.baseId) { mtc.troopsToMove *= -1; } mtc.portal.troopsToMove += mtc.troopsToMove; MoveTroopsAction a = new MoveTroopsAction(b.username, mtc.portalId); moveTroopsActions.Add(a); } }
IEnumerator finishMoveTroops(MoveTroopsAction a) { WWWForm wwwform = new WWWForm(); wwwform.AddField("username", a.username); wwwform.AddField("portalId", a.p.portalId); WWW request = new WWW("localhost:8080/myapp/world/troops/finishMove", wwwform); yield return(request); if (request.text.Equals("")) { Debug.Log("Finish move troops failed"); } else { // Display finish message GenerateWorld.instance.message.text = request.text; } }
IEnumerator restartMoveTroopsActions() { WWWForm wwwform = new WWWForm(); wwwform.AddField("username", Globals.username); WWW request = new WWW("localhost:8080/myapp/world/troops/restartMove", wwwform); yield return(request); MoveTroopsCommand[] mtcs = JsonMapper.ToObject <MoveTroopsCommand[]>(request.text); foreach (MoveTroopsCommand mtc in mtcs) { // need to do this so we get the portal that belongs to the portalObj mtc.portal.troopsToMove += mtc.troopsToMove; mtc.portal.gameObject.GetComponent <Renderer>().material = PortalHandler.instance.portalBuildingMaterial; MoveTroopsAction a = new MoveTroopsAction(Globals.username, mtc.portal.portalId); // Update values based on Time.DeltaTime a.overflowTroopsMoved += ((CurrentTime.currentTimeMillis() - mtc.portal.lastMoveUpdate) / 1000) * mtc.portal.flowRate; int wholeUnitsMoved = (int)Mathf.Floor(a.overflowTroopsMoved); if (wholeUnitsMoved > Mathf.Abs(mtc.portal.troopsToMove)) { wholeUnitsMoved = Mathf.Abs(mtc.portal.troopsToMove); } if (wholeUnitsMoved > 0) { if (mtc.portal.troopsToMove < 0) { wholeUnitsMoved *= -1; } // Update base text wrappers a.p.base1.units -= wholeUnitsMoved; a.p.base2.units += wholeUnitsMoved; a.overflowTroopsMoved -= Mathf.Abs(wholeUnitsMoved); mtc.portal.troopsToMove -= wholeUnitsMoved; } moveTroopsActions.Add(a); } }