Example #1
0
        public void Should_Push_Two_Items_On_Stack_Test()
        {
            int          expectedValue = 2;
            AStack <int> stack         = InitStack();

            Assert.AreEqual(stack.Peek(), expectedValue);
        }
Example #2
0
    public override bool AddToThisInventory(AStack aStack)
    {
        SkillStack stack = aStack as SkillStack;

        var skillSaves = GameManager.Instance.SavablePlayerData.PlayerProgress.Skills;

        switch (skillNum)
        {
        case SkillNum.FIRS:
            Squad.playerSquadInstance.Inventory.FirstSkill.Skill      = stack.Skill;
            Squad.playerSquadInstance.Inventory.FirstSkill.SkillStats = stack.SkillStats;
            skillSaves.firstSkill = Squad.playerSquadInstance.Inventory.FirstSkill;
            break;

        case SkillNum.SECOND:
            Squad.playerSquadInstance.Inventory.SecondSkill.Skill      = stack.Skill;
            Squad.playerSquadInstance.Inventory.SecondSkill.SkillStats = stack.SkillStats;
            skillSaves.secondSkill = Squad.playerSquadInstance.Inventory.SecondSkill;
            break;
        }

        PlayUiEffectForEquipmant();

        return(true);
    }
Example #3
0
    public override bool RemoveFromThisInventory(AStack aStack)
    {
        EquipmentStack stack = aStack as EquipmentStack;

        //очищаем инвентарь
        if (stack.EquipmentStats.Type == Squad.playerSquadInstance.Inventory[CellIndex].EquipmentStats.Type &&
            stack.EquipmentStats.Id == Squad.playerSquadInstance.Inventory[CellIndex].EquipmentStats.Id &&
            stack.EquipmentStats.ItemDurability == Squad.playerSquadInstance.Inventory[CellIndex].EquipmentStats.ItemDurability)
        {
            if (stack.Count == Squad.playerSquadInstance.Inventory[CellIndex].Count)
            {
                Squad.playerSquadInstance.Inventory[CellIndex] = null;
            }
            else
            {
                Squad.playerSquadInstance.Inventory[CellIndex].PopItems(stack.Count);
            }
        }
        else
        {
            throw new System.Exception("Нельзя удалить из ячейки предметы, которые там не лежат");
        }

        return(true);
    }
Example #4
0
    /// <summary>
    /// Создаем контейнер итема в указаной ячейке, устанавливаем иконку и её цвет
    /// </summary>
    /// <param name="origin">оригинал итема в указаной ячейке</param>
    /// <param name="cell">ячейка</param>
    /// <param name="stack"></param>
    /// <param name="canDrag">можно ли еретаскивать этот контейнер</param>
    /// <returns>контейнер итема в указаной ячейке</returns>
    virtual public GameObject SetImage(GameObject origin, Transform cell, AStack stack, bool canDrag)
    {
        GameObject go = null;

        if (cell.childCount > 0)
        {
            Destroy(cell.GetChild(cell.childCount - 1).gameObject);
        }

        if (origin != null && stack != null && stack.MainProperties != null)
        {
            go = Instantiate(origin, cell);

            Image img = go.GetComponent <Image>();
            img.sprite = stack.MainProperties.Value.Icon;

            if (stack.MainProperties.Value.Currency == DSPlayerScore.Currency.GOLD)
            {
                img.color = new Color(1, 1, 0);
            }

            var drag = go.GetComponent <Drag>();
            drag.CanDrag = canDrag;
            drag.Stack   = stack;
        }

        var cellUI = cell.GetComponent <InventoryCellUI>();

        if (cellUI != null)
        {
            cellUI.Present();
        }

        return(go);
    }
Example #5
0
    public override bool RemoveFromThisInventory(AStack aStack)
    {
        EquipmentStack stack = aStack as EquipmentStack;

        var stats = stack.EquipmentStats;

        //очищаем инвентарь
        if (stats.Type == EquipmentStats.TypeOfEquipment.HEAD)
        {
            Squad.playerSquadInstance.Inventory.Helmet = null;
        }
        else if (stats.Type == EquipmentStats.TypeOfEquipment.SHIELD)
        {
            Squad.playerSquadInstance.Inventory.Shield = null;
        }
        else if (stats.Type == EquipmentStats.TypeOfEquipment.BODY)
        {
            Squad.playerSquadInstance.Inventory.Body = null;
        }
        else if (stats.Type == EquipmentStats.TypeOfEquipment.WEAPON)
        {
            throw new Exception("Нельзя выбрасывать оружие вручную");
        }

        return(true);
    }
    public override bool CanGetFromThisIventory(AStack aStack, AStack stackForReplacement)
    {
        EquipmentStack stack = aStack as EquipmentStack;

        float summ = stack.EquipmentStats.Cost * stack.Count;

        EquipmentStack stackForReplace;

        if (stackForReplacement != null)
        {
            stackForReplace = stackForReplacement as EquipmentStack;
            if (!stackForReplace.EquipmentStats.Empty && stack.EquipmentMainProperties.Currency == stackForReplace.EquipmentMainProperties.Currency)
            {
                summ -= stackForReplace.EquipmentStats.Cost * stackForReplace.Count;
            }

            if (summ < 0)
            {
                summ = 0;
            }
        }

        if (GameManager.Instance.SavablePlayerData.PlayerProgress.Score.EnoughtMoney(summ, stack.EquipmentMainProperties.Currency))
        {
            return(true);
        }
        else
        {
            Toast.Instance.Show(GameManager.Instance.SavablePlayerData.PlayerProgress.Score.NotEoughtMoveyWarningString(stack.EquipmentMainProperties.Currency));
            return(false);
        }
    }
    public override bool CanGetFromThisIventory(AStack stack, AStack stackForReplacement)
    {
        bool res = false;
        var  st  = stack as ConsumableStack;

        if (st != null)
        {
            res = true;
            var score = GameManager.Instance.SavablePlayerData.PlayerProgress.Score;

            if (st.ConsumableStats is ISkillCostable)
            {
                int cost = (st.ConsumableStats as ISkillCostable).Cost;

                if (st.ConsumableStats is IStackCountConstraintable &&
                    st.Count != (st.ConsumableStats as IStackCountConstraintable).MaxCount &&
                    st.Consumable.MainPropertie.Currency != DSPlayerScore.Currency.GOLD)
                {
                    cost = 0;
                }

                if (!score.EnoughtMoney(cost, st.Consumable.MainPropertie.Currency))
                {
                    res = false;
                    Toast.Instance.Show(score.NotEoughtMoveyWarningString(st.Consumable.MainPropertie.Currency));
                }
            }
        }
        return(res);
    }
Example #8
0
        private AStack <int> InitStack()
        {
            AStack <int> stack = new AStack <int>();

            stack.Push(1);
            stack.Push(2);
            return(stack);
        }
 public override bool RemoveFromThisInventory(AStack stack)
 {
     if (MarketConsumablesUI.Instance != null)
     {
         MarketConsumablesUI.Instance.RemoveFtomInventory(stack as ConsumableStack);
     }
     return(true);
 }
Example #10
0
    public override bool RemoveFromThisInventory(AStack aStack)
    {
        EquipmentStack stack = aStack as EquipmentStack;

        EnvirinmantInventoryUI.Instance.PickUpEquipment(stack);

        return(true);
    }
Example #11
0
        public void Should_Push_Two_Items_And_Pop_One_Off_Stack_Test()
        {
            int          expectedValue = 1;
            AStack <int> stack         = InitStack();

            int result = stack.Pop();

            Assert.AreEqual(stack.Peek(), expectedValue);
            Assert.AreEqual(stack.Count, expectedValue);
        }
Example #12
0
        /// <summary>
        /// A non-recursive method using a stack to remove recursion
        /// Will be called by GetEnumerator
        /// </summary>
        /// <remarks>
        /// This method took me a while to get my head around it.
        /// Stepping through the code with the debugger helped make it click.
        /// </remarks>
        /// <returns>An IEnumerator<T></returns>
        private IEnumerator <T> InOrderTraversal()
        {
            if (_head != null)
            {
                // Used to store nodes we skip
                AStack <BinaryTreeNode <T> > stack = new AStack <BinaryTreeNode <T> >();

                BinaryTreeNode <T> current = _head;

                // When not using recursion, we need to keep track of whether we
                // should be processing left or right nodes
                bool goLeftNext = true;

                // Push the current node on the stack
                stack.Push(current);

                while (stack.Count > 0)
                {
                    // If heading left
                    if (goLeftNext)
                    {
                        // Push all but the left-most node on the stack
                        // yield the left-most after this block
                        while (current.Left != null)
                        {
                            stack.Push(current);
                            current = current.Left;
                        }
                    }

                    // InOrder is left->yield->right
                    yield return(current.Value);

                    // If we can go right, do it
                    if (current.Right != null)
                    {
                        current = current.Right;

                        // Once we've gone right once, start going left again
                        goLeftNext = true;
                    }
                    else
                    {
                        // If can't go right, pop off parent node
                        // so it can be processed and then go to its right side
                        current    = stack.Pop();
                        goLeftNext = false;
                    }
                }
            }
        }
Example #13
0
    public override bool AddToThisInventory(AStack aStack)
    {
        EquipmentStack stack = aStack as EquipmentStack;

        if (stack.Count == 0)
        {
            return(false);
        }

        //возможно, надо переписать так, чтобы дропал этот скрипт, а не скрипт отряда
        Squad.playerSquadInstance.DropEquipment(stack);

        return(true);
    }
    public override GameObject SetImage(GameObject origin, Transform cell, AStack stack, bool canDrag)
    {
        var go = base.SetImage(origin, cell, stack, canDrag);

        if (go != null)
        {
            var drag = go.GetComponent <DragEquipment>();

            drag.showNewEquipment = true;
            drag.Stack            = stack;//нужно чтобы инициализировать значек показывающий новую экипировку
            drag.Present();
        }
        return(go);
    }
    public override GameObject SetImage(GameObject origin, Transform cell, AStack stack, bool canDrag)
    {
        var go = base.SetImage(origin, cell, stack, canDrag);

        if (go != null)
        {
            var st   = stack as ConsumableStack;
            var drag = go.GetComponent <DragConsumable>();

            if (st.Consumable != null)
            {
                var image = go.GetComponent <Image>();
                if (st.ConsumableStats is IStackCountConstraintable &&
                    st.Count != (st.ConsumableStats as IStackCountConstraintable).MaxCount &&
                    st.Consumable.MainPropertie.Currency != DSPlayerScore.Currency.GOLD)
                {
                    image.color = new Color(1, 0.8f, 0.8f);
                }

                drag.ConsumableStack                 = new ConsumableStack();
                drag.ConsumableStack.Consumable      = st.Consumable;
                drag.ConsumableStack.ConsumableStats = st.ConsumableStats;
                drag.ConsumableStack.Count           = st.Count;

                var text = go.transform.GetChild(0).GetComponent <TextMeshProUGUI>();
                text.text = string.Empty;
                if (st.ConsumableStats is IStackCountConstraintable)
                {
                    if (st.Count > 0)
                    {
                        text.text = st.Count.ToString(StringFormats.intNumber);
                    }
                    else
                    {
                        if (st == Squad.playerSquadInstance.Inventory.FirstConsumable)
                        {
                            Squad.playerSquadInstance.Inventory.FirstConsumable.Consumable = null;
                        }
                        else if (st == Squad.playerSquadInstance.Inventory.SecondConsumable)
                        {
                            Squad.playerSquadInstance.Inventory.SecondConsumable.Consumable = null;
                        }
                        SetImage(origin, cell, stack, canDrag);
                    }
                }
            }
        }
        return(go);
    }
Example #16
0
        public Computer(AStack st)
        {
            sttemp = st;
            AddToken add = new AddToken(sttemp, stoutput);
            SubtractionToken substraction = new SubtractionToken(sttemp, stoutput);
            MultipToken mutiptoken = new MultipToken(sttemp, stoutput);
            DivisionToken division = new DivisionToken(sttemp, stoutput);
            ModToken mod = new ModToken(sttemp, stoutput);

            add.Next = substraction;
            substraction.Next = mutiptoken;
            mutiptoken.Next = division;
            division.Next = mod;
            tk = add;
        }
    public override GameObject SetImage(GameObject origin, Transform cell, AStack stack, bool canDrag)
    {
        var go = base.SetImage(origin, cell, stack, canDrag);

        if (go != null)
        {
            var st   = stack as EquipmentStack;
            var drag = go.GetComponent <DragEquipment>();
            var txt  = go.transform.GetChild(0).GetComponent <TextMeshProUGUI>();

            //drag.EquipStack = st;
            txt.text = drag.EquipStack.Count.ToString();
        }
        return(go);
    }
    public override bool RemoveFromThisInventory(AStack aStack)
    {
        EquipmentStack stack = aStack as EquipmentStack;

        float summ = stack.EquipmentStats.Cost * stack.Count;

        summ = (float)Math.Truncate(summ);

        GameManager.Instance.SavablePlayerData.PlayerProgress.Score.SpendMoney(summ, stack.EquipmentMainProperties.Currency);

        // а тут уже удаляем
        MarketInventoryUI.Instance.RemoveFtomInventory(stack);

        return(true);
    }
Example #19
0
    public override bool RemoveFromThisInventory(AStack aStack)
    {
        SkillStack stack = aStack as SkillStack;

        switch (skillNum)
        {
        case SkillNum.FIRS:
            Squad.playerSquadInstance.Inventory.FirstSkill.Skill = null;
            break;

        case SkillNum.SECOND:
            Squad.playerSquadInstance.Inventory.SecondSkill.Skill = null;
            break;
        }

        return(true);
    }
    public override bool AddToThisInventory(AStack stack)
    {
        bool res = false;

        if (MarketConsumablesUI.Instance != null)
        {
            if (!MarketConsumablesUI.Instance.Fill)
            {
                MarketConsumablesUI.Instance.AddToInventory(stack as ConsumableStack);
                res = true;
            }
        }

        //if(res)
        //    PlayUiEffectForMoney();

        return(res);
    }
Example #21
0
    public override GameObject SetImage(GameObject origin, Transform cell, AStack stack, bool canDrag)
    {
        var go = base.SetImage(origin, cell, stack, canDrag);

        if (go != null)
        {
            var st   = stack as SkillStack;
            var drag = go.GetComponent <DragSkill>();

            if (st.Skill != null)
            {
                drag.SkillStack            = new SkillStack();
                drag.SkillStack.Skill      = st.Skill;
                drag.SkillStack.SkillStats = st.SkillStats;
            }
        }
        return(go);
    }
Example #22
0
    public override bool AddToThisInventory(AStack aStack)
    {
        var stack = aStack as ConsumableStack;

        switch (consumableCellNum)
        {
        case SkillNum.FIRS:
            Squad.playerSquadInstance.Inventory.FirstConsumable.Consumable      = stack.Consumable;
            Squad.playerSquadInstance.Inventory.FirstConsumable.ConsumableStats = stack.ConsumableStats;
            Squad.playerSquadInstance.Inventory.FirstConsumable.Count           = stack.Count;
            break;

        case SkillNum.SECOND:
            Squad.playerSquadInstance.Inventory.SecondConsumable.Consumable      = stack.Consumable;
            Squad.playerSquadInstance.Inventory.SecondConsumable.ConsumableStats = stack.ConsumableStats;
            Squad.playerSquadInstance.Inventory.SecondConsumable.Count           = stack.Count;
            break;
        }

        var score = GameManager.Instance.SavablePlayerData.PlayerProgress.Score;
        int cost  = -1;

        //проверяем стоит ли оно денег
        if (stack.ConsumableStats is ISkillCostable)
        {
            cost = (stack.ConsumableStats as ISkillCostable).Cost;
        }

        //если оно уже ипользовано, то бесплатно добавляем (но ток если это не голдовый расходник)
        if (stack.ConsumableStats is IStackCountConstraintable &&
            stack.Count != (stack.ConsumableStats as IStackCountConstraintable).MaxCount &&
            stack.Consumable.MainPropertie.Currency != DSPlayerScore.Currency.GOLD)
        {
            cost = 0;
        }
        if (cost > 0)
        {
            score.SpendMoney(cost, stack.Consumable.MainPropertie.Currency);
        }

        PlayUiEffectForEquipmant();

        return(true);
    }
Example #23
0
    public override bool AddToThisInventory(AStack aStack)
    {
        EquipmentStack stack = aStack as EquipmentStack;
        var            stats = stack.EquipmentStats;

        if (stats.Type == EquipmentStats.TypeOfEquipment.HEAD)
        {
            Squad.playerSquadInstance.Inventory.Helmet = stack;
        }
        else if (stats.Type == EquipmentStats.TypeOfEquipment.SHIELD)
        {
            if (Squad.playerSquadInstance.Inventory.Weapon.EquipmentStats.CanUseWithShield)
            {
                Squad.playerSquadInstance.Inventory.Shield = stack;
            }
            else
            {
                Toast.Instance.Show(LocalizedStrings.toast_cant_use_with_current_weapon);
                return(false);
            }
        }
        else if (stats.Type == EquipmentStats.TypeOfEquipment.BODY)
        {
            Squad.playerSquadInstance.Inventory.Body = stack;
        }
        else if (stats.Type == EquipmentStats.TypeOfEquipment.WEAPON)
        {
            if (stats.CanUseWithShield || Squad.playerSquadInstance.Inventory.Shield.EquipmentStats.Empty)
            {
                Squad.playerSquadInstance.Inventory.Weapon = stack;
            }
            else
            {
                Toast.Instance.Show(LocalizedStrings.toast_cant_use_with_shield);
                return(false);
            }
        }

        PlayUiEffectForEquipmant();

        return(true);
    }
    public override bool AddToThisInventory(AStack aStack)
    {
        EquipmentStack stack = aStack as EquipmentStack;

        if (MarketInventoryUI.Instance.Fill)
        {
            return(false);
        }

        float summ = stack.EquipmentStats.Cost * stack.Count;

        summ = (float)Math.Truncate(summ);

        GameManager.Instance.SavablePlayerData.PlayerProgress.Score.EarnMoney(summ, stack.EquipmentMainProperties.Currency);

        // а тут уже добавояем
        MarketInventoryUI.Instance.AddToInventory(stack);

        //PlayUiEffectForMoney();

        return(true);
    }
    public override GameObject SetImage(GameObject origin, Transform cell, AStack stack, bool canDrag)
    {
        var go = base.SetImage(origin, cell, stack, canDrag);

        if (go != null)
        {
            var st   = stack as ConsumableStack;
            var drag = go.GetComponent <DragConsumable>();
            var txt  = go.transform.GetChild(0).GetComponent <TextMeshProUGUI>();
            var img  = go.GetComponent <Image>();

            drag.ConsumableStack = new ConsumableStack(st.Consumable, st.ConsumableStats, st.Count);
            txt.text             = st.Count.ToString(StringFormats.intNumber);
            if (st.ConsumableStats is IStackCountConstraintable &&
                st.Count != (st.ConsumableStats as IStackCountConstraintable).MaxCount &&
                st.Consumable.MainPropertie.Currency != DSPlayerScore.Currency.GOLD)
            {
                img.color = new Color(1, 0.8f, 0.8f);
            }
        }
        return(go);
    }
Example #26
0
    public override bool RemoveFromThisInventory(AStack aStack)
    {
        var stack = aStack as ConsumableStack;

        switch (consumableCellNum)
        {
        case SkillNum.FIRS:
            Squad.playerSquadInstance.Inventory.FirstConsumable = null;
            break;

        case SkillNum.SECOND:
            Squad.playerSquadInstance.Inventory.SecondConsumable = null;
            break;
        }

        //если уже использовал, то за продажу денег не дадут!!! но если это за голду, то дадут :)
        if (stack.ConsumableStats is ISkillCostable)
        {
            bool t = true;
            if (stack.ConsumableStats is IStackCountConstraintable)
            {
                if ((stack.ConsumableStats as IStackCountConstraintable).MaxCount != stack.Count &&
                    stack.Consumable.MainPropertie.Currency != DSPlayerScore.Currency.GOLD)
                {
                    t = false;
                }
            }

            if (t)
            {
                int cost  = (stack.ConsumableStats as ISkillCostable).Cost;
                var score = GameManager.Instance.SavablePlayerData.PlayerProgress.Score;
                score.EarnMoney(cost, stack.Consumable.MainPropertie.Currency);
            }
        }

        return(true);
    }
Example #27
0
    public override bool AddToThisInventory(AStack aStack)
    {
        EquipmentStack stack = aStack as EquipmentStack;

        if (stack.Count == 0)
        {
            return(false);
        }

        //если был пустой, то заносим этот стак
        if (Squad.playerSquadInstance.Inventory[CellIndex] == null)
        {
            Squad.playerSquadInstance.Inventory[CellIndex] = new EquipmentStack(stack.EquipmentMainProperties, stack.EquipmentStats, stack.Count);
        }
        //если был НЕ пустой, то прибавлем
        else
        {
            Squad.playerSquadInstance.Inventory[CellIndex].PushItems(stack);
        }

        PlayUiEffectForEquipmant();

        return(true);
    }
Example #28
0
 public CompToken(AStack st, AStack stout)
     : base(st, stout)
 {
 }
Example #29
0
 public NumberToken(AStack st, AStack stout)
     : base(st, stout)
 {
 }
 public void MyStackTest()
 {
     this.intStack = new MyStack <int>();
     Assert.IsTrue(intStack is MyStack <int>);
     Assert.IsTrue(intStack.IsEmpty());
 }
 public void SetupTest()
 {
     // Create a test Stack instance as the generic class MyStack that inherits from the abstract class
     this.intStack = new MyStack <int>();
 }
Example #32
0
 public ModToken(AStack st, AStack stout)
     : base(st, stout)
 {
     token = "%";
 }
Example #33
0
 public DivisionToken(AStack st, AStack stout)
     : base(st, stout)
 {
     token = "/";
 }
Example #34
0
 public override bool CanGetFromThisIventory(AStack aStack, AStack stackForReplacement)
 {
     //var stack = aStack as ConsumableStack;
     return(true);
 }
Example #35
0
 public override bool CanGetFromThisIventory(AStack aStack, AStack stackForReplacement)
 {
     return(true);
 }
Example #36
0
 public MultipToken(AStack st, AStack stout)
     : base(st, stout)
 {
     token = "*";
 }
 public SubtractionToken(AStack st, AStack stout)
     : base(st, stout)
 {
     token = "-";
 }
Example #38
0
 public AddToken(AStack st, AStack stout)
     : base(st, stout)
 {
     token = "+";
 }
Example #39
0
 public OperatorToken(AStack st, AStack stout, MyOperatoer op)
     : base(st, stout)
 {
     this.ope = op;
 }
Example #40
0
        public TreatToken(AStack st, AStack stout)
        {
            this.st = st;

            this.stOutput = stout;
        }