Esempio n. 1
0
    public static BattleResult ResolveBattle(UnitRank attacker, UnitRank defender)
    {
        //Assume attacker fails
        BattleResult result = BattleResult.Fail;

        if (defender == UnitRank.Flag)
        {
            //Handle flag
            result = BattleResult.Success;
        }
        else if (attacker == defender)
        {
            //Handle split, same rank
            result = BattleResult.Split;
        }
        else if (attacker == UnitRank.Spy || defender == UnitRank.Spy)
        {
            if (attacker == UnitRank.Spy && defender != UnitRank.Private)
            {
                //Handle attacker spy logic
                result = BattleResult.Success;
            }
            else if (defender == UnitRank.Spy && attacker == UnitRank.Private)
            {
                result = BattleResult.Success;
            }
        }
        else if (attacker > defender)
        {
            //Handle rank compare
            result = BattleResult.Success;
        }

        return result;
    }
Esempio n. 2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="UnitBase"/> class.
        /// </summary>
        /// <param name="row"></param>
        public UnitBase(DataRow row)
        {
            if (row == null)
            {
                throw new ArgumentNullException("row");
            }

            this.unitId           = Convert.ToInt32(row["UnitID"], CultureInfo.InvariantCulture);
            this.Name             = Convert.ToString(row["Name"], CultureInfo.InvariantCulture);
            this.bombardmentRange = Convert.ToInt32(row["BombardmentRange"], CultureInfo.InvariantCulture);
            this.bombardmentPower = Convert.ToInt32(row["Bombardment"], CultureInfo.InvariantCulture);
            this.canMergeWithCity = Convert.ToBoolean(row["CanMergeWithCity"], CultureInfo.InvariantCulture);
            this.canSettle        = Convert.ToBoolean(row["CanSettle"], CultureInfo.InvariantCulture);
            this.canWork          = Convert.ToBoolean(row["CanWork"], CultureInfo.InvariantCulture);
            this.Cost             = Convert.ToInt32(row["Cost"], CultureInfo.InvariantCulture);
            this.defense          = Convert.ToInt32(row["Defense"], CultureInfo.InvariantCulture);
            this.rank             = UnitRank.Conscript;
            this.type             = (UnitType)Enum.Parse(typeof(UnitType), row["Type"].ToString(), true);
            this.hitPoints        = this.MaxHitPoints;
            this.movesPerTurn     = Convert.ToInt32(row["Movement"], CultureInfo.InvariantCulture);
            this.movesLeft        = this.movesPerTurn;
            this.offensivePower   = Convert.ToInt32(row["Attack"], CultureInfo.InvariantCulture);
            this.populationPoints = Convert.ToInt32(row["PopulationPoints"], CultureInfo.InvariantCulture);
            this.rateOfFire       = Convert.ToInt32(row["RateOfFire"], CultureInfo.InvariantCulture);
            this.neededResources  = new NamedObjectCollection <Resource>();
        }
        /// <summary>
        /// Gets a string representation of the specified <see cref="McKnight.Similization.Core.UnitRank"/>
        /// </summary>
        /// <param name="rank"></param>
        /// <returns></returns>
        public static string GetRankString(UnitRank rank)
        {
            string rankString = string.Empty;

            switch (rank)
            {
            case UnitRank.Conscript:
                rankString = GetString(StringKey.RankConscript);
                break;

            case UnitRank.Elite:
                rankString = GetString(StringKey.RankElite);
                break;

            case UnitRank.Regular:
                rankString = GetString(StringKey.RankRegular);
                break;

            case UnitRank.Veteran:
                rankString = GetString(StringKey.RankVeteran);
                break;
            }

            return(rankString);
        }
Esempio n. 4
0
    public static BattleResult ResolveBattle(UnitRank attacker, UnitRank defender)
    {
        //Assume attacker fails
        BattleResult result = BattleResult.Fail;

        if (defender == UnitRank.Flag)
        {
            //Handle flag
            result = BattleResult.Success;
        }
        else if (attacker == defender)
        {
            //Handle split, same rank
            result = BattleResult.Split;
        }
        else if (attacker == UnitRank.Spy || defender == UnitRank.Spy)
        {
            if (attacker == UnitRank.Spy && defender != UnitRank.Private)
            {
                //Handle attacker spy logic
                result = BattleResult.Success;
            }
            else if (defender == UnitRank.Spy && attacker == UnitRank.Private)
            {
                result = BattleResult.Success;
            }
        }
        else if (attacker > defender)
        {
            //Handle rank compare
            result = BattleResult.Success;
        }

        return(result);
    }
Esempio n. 5
0
 public void SetRank(UnitRank rank)
 {
     this.rank = rank;
     //Initialize the values
     unitName.text = UnitUtilities.ReadableRank(rank);
     image.sprite = UnitImageManager.GetRankImage(rank);
     remaining.text = UnitManager.GetPlacementAmountForUnit(rank).ToString();
 }
Esempio n. 6
0
 public void SetRank(UnitRank rank)
 {
     this.rank = rank;
     //Initialize the values
     unitName.text  = UnitUtilities.ReadableRank(rank);
     image.sprite   = UnitImageManager.GetRankImage(rank);
     remaining.text = UnitManager.GetPlacementAmountForUnit(rank).ToString();
 }
Esempio n. 7
0
 private void HandleUnitPlaced(UnitPlacedEvent e)
 {
     //Check if the unit still can be placed. If not, we need to clear the selection.
     if (UnitManager.GetPlacementAmountForUnit(placementRank) <= 0)
     {
         placementRank = UnitRank.Unknown;
     }
 }
Esempio n. 8
0
        private void UpdateRankString(UnitRank rank)
        {
            var field     = rank.GetType().GetField(rank.ToString());
            var attribute = field.GetCustomAttribute <DescriptionAttribute>(false);

            RankView.Value = attribute != null ? attribute.Description : rank.ToString();

            IsShowRank.Value = rank != UnitRank.None ? Visibility.Visible : Visibility.Collapsed;
        }
Esempio n. 9
0
    public static string ReadableRank(UnitRank rank)
    {
        string readable = "Unknown";

        switch (rank)
        {
        case UnitRank.BrigadierGeneral:
        {
            readable = "Brigadier General";
            break;
        }

        case UnitRank.FirstLieutenant:
        {
            readable = "First Lieutenant";
            break;
        }

        case UnitRank.GeneralOfTheArmy:
        {
            readable = "General Of The Army";
            break;
        }

        case UnitRank.LieutenantColonel:
        {
            readable = "Lieutenant Colonel";
            break;
        }

        case UnitRank.LieutenantGeneral:
        {
            readable = "Lieutenant General";
            break;
        }

        case UnitRank.MajorGeneral:
        {
            readable = "Major General";
            break;
        }

        case UnitRank.SecondLieutenant:
        {
            readable = "Second Lieutenant";
            break;
        }

        default:
        {
            readable = rank.ToString();
            break;
        }
        }

        return(readable);
    }
Esempio n. 10
0
 public void UpgradeToRanged3()
 {
     new Unit(currentSize, 20, 7, 10, 6, UnitType.RANGED, UnitRank.RANGED3, "Ranged troop rk 3", positionInList);
     power       = 7;
     maxLife     = 12;
     damage      = 6;
     unitRank    = UnitRank.RANGED3;
     name        = "ranged troop rank 3";
     upgradeCost = 999;
 }
Esempio n. 11
0
 public void UpgradeToRanged2()
 {
     new Unit(currentSize, 20, 4, 10, 4, UnitType.RANGED, UnitRank.RANGED2, "Ranged troop rk 2", positionInList);
     power       = 4;
     maxLife     = 10;
     damage      = 4;
     unitRank    = UnitRank.RANGED2;
     name        = "ranged troop rank 2";
     upgradeCost = 4;
 }
Esempio n. 12
0
    //upgrades unit (called by ai ) TODO

    public void UpgradeToMelee1()
    {
        // Unit(int currentSize, int maxSize, int power, int maxLife, int damage, UnitType type, UnitRank rank, string name, int pos)
        // new Unit(currentSize, 20, 2, 10, 2, UnitType.MELEE, UnitRank.MELEE1, "Melee troop rk 1", positionInList);
        power       = 2;
        damage      = 2;
        unitRank    = UnitRank.MELEE1;
        name        = "Melee troop rank 1";
        upgradeCost = 3;
    }
Esempio n. 13
0
 public void UpgradeToMelee2()
 {
     new Unit(currentSize, 20, 4, 15, 3, UnitType.MELEE, UnitRank.MELEE2, "Melee troop rk 2", positionInList);
     power       = 4;
     maxLife     = 15;
     damage      = 3;
     unitRank    = UnitRank.MELEE2;
     name        = "Melee troop rank 2";
     upgradeCost = 4;
 }
Esempio n. 14
0
 public void UpgradeToMelee3()
 {
     new Unit(currentSize, 20, 6, 20, 4, UnitType.MELEE, UnitRank.MELEE3, "Melee troop rk 3", positionInList);
     power       = 6;
     maxLife     = 20;
     damage      = 4;
     maxSize     = 30;
     unitRank    = UnitRank.MELEE3;
     name        = "Melee troop rank 3";
     upgradeCost = 999;
 }
Esempio n. 15
0
 public void UpgradeToRanged1()
 {
     new Unit(currentSize, 20, 2, 8, 3, UnitType.RANGED, UnitRank.RANGED1, "Ranged troop rk 1", positionInList);
     power       = 2;
     maxLife     = 8;
     damage      = 3;
     unitRank    = UnitRank.RANGED1;
     unitType    = UnitType.RANGED;
     name        = "ranged troop rank 1";
     upgradeCost = 3;
 }
Esempio n. 16
0
 public void UpgradeToCavalry1()
 {
     new Unit(currentSize, 20, 7, 10, 6, UnitType.CAVALRY, UnitRank.CAVALRY1, "Cavalry troop rk 3", positionInList);
     power       = 10;
     maxLife     = 25;
     damage      = 6;
     unitRank    = UnitRank.CAVALRY1;
     unitType    = UnitType.CAVALRY;
     name        = "cavalry troop rank 1";
     upgradeCost = 999;
 }
Esempio n. 17
0
    public void AddPiece(BoardPosition position, UnitRank rank)
    {
        //Check for existing piece, remove it if needed.
        //Debug.Log("atteming to add " + UnitUtilities.ReadableRank(rank) + " at " + position.ToString());
        bool equal = false;

        if (pieces.ContainsKey(position))
        {
            UnitPiece existing;
            if (pieces.TryGetValue(position, out existing))
            {
                if (existing.Rank.Equals(rank))
                {
                    //We're not going to remove then add the same exact piece to the same position
                    equal = true;
                }
                else
                {
                    RemovePiece(position);
                }
            }
        }
        if (!equal)
        {
            Transform target = BoardManager.GetTransformForPosition(position);
            if (!EqualityComparer <Transform> .Default.Equals(target, default(Transform)))
            {
                GameObject plane = Instantiate(UnitPlane);
                UnitPiece  piece = GeneratePiece(rank, plane);
                if (piece.Owner != null)
                {
                    piece.Piece.transform.SetParent(piece.Owner.Holder.transform);
                    plane.name  = UnitUtilities.ReadableRank(rank);
                    plane.layer = LayerMask.NameToLayer("Pieces");
                    Vector3 planePos = target.position;
                    planePos.z = GOLayer.UNIT_LAYER;
                    plane.transform.position = planePos;
                    Renderer r = plane.GetComponent <Renderer>();
                    r.material = MaterialManager.GetRankMaterial(rank);
                    pieces.Add(position, piece);
                    EventManager.Raise(new UnitPlacedEvent(position, piece));
                }
                else
                {
                    piece.Destroy();
                    Destroy(plane);
                }
            }
        }
    }
Esempio n. 18
0
    public int GetPlacementAmountForUnit(UnitRank rank)
    {
        int amount = 0;

        if (GameManager.CurrentMode == GameMode.PlayerOneSetup)
        {
            playerOnePlacementUnits.TryGetValue(rank, out amount);
        }
        else if (GameManager.CurrentMode == GameMode.PlayerTwoSetup)
        {
            playerTwoPlacementUnits.TryGetValue(rank, out amount);
        }
        return(amount);
    }
Esempio n. 19
0
    public static string ReadableRank(UnitRank rank)
    {
        string readable = "Unknown";

        switch(rank)
        {
            case UnitRank.BrigadierGeneral:
                {
                    readable = "Brigadier General";
                    break;
                }
            case UnitRank.FirstLieutenant:
                {
                    readable = "First Lieutenant";
                    break;
                }
            case UnitRank.GeneralOfTheArmy:
                {
                    readable = "General Of The Army";
                    break;
                }
            case UnitRank.LieutenantColonel:
                {
                    readable = "Lieutenant Colonel";
                    break;
                }
            case UnitRank.LieutenantGeneral:
                {
                    readable = "Lieutenant General";
                    break;
                }
            case UnitRank.MajorGeneral:
                {
                    readable = "Major General";
                    break;
                }
            case UnitRank.SecondLieutenant:
                {
                    readable = "Second Lieutenant";
                    break;
                }
            default:
                {
                    readable = rank.ToString();
                    break;
                }
        }

        return readable;
    }
Esempio n. 20
0
    public void AddPiece(BoardPosition position, UnitRank rank)
    {
        //Check for existing piece, remove it if needed.
        //Debug.Log("atteming to add " + UnitUtilities.ReadableRank(rank) + " at " + position.ToString());
        bool equal = false;
        if (pieces.ContainsKey(position))
        {
            UnitPiece existing;
            if (pieces.TryGetValue(position, out existing))
            {
                if (existing.Rank.Equals(rank))
                {
                    //We're not going to remove then add the same exact piece to the same position
                    equal = true;
                }
                else
                {
                    RemovePiece(position);
                }
            }

        }
        if (!equal)
        {
            Transform target = BoardManager.GetTransformForPosition(position);
            if (!EqualityComparer<Transform>.Default.Equals(target, default(Transform)))
            {
                GameObject plane = Instantiate(UnitPlane);
                UnitPiece piece = GeneratePiece(rank, plane);
                if (piece.Owner != null)
                {
                    piece.Piece.transform.SetParent(piece.Owner.Holder.transform);
                    plane.name = UnitUtilities.ReadableRank(rank);
                    plane.layer = LayerMask.NameToLayer("Pieces");
                    Vector3 planePos = target.position;
                    planePos.z = GOLayer.UNIT_LAYER;
                    plane.transform.position = planePos;
                    Renderer r = plane.GetComponent<Renderer>();
                    r.material = MaterialManager.GetRankMaterial(rank);
                    pieces.Add(position, piece);
                    EventManager.Raise(new UnitPlacedEvent(position, piece));
                }
                else
                {
                    piece.Destroy();
                    Destroy(plane);
                }
            }
        }
    }
Esempio n. 21
0
    public Material GetRankMaterial(UnitRank rank)
    {
        Material material = materials[0].material;

        foreach(UnitMaterial um in materials)
        {
            if(um.rank.Equals(rank))
            {
                material = um.material;
                break;
            }
        }

        return material;
    }
Esempio n. 22
0
    public Sprite GetRankImage(UnitRank rank)
    {
        Sprite sprite = images[0].sprite;

        foreach (UnitImage image in images)
        {
            if (image.rank.Equals(rank))
            {
                sprite = image.sprite;
                break;
            }
        }

        return(sprite);
    }
Esempio n. 23
0
    public Material GetRankMaterial(UnitRank rank)
    {
        Material material = materials[0].material;

        foreach (UnitMaterial um in materials)
        {
            if (um.rank.Equals(rank))
            {
                material = um.material;
                break;
            }
        }

        return(material);
    }
Esempio n. 24
0
    public Sprite GetRankImage(UnitRank rank)
    {
        Sprite sprite = images[0].sprite;

        foreach(UnitImage image in images)
        {
            if(image.rank.Equals(rank))
            {
                sprite = image.sprite;
                break;
            }
        }

        return sprite;
    }
Esempio n. 25
0
    public int Armor(DamageType type, UnitRank rank)
    {
        switch (type)
        {
        case DamageType.BLUNT: return(_template.BaseArmorBlunt(rank));

        case DamageType.SLASH: return(_template.BaseArmorSlash(rank));

        case DamageType.PIERCING: return(_template.BaseArmorPiercing(rank));

        case DamageType.POISON: return(_template.BaseResistance(rank));

        case DamageType.FIRE: return(_template.BaseResistance(rank));
        }
        return(0);
    }
Esempio n. 26
0
    private UnitPiece GeneratePiece(UnitRank rank, GameObject plane)
    {
        UnitPiece piece = new UnitPiece(rank, plane);

        if (GameManager.CurrentMode == GameMode.PlayerOneSetup)
        {
            piece.Owner = GameManager.PlayerOne;
            playerOnePlacementUnits[rank] -= 1;
        }
        else if (GameManager.CurrentMode == GameMode.PlayerTwoSetup)
        {
            piece.Owner = GameManager.PlayerTwo;
            playerTwoPlacementUnits[rank] -= 1;
        }
        return(piece);
    }
 public UnitPlacementSelectedEvent(UnitRank selected)
 {
     this.rank = selected;
 }
Esempio n. 28
0
    //call this from inside button() method
    //sets current button, and purchasable buttons
    //also can set the text etc
    public void SetButtons(Unit unit)
    {
        oldUnitRef = unit;

        purchasableButtons = new Button[2];
        disabledButtons    = new Button[8]; // dont need/
        UnitType t = unit.unitType;
        UnitRank r = unit.unitRank;

        Debug.Log(" unit type " + t.ToString() + ", unit rank: " + r.ToString());
        switch (t)
        {
        case (UnitType.MELEE):
            if (r.Equals(UnitRank.RECRUIT))
            {
                currentButton         = recruitButton;
                purchasableButtons[0] = (meleeButtons[0]);
                purchasableButtons[1] = (rangedButtons[0]);
            }
            else if (r.Equals(UnitRank.MELEE1))
            {
                currentButton         = meleeButtons[0];
                purchasableButtons    = new Button[1];
                purchasableButtons[0] = (meleeButtons[1]);
            }
            else if (r.Equals(UnitRank.MELEE2))
            {
                currentButton         = meleeButtons[1];
                purchasableButtons[0] = (cavalryButtons[0]);
                purchasableButtons[1] = (meleeButtons[2]);
            }
            else if (r.Equals(UnitRank.MELEE3))
            {
                currentButton      = meleeButtons[2];
                purchasableButtons = new Button[0];
            }
            break;

        case (UnitType.RANGED):
            if (r.Equals(UnitRank.RANGED1))
            {
                currentButton         = rangedButtons[0];
                purchasableButtons    = new Button[1];
                purchasableButtons[0] = (rangedButtons[1]);
            }
            if (r.Equals(UnitRank.RANGED2))
            {
                currentButton         = rangedButtons[1];
                purchasableButtons    = new Button[1];
                purchasableButtons[0] = (rangedButtons[2]);
            }
            if (r.Equals(UnitRank.RANGED3))
            {
                currentButton      = rangedButtons[2];
                purchasableButtons = new Button[0];
                //purchasableButtons[0] = (rangedButtons[3]);
            }
            break;

        case (UnitType.CAVALRY):
            if (r.Equals(UnitRank.CAVALRY1))
            {
                currentButton      = cavalryButtons[0];
                purchasableButtons = new Button[0];
            }
            break;
        }
    }
Esempio n. 29
0
 public UnitPiece(UnitRank rank, GameObject piece)
 {
     this.rank = rank;
     this.piece = piece;
 }
Esempio n. 30
0
 private void HandleUnitPlacementSelected(UnitPlacementSelectedEvent e)
 {
     placementRank = e.Rank;
 }
Esempio n. 31
0
 private void HandleUnitPlaced(UnitPlacedEvent e)
 {
     //Check if the unit still can be placed. If not, we need to clear the selection.
     if (UnitManager.GetPlacementAmountForUnit(placementRank) <= 0)
     {
         placementRank = UnitRank.Unknown;
     }
 }
Esempio n. 32
0
 public int Resistance(UnitRank rank) => _template.BaseResistance(rank);
Esempio n. 33
0
 public int GetPlacementAmountForUnit(UnitRank rank)
 {
     int amount = 0;
     if (GameManager.CurrentMode == GameMode.PlayerOneSetup)
     {
         playerOnePlacementUnits.TryGetValue(rank, out amount);
     }
     else if (GameManager.CurrentMode == GameMode.PlayerTwoSetup)
     {
         playerTwoPlacementUnits.TryGetValue(rank, out amount);
     }
     return amount;
 }
Esempio n. 34
0
 public int BaseMobility(UnitRank rank) => _mobility[(int)rank];
Esempio n. 35
0
 public int BaseArmorBlunt(UnitRank rank) => _armorBlunt[(int)rank];
Esempio n. 36
0
 public int BaseArmorPiercing(UnitRank rank) => _armorPiercing[(int)rank];
Esempio n. 37
0
 public int BaseArmorSlash(UnitRank rank) => _armorSlash[(int)rank];
Esempio n. 38
0
 public Unit(Reign.Unit unit)
 {
     _id = unit.ID;
     _rank = unit.Rank;
     _exp = unit.Exp;
     _obCount = unit.ObliterateCount;
     _acted = unit.Acted;
 }
Esempio n. 39
0
 private void HandleUnitPlacementSelected(UnitPlacementSelectedEvent e)
 {
     placementRank = e.Rank;
 }
Esempio n. 40
0
 private UnitPiece GeneratePiece(UnitRank rank, GameObject plane)
 {
     UnitPiece piece = new UnitPiece(rank, plane);
     if (GameManager.CurrentMode == GameMode.PlayerOneSetup)
     {
         piece.Owner = GameManager.PlayerOne;
         playerOnePlacementUnits[rank] -= 1;
     }
     else if (GameManager.CurrentMode == GameMode.PlayerTwoSetup)
     {
         piece.Owner = GameManager.PlayerTwo;
         playerTwoPlacementUnits[rank] -= 1;
     }
     return piece;
 }
Esempio n. 41
0
 public int BaseResistance(UnitRank rank) => _resistance[(int)rank];
Esempio n. 42
0
 public UnitPiece(UnitRank rank, GameObject piece)
 {
     this.rank  = rank;
     this.piece = piece;
 }
Esempio n. 43
0
 public int Mobility(UnitRank rank) => _template.BaseMobility(rank);