Beispiel #1
0
    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);
    }
Beispiel #2
0
 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);
     }
 }
Beispiel #3
0
    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);
    }
Beispiel #4
0
    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);
    }
Beispiel #5
0
    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);
    }
Beispiel #6
0
    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);
    }
Beispiel #7
0
 public void HireMercenary(CombatUnitConfig mercConfig)
 {
     CreateMercenary(mercConfig);
 }