public void hireCannon(Village v, GameObject cannonPrefab) { // Tile tileAt = v.getLocatedAt (); int vGold = v.getGold (); int vWood = v.getWood (); if (vGold >= 35 && vWood>=12) { if(v.getMyType() >= VillageType.Fort) { unitManager.initializeCannon(v,cannonPrefab); // initialize the cannon // cannon.networkView.RPC("initUnitNet", RPCMode.AllBuffered, (int)UnitType.CANNON, tileAt.gameObject.networkView.viewID, v.gameObject.networkView.viewID); // v.gameObject.networkView.RPC("addGoldNet", RPCMode.AllBuffered, -35); // v.gameObject.networkView.RPC("addWoodNet", RPCMode.AllBuffered, -12); // v.gameObject.networkView.RPC("addUnitNet", RPCMode.AllBuffered, cannon.networkView.viewID); } else { gameGUI.displayError(@"Please upgrade your village to a Fort first. ¯\(°_o)/¯"); } } else { gameGUI.displayError(@"Cannons cost 35 gold and 12 wood"); } }
public void plunderVillage(Village pluderingVillage, Village plunderedVillage, Tile dest) { Debug.Log ("in plunder village"); //determine amount to steal int wood = plunderedVillage.getWood (); int gold = plunderedVillage.getGold (); // remove from enemy village plunderedVillage.gameObject.networkView.RPC ("addGoldNet",RPCMode.AllBuffered,-gold); plunderedVillage.gameObject.networkView.RPC ("addWoodNet",RPCMode.AllBuffered,-wood); // add to yours pluderingVillage.gameObject.networkView.RPC ("addGoldNet",RPCMode.AllBuffered,gold); pluderingVillage.gameObject.networkView.RPC ("addWoodNet",RPCMode.AllBuffered,wood); //Destroy (dest.prefab); // destroy the village, create a meadow GameObject meadow = Network.Instantiate(meadowPrefab, new Vector3 (dest.point.x, 0, dest.point.y), meadowPrefab.transform.rotation,0) as GameObject; dest.gameObject.networkView.RPC ("switchTilePrefabNet",RPCMode.AllBuffered,meadow.networkView.viewID); // respawn enemy hovel happens during the split }
private void splitRegion(Tile splitTile, Village villageToSplit) { List<List<Tile>> lstRegions = new List<List<Tile>>(); int oldWood = villageToSplit.getWood (); int oldGold = villageToSplit.getGold (); Tile oldLocation = villageToSplit.getLocatedAt (); Player p = villageToSplit.getPlayer(); // prep for BFS foreach (Tile t in villageToSplit.getControlledRegion()) { t.setVisited(false); } // build connected regions foreach (Tile t in splitTile.getNeighbours()) { if (t.getVillage()==villageToSplit && !t.getVisited()){ List<Tile> newRegion = new List<Tile>(); t.setVisited(true); newRegion.Add (t); splitBFS (t,villageToSplit,newRegion); if (newRegion.Count<3){ Neutralize (newRegion); } else{ lstRegions.Add (newRegion); } } } print ("after the bfs"); if (lstRegions.Count <= 0) { Debug.Log ("Inside Regions <= 0"); oldLocation.gameObject.networkView.RPC ("setLandTypeNet",RPCMode.AllBuffered,(int)LandType.Meadow); GameObject meadow = Network.Instantiate (meadowPrefab, new Vector3 (oldLocation.point.x, 0, oldLocation.point.y), meadowPrefab.transform.rotation,0) as GameObject; villageToSplit.retireAllUnits(); Debug.Log ("after retire all units"); p.networkView.RPC ("removeVillageNet",RPCMode.AllBuffered,villageToSplit.networkView.viewID,p.getColor()); oldLocation.networkView.RPC ("replaceTilePrefabNet",RPCMode.AllBuffered,meadow.networkView.viewID); Debug.Log ("after lstRegions <= 0"); return; //stop here if no region is big enough } int splitWood = oldWood/lstRegions.Count; int splitGold = oldGold/lstRegions.Count; //create new villages foreach(List<Tile> region in lstRegions) { print ("creating new village"); Vector3 hovelLocation; Tile tileLocation; if (region.Contains (oldLocation)){ tileLocation = oldLocation; hovelLocation = new Vector3(tileLocation.point.x, 0.1f, tileLocation.point.y); } else { tileLocation = getTileForRespawn(region); hovelLocation = new Vector3(tileLocation.point.x, 0.1f, tileLocation.point.y); } GameObject newTown = Network.Instantiate(hovelPrefab, hovelLocation, hovelPrefab.transform.rotation, 0) as GameObject; Village v = newTown.GetComponent<Village>(); //tileLocation.replace (newTown); tileLocation.networkView.RPC ("switchTilePrefabNet",RPCMode.AllBuffered,newTown.networkView.viewID); v.addRegion (region); //adds T<>V and any U<>V // v.setLocation (tileLocation); v.gameObject.networkView.RPC ("setLocationNet",RPCMode.AllBuffered,tileLocation.networkView.viewID); // p.addVillage(v); p.gameObject.networkView.RPC ("addVillageNet",RPCMode.AllBuffered,v.networkView.viewID,p.getColor ()); // v.setControlledBy(p); GameManager GM = GameObject.Find ("preserveGM").GetComponent<GameManager>(); int playerIndex = GM.findPlayerIndex(p); v.gameObject.networkView.RPC ("setControlledByNet",RPCMode.AllBuffered,playerIndex); if (region.Contains (oldLocation)){ VillageType vType = villageToSplit.getMyType(); //v.setMyType(vType); v.gameObject.networkView.RPC ("setVillageTypeNet",RPCMode.AllBuffered,(int)vType); if (vType == VillageType.Hovel) { // newTown.transform.FindChild("Hovel").gameObject.SetActive (true); // newTown.transform.FindChild("Town").gameObject.SetActive (false); // newTown.transform.FindChild("Fort").gameObject.SetActive (false); // newTown.transform.FindChild("Castle").gameObject.SetActive (false); newTown.gameObject.networkView.RPC ("switchPrefabNet",RPCMode.AllBuffered,(int)vType); } else if (vType == VillageType.Town) { // newTown.transform.FindChild("Hovel").gameObject.SetActive (false); // newTown.transform.FindChild("Town").gameObject.SetActive (true); // newTown.transform.FindChild("Fort").gameObject.SetActive (false); // newTown.transform.FindChild("Castle").gameObject.SetActive (false); newTown.gameObject.networkView.RPC ("switchPrefabNet",RPCMode.AllBuffered,(int)vType); } else if (vType == VillageType.Fort) { // newTown.transform.FindChild("Hovel").gameObject.SetActive (false); // newTown.transform.FindChild("Town").gameObject.SetActive (false); // newTown.transform.FindChild("Fort").gameObject.SetActive (true); // newTown.transform.FindChild("Castle").gameObject.SetActive (false); newTown.gameObject.networkView.RPC ("switchPrefabNet",RPCMode.AllBuffered,(int)vType); } else if (vType == VillageType.Castle) { // newTown.transform.FindChild("Hovel").gameObject.SetActive (false); // newTown.transform.FindChild("Town").gameObject.SetActive (false); // newTown.transform.FindChild("Fort").gameObject.SetActive (false); // newTown.transform.FindChild("Castle").gameObject.SetActive (true); newTown.gameObject.networkView.RPC ("switchPrefabNet",RPCMode.AllBuffered,(int)vType); } } //v.addGold(splitGold); v.gameObject.networkView.RPC ("addGoldNet",RPCMode.AllBuffered,splitGold); // v.addWood(splitWood); v.gameObject.networkView.RPC ("addWoodNet",RPCMode.AllBuffered,splitWood); } Debug.Log ("villageToSplit: "+villageToSplit.getPlayer ().getName ()); p.networkView.RPC ("removeVillageNet", RPCMode.AllBuffered, villageToSplit.networkView.viewID, p.getColor ()); gameObject.networkView.RPC ("destroyVillageNet", RPCMode.AllBuffered, villageToSplit.networkView.viewID); GameManager GMA = GameObject.Find ("preserveGM").gameObject.GetComponent<GameManager>(); GMA.checkLoss (p); GMA.checkWin (); }
public void paymentPhase(Village v) { int totalWages = v.getTotalWages (); int villageGold = v.getGold (); if (villageGold >= totalWages) { //means have enough money to pay units villageGold = villageGold - totalWages; v.gameObject.networkView.RPC ("setGoldNet",RPCMode.AllBuffered,villageGold); } else { v.retireAllUnits(); } }
public void hireSoldier(Village v, GameObject unitPrefab) { // Tile tileAt = v.getLocatedAt (); int villageGold = v.getGold (); if (villageGold >= 30) { if(v.getMyType() >= VillageType.Town) { unitManager.initializeUnit(v,unitPrefab,UnitType.SOLDIER); // //Unit p = Unit.CreateComponent (UnitType.SOLDIER, tileAt, v, unitPrefab); // GameObject newSoldier = Network.Instantiate(unitPrefab, new Vector3(tileAt.point.x, 0.15f, tileAt.point.y), tileAt.transform.rotation, 0) as GameObject; // newSoldier.networkView.RPC("initUnitNet", RPCMode.AllBuffered, (int)UnitType.SOLDIER, tileAt.gameObject.networkView.viewID, v.gameObject.networkView.viewID); // // //p.gameObject.transform.FindChild("Peasant").gameObject.SetActive (false); // //p.gameObject.transform.FindChild("Infantry").gameObject.SetActive (false); // //p.gameObject.transform.FindChild("Soldier").gameObject.SetActive (true); // //p.gameObject.transform.FindChild("Knight").gameObject.SetActive (false); // // newSoldier.networkView.RPC ("setActiveNet", RPCMode.AllBuffered, "Soldier"); // //v.setGold (villageGold - THIRTY); // v.gameObject.networkView.RPC("addGoldNet", RPCMode.AllBuffered, -30); // //v.addUnit (p); // v.gameObject.networkView.RPC("addUnitNet", RPCMode.AllBuffered, newSoldier.networkView.viewID); } else { gameGUI.displayError(@"Please upgrade your village to a Town first. ¯\(°_o)/¯"); } } else { gameGUI.displayError(@"You can't afford a soldier. ¯\(°_o)/¯"); } }
public void hirePeasant(Village v,GameObject unitPrefab) { // Tile tileAt = v.getLocatedAt (); int villageGold = v.getGold (); if (villageGold >= 10) { unitManager.initializeUnit(v,unitPrefab,UnitType.PEASANT); } else { gameGUI.displayError (@"Wow you're broke, can't even afford a peasant? ¯\(°_o)/¯"); } }
public void hireKnight(Village v, GameObject unitPrefab) { // Tile tileAt = v.getLocatedAt (); int villageGold = v.getGold (); if (villageGold >= 40) { if(v.getMyType() == VillageType.Fort) { unitManager.initializeUnit(v,unitPrefab,UnitType.KNIGHT); // //Unit p = Unit.CreateComponent (UnitType.KNIGHT, tileAt, v, unitPrefab); // GameObject newKnight = Network.Instantiate(unitPrefab, new Vector3(tileAt.point.x, 0.15f, tileAt.point.y), tileAt.transform.rotation, 0) as GameObject; // newKnight.networkView.RPC("initUnitNet", RPCMode.AllBuffered, (int)UnitType.KNIGHT, tileAt.gameObject.networkView.viewID, v.gameObject.networkView.viewID); // // //p.gameObject.transform.FindChild("Peasant").gameObject.SetActive (false); // //p.gameObject.transform.FindChild("Infantry").gameObject.SetActive (false); // //p.gameObject.transform.FindChild("Soldier").gameObject.SetActive (false); // //p.gameObject.transform.FindChild("Knight").gameObject.SetActive (true); // newKnight.networkView.RPC ("setActiveNet", RPCMode.AllBuffered, "Knight"); // // //v.setGold (villageGold - FOURTY); // v.gameObject.networkView.RPC("addGoldNet", RPCMode.AllBuffered, -40); // // //v.addUnit (p); // v.gameObject.networkView.RPC("addUnitNet", RPCMode.AllBuffered, newKnight.networkView.viewID); } else { gameGUI.displayError (@"Please upgrade your village to a Fort first. ¯\(°_o)/¯"); } } else { gameGUI.displayError(@"You don't have enough gold for a knight. ¯\(°_o)/¯"); } }
public void hireInfantry(Village v,GameObject unitPrefab) { // Tile tileAt = v.getLocatedAt (); int villageGold = v.getGold (); if (villageGold >= 20) { // //Unit p = Unit.CreateComponent (UnitType.INFANTRY, tileAt, v, unitPrefab); // GameObject newInfantry = Network.Instantiate(unitPrefab, new Vector3(tileAt.point.x, 0.15f, tileAt.point.y), tileAt.transform.rotation, 0) as GameObject; // newInfantry.networkView.RPC("initUnitNet", RPCMode.AllBuffered, (int)UnitType.INFANTRY, tileAt.gameObject.networkView.viewID, v.gameObject.networkView.viewID); unitManager.initializeUnit(v,unitPrefab,UnitType.INFANTRY); //p.gameObject.transform.FindChild("Peasant").gameObject.SetActive (false); //p.gameObject.transform.FindChild("Infantry").gameObject.SetActive (true); //p.gameObject.transform.FindChild("Soldier").gameObject.SetActive (false); //p.gameObject.transform.FindChild("Knight").gameObject.SetActive (false); // newInfantry.networkView.RPC ("setActiveNet", RPCMode.AllBuffered, "Infantry"); // // //v.setGold (villageGold - TWENTY); // v.gameObject.networkView.RPC("addGoldNet", RPCMode.AllBuffered, -20); // // //v.addUnit (p); // v.gameObject.networkView.RPC("addUnitNet", RPCMode.AllBuffered, newInfantry.networkView.viewID); } else { gameGUI.displayError (@"You do not have enough gold to train infantry. ¯\(°_o)/¯"); } }