public HexUnit CreateMercenary(CombatUnitConfig combatUnitConfig, HexCell cell, Player player, int cityStateID = -1) { HexUnit hexUnit = Instantiate(combatUnitPrefab).GetComponent <HexUnit>(); CombatUnit combatUnit = hexUnit.GetComponent <CombatUnit>(); combatUnit.SetCombatUnitConfig(combatUnitConfig); hexUnit.UnitPrefabName = name; hexUnit.Grid = hexGrid; hexUnit.Location = cell; hexUnit.Orientation = Random.Range(0f, 360f); hexUnit.HexUnitType = HexUnit.UnitType.COMBAT; hexGrid.AddUnit(hexUnit); CityState cityState = cityStates.Find(c => c.CityStateID == cityStateID); if (cityState) { combatUnit.SetCityState(cityState); } if (player.IsHuman) { hexUnit.Controllable = true; } combatUnit.Mercenary = true; player.AddMercenary(combatUnit); return(hexUnit); }
public void SetCombatUnitConfig(CombatUnitConfig config) { combatUnitConfig = config; HexUnit.SetMeshChild(Instantiate(config.MeshChild, gameObject.transform).transform); HexVision.AddVisibleObject(HexUnit.GetMesh()); BaseMovement = config.BaseMovement; BaseStrength = config.BaseStrength; Symbol = config.Symbol; foreach (AbilityConfig abilityConfig in config.GetAbilityConfigs()) { abilities.AbilitiesList.Add(abilityConfig); } }
public bool CreateMercenary(CombatUnitConfig mercConfig) { List <HexCell> cells = PathFindingUtilities.GetCellsInRange(Location, 2); foreach (HexCell cell in cells) { if (cell.CanUnitMoveToCell(HexUnit.UnitType.AGENT)) { gameController.CreateMercenary(mercConfig, cell, Player); return(true); } } return(false); }
public HexUnit CreateCityStateUnit(CombatUnitConfig combatUnitConfig, HexCell cell, int cityStateID) { CityState cityState = cityStates.Find(c => c.CityStateID == cityStateID); HexUnit hexUnit = Instantiate(combatUnitPrefab).GetComponent <HexUnit>(); CombatUnit combatUnit = hexUnit.GetComponent <CombatUnit>(); combatUnit.SetCombatUnitConfig(combatUnitConfig); hexUnit.Grid = hexGrid; hexUnit.Location = cell; hexUnit.Orientation = Random.Range(0f, 360f); hexUnit.HexUnitType = HexUnit.UnitType.COMBAT; hexGrid.AddUnit(hexUnit); cityState.AddUnit(hexUnit.GetComponent <CombatUnit>()); return(hexUnit); }
public bool CreateUnit(CombatUnitConfig combatUnitConfig) { List <HexCell> cells = PathFindingUtilities.GetCellsInRange(hexCell, 2); foreach (HexCell cell in cells) { if (cell.CanUnitMoveToCell(HexUnit.UnitType.COMBAT)) { HexUnit hexUnit = gameController.CreateCityStateUnit(combatUnitConfig, cell, cityStateOwner.CityStateID); hexUnit.Location.UpdateVision(); cityStateOwner.UpdateVision(); return(true); } } return(false); }
public static CombatUnit Load(BinaryReader reader, GameController gameController, HexGrid grid, int header, int cityStateID) { HexCoordinates coordinates = HexCoordinates.Load(reader); float orientation = reader.ReadSingle(); string unitName = reader.ReadString(); string combatUnitConfig = "Swordsman"; if (header >= 4) { combatUnitConfig = reader.ReadString(); } HexUnit hexUnit = gameController.CreateCityStateUnit(combatUnitConfig, grid.GetCell(coordinates), cityStateID); CombatUnit combatUnit = hexUnit.GetComponent <CombatUnit>(); if (header >= 3) { combatUnit.HitPoints = reader.ReadInt32(); combatUnit.SetMovementLeft(reader.ReadInt32()); } return(combatUnit); }
public void HireMercenary(CombatUnitConfig mercConfig) { CreateMercenary(mercConfig); }