Exemple #1
0
        public void Unequip(EquipSlot Slot)
        {
            if (inventoryManager.inventory.Count < 12)
            {
                EquippableItem item = EquippedItemsArray[(int)Slot];
                EquippedItemsArray[(int)Slot] = null;
                MessageSystem.Print($"{item.Name} is unequiped on {gameObject.name}.");
                itemEquipGraphics.UnequipItem(Slot);
                characterSkills.RemoveFromSkillList(item);
                if (healthBar)
                {
                    healthBar.UpdateHealthBar(GetComponent <Controller>().Health);
                }
                inventoryManager.AddItemToInventory(item);
            }
            else
            {
                MessageSystem.Print("Inventory is full");
            }

            #region Skill Manager Update

            GameObject battleSystemGO = GameObject.Find("BattleSystem");
            if (battleSystemGO)
            {
                SkillManager skillManager = battleSystemGO.GetComponent <SkillManager>();
                skillManager.RenderSkillSlots();
            }
            #endregion Skill Manager Update

            equippedItemsUI.UpdateUI(Slot);
        }
Exemple #2
0
        public IEnumerator MoveForwards(Controller current, Controller opponent)
        {
            float margin = 5f;

            current.Animator.SetTrigger("Walk");
            float maximumMovementAndDirection = (current.UnitStats.GetStat(EStats.MoveSpeed) * (int)Mathf.Sign(current.transform.localScale.x));
            float distanceBetweenCharacters   = Mathf.Abs(current.transform.position.x - opponent.transform.position.x);
            float finalPositionX;
            float viableMovement = distanceBetweenCharacters - margin;

            if (Mathf.Abs(maximumMovementAndDirection) > viableMovement)
            {
                float opponentSlowValue;
                if (distanceBetweenCharacters > margin)
                {
                    finalPositionX    = current.transform.position.x + viableMovement * (int)Mathf.Sign(current.transform.localScale.x);
                    opponentSlowValue = current.UnitStats.GetStat(EStats.MoveSpeed) - viableMovement;
                }
                else
                {
                    finalPositionX    = current.transform.position.x;
                    opponentSlowValue = current.UnitStats.GetStat(EStats.MoveSpeed);
                }
                opponent.CharacterActiveEffects.AddEffect(new StatChangeEffect(3, EStats.MoveSpeed, -opponentSlowValue));
                MessageSystem.Print("Opponent slowed");
            }
            else
            {
                finalPositionX = current.transform.position.x + maximumMovementAndDirection;
            }
            finalPositionX = battleSystem.ConstrainXMovement(finalPositionX);
            yield return(StartCoroutine(current.UnitMovement.MoveUnit(finalPositionX, current.AnimationDurations.WalkTime)));
        }
 // Start is called before the first frame update
 private void Start()
 {
     myFile.Delete();
     if (myFile.FileExists())
     {
         if (myFile.Load())
         {
             LoadInventory();
             LoadEquipment();
             LoadShop();
             // Gold
             gold.ChangeGold(myFile.GetInt("gold", defaultValue: 5000));
             // Encounter
             gameManager.nextEncounterNumber = myFile.GetInt("encounter", defaultValue: 1);
         }
         else
         {
             MessageSystem.Print("Load Failed!");
         }
     }
     else
     {
         gold.ChangeGold(5000);
         shop.GenerateItems();
         SaveInventory();
     }
     myFile.Dispose();
 }
Exemple #4
0
 public virtual IEnumerator Equip(EquippableItem item)
 {
     // Base implementation reverts the actions, if it's not the player's turn.
     BattleSystem.Player.GetComponent <PlayerEquippedItems>().Unequip(item.Slot);
     MessageSystem.Print("Not player turn");
     yield break;
 }
Exemple #5
0
        public override IEnumerator Start()
        {
            SetUpBattle();
            MessageSystem.Print("The battle has begun");
            yield return(new WaitForSeconds(0.1f));

            BattleSystem.SetState(new PlayerTurn(BattleSystem));
        }
Exemple #6
0
 public override IEnumerator Start()
 {
     MessageSystem.Print("Player has lost the match");
     ResetCharacters();
     CleanScene();
     GameObject.Find("UI").GetComponent <UIContainer>().gold.ChangeGold(-500);
     LoadTown();
     return(base.Start());
 }
Exemple #7
0
        private bool CriticalCheck(Controller current)
        {
            bool isCritical = current.TryCritical();

            if (isCritical)
            {
                MessageSystem.Print("Critical hit!");
            }
            return(isCritical);
        }
Exemple #8
0
        private bool EvadeCheck(Controller opponent, float currentAccuracy)
        {
            bool evaded = opponent.TryEvade(currentAccuracy);

            if (evaded)
            {
                MessageSystem.Print("Attack was evaded");
                opponent.Animator.SetTrigger("Evade");
            }
            return(evaded);
        }
Exemple #9
0
 public override IEnumerator Start()
 {
     MessageSystem.Print("Player has won the match");
     ResetCharacters();
     CleanScene();
     GameObject.Find("UI").GetComponent <UIContainer>().gold.ChangeGold(500);
     GameObject.Find("UI").transform.GetChild(0).GetComponent <InventoryManager>().AddItemToInventory(ItemGenerator.GenerateItem(GameManager.instance.GetTier()));
     GameObject.Find("GameManager").GetComponent <GameManager>().nextEncounterNumber += 1;
     LoadTown();
     return(base.Start());
 }
 public virtual void ForceEquip(EquippableItem item)
 {
     EquippedItemsArray[(int)item.Slot] = item;
     MessageSystem.Print($"{item.Name} is equiped on {gameObject.name}.");
     itemEquipGraphics.EquipItem(item);
     characterSkills.AddToSkillList(item);
     if (healthBar)
     {
         healthBar.UpdateHealthBar(GetComponent <Controller>().Health);
     }
 }
Exemple #11
0
        public override IEnumerator Start()
        {
            BattleSystem.skillsContainer.SetActive(true);

            // TODO: Check if player dead, set lost state if is
            BattleSystem.Player.characterCooldowns.ReduceAllCooldownsByOne();
            BattleSystem.Enemy.characterCooldowns.ReduceAllCooldownsByOne();
            BattleSystem.GetComponent <SkillManager>().RenderSkillCooldowns();
            float playerAttackRange = BattleSystem.Player.UnitStats.GetStat(EStats.AttackRange);

            BattleSystem.GetComponent <SkillManager>().DisableOutOfRangeSkills(BattleSystem.GetDistanceBetweenFighters(), playerAttackRange);
            MessageSystem.Print("Player Turn");
            yield break;
        }
Exemple #12
0
 public void AddItemToShop(EquippableItem item)
 {
     if (inventory.Count < shopCapacity)
     {
         inventory.Add(item);
         if (shopUI)
         {
             shopUI.UpdateUI();
         }
     }
     else
     {
         MessageSystem.Print("Inventory is full.");
     }
 }
Exemple #13
0
 public void AddItemToInventory(EquippableItem item)
 {
     if (inventory.Count < 12)
     {
         inventory.Add(item);
         if (inventoryUIManager)
         {
             inventoryUIManager.UpdateUI();
         }
         MessageSystem.Print($"{item.Name} was added to inventory");
     }
     else
     {
         MessageSystem.Print("Inventory is full.");
     }
 }
    private void LoadShop()
    {
        List <EquippableItem> shopItemsToAdd = (List <EquippableItem>)myFile.GetDeserialized("shop", typeof(List <EquippableItem>));

        if (shopItemsToAdd == null)
        {
            MessageSystem.Print("Loaded Null");
            return;
        }
        else
        {
            MessageSystem.Print("File Loaded Successfully");
        }
        foreach (EquippableItem item in shopItemsToAdd)
        {
            shop.AddItemToShop(item);
        }
    }
    private void LoadInventory()
    {
        List <EquippableItem> itemToAdd = (List <EquippableItem>)myFile.GetDeserialized("inventory", typeof(List <EquippableItem>));

        if (itemToAdd == null)
        {
            MessageSystem.Print("Loaded Null");
            return;
        }
        else
        {
            MessageSystem.Print("File Loaded Successfully");
        }
        foreach (EquippableItem item in itemToAdd)
        {
            inventoryManager.AddItemToInventory(item);
        }
    }
Exemple #16
0
 public IEnumerator Execute(Controller current, Controller opponent)
 {
     AddSkillCooldown(current, ESkills.Execute, 9);
     current.Animator.SetTrigger("Slash");
     if (!EvadeCheck(opponent, current.UnitStats.GetStat(EStats.Accuracy)))
     {
         if (opponent.Health < opponent.UnitStats.GetStat(EStats.Health) / 100 * 50)
         {
             GetAttacked(current, opponent, skillMultiplier: 10);
             MessageSystem.Print("Executed!");
         }
         else
         {
             GetAttacked(current, opponent);
         }
     }
     yield return(new WaitForSeconds(current.AnimationDurations.SlashTime));
 }
 private void LoadEquipment()
 {
     EquippableItem[] eqItemsToAdd = (EquippableItem[])myFile.GetDeserialized("eqItems", typeof(EquippableItem[]));
     if (eqItemsToAdd == null)
     {
         MessageSystem.Print("Loaded Null");
         return;
     }
     else
     {
         MessageSystem.Print("File Loaded Successfully");
     }
     foreach (EquippableItem eqItem in eqItemsToAdd)
     {
         if (eqItem != null)
         {
             Player.GetComponent <PlayerEquippedItems>().ForceEquip(eqItem);
         }
     }
 }
Exemple #18
0
        public void BuyItem(EquippableItem item)
        {
            if (inventoryManager.inventory.Count >= 12)
            {
                MessageSystem.Print("Not enough space in inventory.");
                return;
            }

            int BuyPrice = (int)item.SellPrice * 5;

            if (gold.Wealth >= BuyPrice)
            {
                RemoveItemFromShop(item);
                gold.ChangeGold(-BuyPrice);
                inventoryManager.AddItemToInventory(item);
            }
            else
            {
                MessageSystem.Print("Not enough gold!");
            }
        }
        public void DisableOutOfRangeSkills(float distance, float unitAttackRange)
        {
            int i = 0;

            foreach (ESkills skill in characterSkills.characterSkills)
            {
                // Disables out of range skill
                if (distance > unitAttackRange + Skills.instance.skillsList[skill].SkillRange)
                {
                    skillSlots[i].GetComponent <Image>().color = Color.red;
                    int cooldown = battleSystem.Player.characterCooldowns.cooldowns[skill];
                    if (cooldown > 0)
                    {
                        skillSlots[i].gameObject.GetComponentInChildren <TextMeshProUGUI>().text = cooldown.ToString();
                    }
                    skillSlots[i].GetComponent <Button>().onClick.RemoveAllListeners();
                    skillSlots[i].GetComponent <Button>().onClick.AddListener(() => MessageSystem.Print("Out of range"));
                }
                i++;
            }
        }
        public override IEnumerator Start()
        {
            //orderList[AIOrders.MoveLeft] = () => Move(-1);
            //orderList[AIOrders.MoveRight] = () => Move(1);
            //orderList[AIOrders.Attack] = Attack;
            //orderList[AIOrders.UseSkill] = UseSkill();
            MessageSystem.Print("Enemy Turn");
            if (BattleSystem.Enemy.Health <= 0)
            {
                BattleSystem.SetState(new Won(BattleSystem));
                yield break;
            }

            BattleSystem.Player.GetComponent <CharacterActiveEffects>().TriggerEffects();
            BattleSystem.playerOverTimeEffectManager.RefreshOverTimeEffectUI();
            BattleSystem.enemyOverTimeEffectManager.RefreshOverTimeEffectUI();

            UseSkillHandler order = BattleSystem.Enemy.GetComponent <EnemyAI>().DecideOrder(BattleSystem);

            yield return(order(BattleSystem.Enemy, BattleSystem.Player));

            DecideNextState();
        }
        public void RenderSkillCooldowns()
        {
            int i = 0;

            foreach (ESkills skill in characterSkills.characterSkills)
            {
                int cooldown = battleSystem.Player.characterCooldowns.cooldowns[skill];
                if (cooldown > 0)
                {
                    skillSlots[i].GetComponent <Image>().color = Color.grey;
                    skillSlots[i].gameObject.GetComponentInChildren <TextMeshProUGUI>().text = cooldown.ToString();
                    skillSlots[i].GetComponent <Button>().onClick.RemoveAllListeners();
                    skillSlots[i].GetComponent <Button>().onClick.AddListener(() => MessageSystem.Print("On cooldown."));
                }
                else
                {
                    skillSlots[i].gameObject.GetComponentInChildren <TextMeshProUGUI>().text = Skills.instance.skillsList[skill].Name;
                    skillSlots[i].GetComponent <Image>().color = Color.white;
                    skillSlots[i].GetComponent <Button>().onClick.RemoveAllListeners();
                    skillSlots[i].GetComponent <Button>().onClick.AddListener(() => battleSystem.OnSkillButton(Skills.instance.skillsList[skill].Effect));
                }
                i++;
            }
        }
 private void Die()
 {
     // TODO: Death animation, sound etc.
     MessageSystem.Print("Enemy is dead");
 }
Exemple #23
0
 public override IEnumerator Start()
 {
     BattleSystem.skillsContainer.SetActive(false);
     MessageSystem.Print("Action chosen");
     return(base.Start());
 }
Exemple #24
0
 public void RemoveItemFromInventory(EquippableItem item)
 {
     inventory.Remove(item);
     inventoryUIManager.UpdateUI();
     MessageSystem.Print($"{item.Name} was removed from inventory");
 }