//constructor public static Unit CreateComponent( UnitType unitType, Tile location, Village v, GameObject PeasantPrefab ) { Tile toplace = null; foreach (Tile a in location.getNeighbours()) { if(a.prefab == null && a.getOccupyingUnit() == null && a.getColor() == location.getColor()) { toplace = a; } } if(toplace == null) { toplace = location; } GameObject o = Instantiate(PeasantPrefab, new Vector3(toplace.point.x, 0.15f, toplace.point.y), toplace.transform.rotation) as GameObject; Unit theUnit = o.AddComponent<Unit>(); theUnit.locatedAt = toplace; theUnit.myType = unitType; theUnit.myVillage = v; theUnit.myAction = UnitActionType.ReadyForOrders; location.setOccupyingUnit (theUnit); return theUnit; }
void initUnitNet(int unitTypeID, NetworkViewID locationTileID, NetworkViewID villageID) { //Getting all the parameters UnitType unitType = (UnitType)unitTypeID; Tile location = NetworkView.Find (locationTileID).gameObject.GetComponent<Tile>(); Village v = NetworkView.Find (villageID).gameObject.GetComponent<Village>(); //CreateComponent Tile toplace = null; foreach (Tile a in location.getNeighbours()) { if(a.prefab == null && a.getOccupyingUnit() == null && a.getColor() == location.getColor()) { toplace = a; } } if(toplace == null) { toplace = location; } //BE CAREFUL!!! If the order of Tiles in neighbors are not the same, the position of the new unit will be different!! gameObject.transform.position = new Vector3(toplace.point.x, 0.15f, toplace.point.y); locatedAt = toplace; myType = unitType; myVillage = v; myAction = UnitActionType.ReadyForOrders; locatedAt.setOccupyingUnit (this); }