public void RemoveFromSquare(Vector2 square, TemporaryBuilding building) { if (squares.ContainsKey(square)) { squares[square].Remove(building); } }
public JobBuild(TemporaryBuilding building, int playerId) { this.building = building; buildingPos = building.transform.position; buildingCollider = building.GetComponent <Collider>(); this.playerId = playerId; }
public void AddToSquare(Vector2 square, TemporaryBuilding building) { if (squares.ContainsKey(square)) { squares[square].Add(building); } }
private void CmdPlaceBuilding(Vector3 position, NetworkInstanceId tempBuildingId) { TemporaryBuilding temporaryBuilding = NetworkServer.objects[tempBuildingId].GetComponent <TemporaryBuilding>(); temporaryBuilding.transform.position = position; temporaryBuilding.placed = true; GameState.Instance.RpcPlaceBuilding(position, tempBuildingId); }
/// <summary> /// Sets the new building to be placed. If there already is one, resets the old one's purchase. /// </summary> /// <param name="building">the new building to build</param> public void SetTempBuilding(TemporaryBuilding building) { if (BuildingToBuild != null) { ResetBuildingToBuild(); } BuildingToBuild = building; }
/// <summary> /// Place the building on its current position and tells the selected object to build it. /// </summary> public void PlaceBuilding() { player.PlaceBuilding(BuildingToBuild); if (SelectedObject != null) { SelectedObject.SetGoal(BuildingToBuild); } BuildingToBuild = null; }
public void Remove(TemporaryBuilding building) { if (building.hasAuthority && building.playerId == playerId) { FriendlyTemporaryBuildings.Remove(building); } else { EnemyTemporaryBuildings.Remove(building); } }
/// <summary> /// Places building onto its current position and makes it visible for all clients. /// </summary> /// <param name="temporaryBuilding"></param> public void PlaceBuilding(TemporaryBuilding temporaryBuilding) => CmdPlaceBuilding(temporaryBuilding.transform.position, temporaryBuilding.netId);
/// <summary> /// Get the nearest temporary building to the given position in the given range, which is not a given building. /// </summary> /// <param name="build">building to be excluded from the list</param> /// <param name="position">center of the search</param> /// <param name="maxDistance">maximum radius</param> /// <returns></returns> public TemporaryBuilding GetNearestTempBuilding(TemporaryBuilding build, Vector3 position, int maxDistance) => temporaryBuildings.Where(b => b != build && Vector3.Distance(position, b.transform.position) < maxDistance). OrderBy(b => Vector3.Distance(position, b.transform.position)).FirstOrDefault();
/// <summary> /// Resets the building's purchase by returning paid resources and destroying the object. /// </summary> public void ResetBuildingToBuild() { playerPurchases.Get(BuildingToBuild.buildingType).Reset(); player.DestroySelectedObject(BuildingToBuild); BuildingToBuild = null; }
public void RemoveFromSquare(Vector2 squareId, TemporaryBuilding selectable) => ForEachSquare(s => s.RemoveFromSquare(squareId, selectable));