public void UpdateInventory()
 {
     if (ParentFloor == null)
     {
         HomeUpgrade = GameManager.Instance.Inventory[InventoryIndex];
     }
 }
 public void DropFloatingUpgrade()
 {
     if (FloatingUpgrade != null)
     {
         GameManager.Instance.Inventory.Add(FloatingUpgrade);
         FloatingUpgrade = null;
     }
 }
Exemple #3
0
 public void Setup(BuildCost buildCost, HomeUpgrade homeUpgrade, BasicChar owner, string buildingName)
 {
     this.buildCost    = buildCost;
     this.homeUpgrade  = homeUpgrade;
     this.owner        = owner;
     this.buildingName = buildingName;
     DisplayCost();
     btn.onClick.AddListener(Upgrade);
 }
 public override void OnClick()
 {
     if (GameManager.Instance.State != GameManager.GameState.Battle)
     {
         HomeUpgrade newUpgrade = inventoryManager.FloatingUpgrade;
         inventoryManager.FloatingUpgrade = Remove();
         Insert(newUpgrade);
     }
 }
    public HomeUpgrade CreateNewRandomItem(int furnitureTier, int modifierTier)
    {
        HomeUpgrade newItem = ContentManager.Instance.
                              GetRandomHomeUpgrade(furnitureTier, modifierTier);
        bool itemAddedToInv = AddItem(newItem);

        if (itemAddedToInv)
        {
            return(newItem);
        }
        else
        {
            return(null);
        }
    }
    // Pop the item out
    public HomeUpgrade Remove()
    {
        HomeUpgrade previousUpgrade = HomeUpgrade;

        HomeUpgrade = null;
        if (ParentFloor != null)
        {
            ParentFloor.FloorData.HomeUpgrades[ParentFloorSlotIndex] = null;
        }
        else
        {
            GameManager.Instance.Inventory[InventoryIndex] = null;
        }
        return(previousUpgrade);
    }
    public bool AddItem(HomeUpgrade itemToAdd)
    {
        List <HomeUpgrade> inventory = GameManager.Instance.Inventory;

        for (int i = 0; i < inventory.Count; i++)
        {
            if (inventory[i] == null)
            {
                inventory[i] = itemToAdd;
                UpdateUpgradeSlots();
                return(true);
            }
        }

        Debug.LogWarning("Inventory is full");
        return(false);
    }
    public bool GetRandomItems(int itemCount, int furnitureTier, int modifierTier)
    {
        for (int i = 0; i < itemCount; i++)
        {
            HomeUpgrade receivedItem = inventoryManager.
                                       CreateNewRandomItem(furnitureTier, modifierTier);
            if (receivedItem != null)
            {
                Debug.Log("Got item [" + receivedItem + "] of tier " + furnitureTier);
            }
            else
            {
                return(false);
            }
        }

        return(true);
    }
Exemple #9
0
    private void SetPromisedRewardUpgrade(EventType actionEvent)
    {
        if (actionEvent.Choices.Count > 0)
        {
            bool itemReward = false;
            foreach (EventChoice choice in actionEvent.Choices)
            {
                if (choice.Action == Action.Gain &&
                    choice.Gain.Type == EventGain.GainType.Upgrade)
                {
                    promisedRewardItem = ContentManager.Instance.
                                         GetRandomHomeUpgrade(actionEvent.Tier, actionEvent.Tier);
                    itemReward = true;
                    break;
                }
            }

            if (!itemReward)
            {
                promisedRewardItem = null;
            }
        }
    }
    // Insert new upgrade to the slot
    public HomeUpgrade Insert(HomeUpgrade upgrade)
    {
        HomeUpgrade previousUpgrade = HomeUpgrade;

        HomeUpgrade = upgrade;
        if (ParentFloor != null)
        {
            ParentFloor.FloorData.HomeUpgrades[ParentFloorSlotIndex] = upgrade;
            if (upgrade != null)
            {
                if (buildSound != null && buildSound.isPlaying)
                {
                    buildSound.Stop();
                }

                buildSound = SFXPlayer.Instance.Play(Sound.Repair, volumeFactor: 0.5f);
            }
        }
        else
        {
            GameManager.Instance.Inventory[InventoryIndex] = upgrade;
        }
        return(previousUpgrade);
    }
Exemple #11
0
    public void UpdateStats()
    {
        MaxCooldown            = 0f;
        Comfort                = Type.BaseComfort + WallType.ComfortBonus + Type.Bonuses.ComfortBonus + WallType.Bonuses.ComfortBonus;
        BaseComfort            = Comfort;
        StenchRemovalBonus     = Type.Bonuses.StenchRemovalBonus + WallType.Bonuses.StenchRemovalBonus;
        GlobalReloadSpeedBonus = Type.Bonuses.GlobalReloadSpeedBonus + WallType.Bonuses.GlobalReloadSpeedBonus;
        GlobalHitChanceBonus   = Type.Bonuses.GlobalHitChanceBonus + WallType.Bonuses.GlobalHitChanceBonus;;
        GlobalRandomHitsBonus  = Type.Bonuses.GlobalRandomHitsBonus + WallType.Bonuses.GlobalRandomHitsBonus;;
        GlobalRandomHits       = new List <int>();

        Resistances.Clear();
        for (int i = 0; i < 4; i++)
        {
            // Loop through every upgrade in the floor
            HomeUpgrade upgrade = HomeUpgrades[i];
            if (upgrade != null)
            {
                float time = upgrade.UpgradeData.TargetingModule.ReloadTime;
                if (upgrade.UpgradeData.IsWeapon)
                {
                    MaxCooldown = Mathf.Max(time, MaxCooldown);
                }
                BonusModule bonusModule = upgrade.UpgradeData.BonusModule;
                // Comfort
                Comfort                += bonusModule.ComfortBonus;
                StenchRemovalBonus     += bonusModule.StenchRemovalBonus;
                GlobalReloadSpeedBonus += bonusModule.GlobalReloadSpeedBonus;
                GlobalHitChanceBonus   += bonusModule.GlobalHitChanceBonus;
                GlobalRandomHitsBonus  += bonusModule.GlobalRandomHitsBonus;
                GlobalRandomHits.AddRange(bonusModule.GlobalRandomHits);

                // Collect resistance bonuses
                foreach (StatBonus statBonus in upgrade.UpgradeData.BonusModule.ResistanceBonuses)
                {
                    DamageTypes type   = statBonus.DamageType;
                    int         amount = statBonus.Bonus;
                    if (!Resistances.ContainsKey(type))
                    {
                        Resistances[type] = amount;
                    }
                    else
                    {
                        Resistances[type] += amount;
                    }
                }

                // Collect damage bonuses
                foreach (StatBonus statBonus in upgrade.UpgradeData.BonusModule.GlobalDamageBonuses)
                {
                    DamageTypes type   = statBonus.DamageType;
                    int         amount = statBonus.Bonus;
                    if (!DamageBonuses.ContainsKey(type))
                    {
                        DamageBonuses[type] = amount;
                    }
                    else
                    {
                        DamageBonuses[type] += amount;
                    }
                }
            }
        }
        StenchLevel  = 0;
        MaxCooldown -= GlobalReloadSpeedBonus;
    }
Exemple #12
0
    private void EventResults(EventType actionEvent, int actionIndex)
    {
        eventResultsSeen = true;
        EventChoice choice = actionEvent.Choices[actionIndex];

        startBattle = false;

        switch (choice.Action)
        {
        case Action.Fight:
        {
            startBattle = true;
            break;
        }

        case Action.Gain:
        {
            if (choice.Gain.Type == EventGain.GainType.Upgrade)
            {
                inventoryManager.AddItem(promisedRewardItem);
                Debug.Log("Got item [" + promisedRewardItem + "] of tier "
                          + promisedRewardItem.UpgradeData.Tier);
                SFXPlayer.Instance.Play(Sound.Hop1, volumeFactor: 0.7f);
            }
            else if (choice.Gain.Type == EventGain.GainType.Floor)
            {
                FloorData fd = new FloorData(
                    ContentManager.Instance.GetRandomFloorType(actionEvent.Tier),
                    ContentManager.Instance.GetRandomWallType(actionEvent.Tier));
                GameManager.Instance.PlayerHome.Floors.Add(fd);
                GameManager.Instance.home.UpdateHome();
                SFXPlayer.Instance.Play(Sound.Repair, volumeFactor: 0.5f);
            }
            else if (choice.Gain.Type == EventGain.GainType.Money)
            {
                GameManager.Instance.ChangeMoney(choice.Gain.Amount);
            }
            else if (choice.Gain.Type == EventGain.GainType.Score)
            {
                GameManager.Instance.ChangeScore(choice.Gain.Amount);
            }
            break;
        }

        case Action.Lose:
        {
            if (choice.Gain.Type == EventGain.GainType.Upgrade)
            {
                // TODO
            }
            else if (choice.Gain.Type == EventGain.GainType.Floor)
            {
                // TODO
            }
            else if (choice.Gain.Type == EventGain.GainType.Money)
            {
                GameManager.Instance.ChangeMoney(-1 * choice.Gain.Amount);
            }
            else if (choice.Gain.Type == EventGain.GainType.Score)
            {
                GameManager.Instance.ChangeScore(-1 * choice.Gain.Amount);
            }
            break;
        }

        case Action.Advance:
        {
            GameManager.Instance.NextRegion();
            break;
        }

        default:
        {
            break;
        }
        }

        ShowConfirmScreen(choice);

        promisedRewardItem = null;
    }
Exemple #13
0
 private void FirstPart(BuildCost buildCost, HomeUpgrade homeUpgrade, string buildingName)
 {
     Instantiate(buildButtonPrefab, buildContainer).Setup(buildCost, homeUpgrade, owner, buildingName);
 }
Exemple #14
0
    public void Fire()
    {
        if (FloorData.MaxCooldown > 0 &&
            GameManager.Instance.State == GameManager.GameState.Battle &&
            !GameManager.Instance.FadeActive)
        {
            foreach (UpgradeSlot slot in UpgradeSlots)
            {
                HomeUpgrade item = slot.HomeUpgrade;
                if (item != null && item.UpgradeData != null && item.UpgradeData.IsWeapon && item.UpgradeData.BaseDamage != null)
                {
                    if (item.UpgradeData.Sound != Sound.None)
                    {
                        SFXPlayer.Instance.Play(item.UpgradeData.Sound, volumeFactor: 0.3f);
                    }

                    Home targetHome      = FindObjectsOfType <Home>().Where(x => x != MyHome).First();
                    int  baseTargetIndex = Index;
                    switch (item.UpgradeData.TargetingModule.TargetingType)
                    {
                    case TargetTypes.Bottom: baseTargetIndex = 0;
                        break;

                    case TargetTypes.Top: baseTargetIndex = targetHome.Floors.Count - 1;
                        break;
                    }
                    List <StatBonus> baseDamage = item.UpgradeData.BaseDamage;
                    foreach (DamageTypes type in  FloorData.DamageBonuses.Keys)
                    {
                        for (int i = 0; i < baseDamage.Count; i++)
                        {
                            if (baseDamage[i].DamageType == type)
                            {
                                baseDamage[i] = new StatBonus(baseDamage[i].DamageType, baseDamage[i].Bonus + FloorData.DamageBonuses[type]);
                                break;
                            }
                        }
                        baseDamage.Add(new StatBonus(type, FloorData.DamageBonuses[type]));
                    }
                    foreach (int targetIndex in item.UpgradeData.TargetingModule.Targets)
                    {
                        int projectileTargetIndex = targetIndex + baseTargetIndex;

                        Projectile proj = Instantiate(ProjectilePrefab).GetComponent <Projectile>();
                        proj.transform.position = slot.transform.position;
                        proj.TargetFloorIndex   = projectileTargetIndex;
                        proj.TargetHome         = targetHome;
                        proj.Damage             = baseDamage;
                    }

                    for (int i = 0; i < item.UpgradeData.TargetingModule.RandomHits; i++)
                    {
                        int projectileTargetIndex = Utilities.UtilityFunctions.GetRandomElement(item.UpgradeData.TargetingModule.RandomTargets) + baseTargetIndex;

                        Projectile proj = Instantiate(ProjectilePrefab).GetComponent <Projectile>();
                        proj.transform.position = slot.transform.position;
                        proj.TargetFloorIndex   = projectileTargetIndex;
                        proj.TargetHome         = targetHome;
                        proj.Damage             = baseDamage;
                    }
                }
            }
        }
        Cooldown -= FloorData.MaxCooldown;
    }