void OnGameBuildingPlaced(string buildingId, int playerNum, GameBuildingType type, Vector2 position) { if (PlayersManager.Instance.Me.Num == playerNum) { // notify other players when we place a building RPC.Instance.SendGameBuildingPlaced(buildingId, playerNum, type, position); } }
private void OnGameBuildingPlaced(string buildingId, int playerNum, GameBuildingType type, Vector2 position) { if (Data.Num == playerNum) { var buildingCost = Constants.BuildingCosts[type]; Data.Resources[buildingCost.Type1] -= buildingCost.Cost; if (buildingCost.Type2 != ResourceType.EXCEPTIION) { Data.Resources[buildingCost.Type2] -= buildingCost.Cost; } Signals.PublishPlayerUpdatedEvent(Data); } }
private void OnGameBuildingSelected(GameBuildingType type) { // hide the mouse because the building becomes our mouse Input.SetMouseMode(Input.MouseMode.Hidden); var scene = ResourceLoader.Load <PackedScene>(type.GetScenePath()); instancedScene = (GameBuilding)scene.Instance(); instancedScene.NewlySpawned = true; instancedScene.PlayerNum = PlayersManager.Instance.Me.Num; instancedScene.Type = type; AddChild(instancedScene); }
private void OnGameBuildingPlaced(string buildingId, int playerNum, GameBuildingType type, Vector2 position) { var scene = ResourceLoader.Load <PackedScene>(type.GetScenePath()); GameBuilding building = (GameBuilding)scene.Instance(); building.PlayerNum = playerNum; building.Position = position; building.BuildingId = buildingId; building.Active = true; AddChild(building); PlayersManager.Instance.GetPlayer(playerNum).AddScore(ScoreType.BuildingBuilt); }
public static String GetName(this GameBuildingType type) { switch (type) { case GameBuildingType.PowerPlant: return("Power Plant"); case GameBuildingType.ScienceLab: return("Science Lab"); default: return(type.ToString()); } }
/// <summary> /// Check if this player can afford a building /// </summary> /// <param name="type"></param> /// <returns></returns> public bool CanAffordBuilding(GameBuildingType type) { var buildingCost = Constants.BuildingCosts[type]; // if we can't afford building type one, return false if (Resources[buildingCost.Type1] < buildingCost.Cost) { return(false); } // if we have a type2, check if we have enough resources if (buildingCost.Type2 != ResourceType.EXCEPTIION && Resources[buildingCost.Type2] < buildingCost.Cost) { return(false); } // we have enough of both types, return true because we can afford it return(true); }
public static void PublishGameBuildingSelectedEvent(GameBuildingType type) { GameBuildingSelectedEvent?.Invoke(type); }
public static void PublishGameBuildingPlacedEvent(string buildingId, int playerNum, GameBuildingType type, Vector2 position) { GameBuildingPlacedEvent?.Invoke(buildingId, playerNum, type, position); }
/// <summary> /// Return the path to a GameBuilding scene based on its type /// </summary> /// <param name="type"></param> /// <returns></returns> public static string GetScenePath(this GameBuildingType type) { var folder = type.IsDefenseBuilding() ? "DefenseBuildings" : "ResourceBuildings"; return($"res://src/GameObjects/{folder}/{type.ToString()}.tscn"); }
public static bool IsResourceBuilding(this GameBuildingType type) { return(type == GameBuildingType.Mine || type == GameBuildingType.PowerPlant || type == GameBuildingType.ScienceLab); }
public static bool IsDefenseBuilding(this GameBuildingType type) { return(type == GameBuildingType.Laser || type == GameBuildingType.Radar || type == GameBuildingType.Shield || type == GameBuildingType.Missile); }