Esempio n. 1
0
    // ------
    public bool Enabled()
    {
        if (weaponID != E_WeaponID.None)
        {
            WeaponSettings settings = WeaponSettingsManager.Instance.Get(weaponID);
            return(!settings.DISABLED);
        }
        else if (itemID != E_ItemID.None)
        {
            ItemSettings settings = ItemSettingsManager.Instance.Get(itemID);
            return(!settings.DISABLED);
        }
        else if (upgradeID != E_UpgradeID.None)
        {
            UpgradeSettings settings = UpgradeSettingsManager.Instance.Get(upgradeID);
            return(!settings.DISABLED);
        }
        else if (perkID != E_PerkID.None)
        {
            PerkSettings settings = PerkSettingsManager.Instance.Get(perkID);
            return(!settings.DISABLED);
        }
        else
        {
            Error("Unknown type!");
        }

        return(false);
    }
Esempio n. 2
0
    // ------
    public bool IsDefault()
    {
        if (weaponID != E_WeaponID.None)
        {
            WeaponSettings settings = WeaponSettingsManager.Instance.Get(weaponID);
            return(settings.IsDefault());
        }
        else if (itemID != E_ItemID.None)
        {
            ItemSettings settings = ItemSettingsManager.Instance.Get(itemID);
            return(settings.IsDefault());
        }
        else if (upgradeID != E_UpgradeID.None)
        {
            UpgradeSettings settings = UpgradeSettingsManager.Instance.Get(upgradeID);
            return(settings.IsDefault());
        }
        else if (perkID != E_PerkID.None)
        {
            PerkSettings settings = PerkSettingsManager.Instance.Get(perkID);
            return(settings.IsDefault());
        }

        return(false);
    }
Esempio n. 3
0
    int ComparePerk(int otherId)
    {
        PerkSettings otherWs = PerkSettingsManager.Instance.Get((E_PerkID)(otherId));
        PerkSettings myWs    = PerkSettingsManager.Instance.Get((E_PerkID)(Id));

        return(myWs.ID.CompareTo(otherWs.ID));
    }
    public PreviewItem(E_PerkID perkID)
    {
        if (perkID != E_PerkID.None)
        {
            PerkSettings settings = PerkSettingsManager.Instance.Get(perkID);
            m_ItemDescription = TextDatabase.instance[settings.Description];

            m_ItemDescription = m_ItemDescription.Replace("@1", Mathf.Round((settings.Modifier - 1.0f) * 100).ToString());
            if ((perkID == E_PerkID.Sprint) || (perkID == E_PerkID.SprintII) || (perkID == E_PerkID.SprintIII))
            {
                m_ItemDescription = m_ItemDescription.Replace("@2", Mathf.Round(settings.Timer).ToString());
            }
        }
    }
Esempio n. 5
0
    // IGUIPAGEPLAYERSTATS INTERFACE

    void IGuiPagePlayerStats.Refresh(PlayerPersistantInfo ppi)
    {
        PPIWeaponData weaponData;

        // collected values

        WeaponSettings weapon            = ChooseWeapon(ppi, out weaponData);
        ItemSettings   item              = ChooseItem(ppi);
        PerkSettings   perk              = ChoosePerk(ppi);
        HatSettings    hat               = ChooseHat(ppi);
        SkinSettings   skin              = ChooseSkin(ppi);
        float          totalShots        = weaponData.StatsFire;
        float          totalKills        = weaponData.StatsKills;
        int            killsTextId       = totalKills == 1 ? 01160034 : 01160026;
        int            computedAccurancy = totalShots > 0 ? Mathf.RoundToInt((weaponData.StatsHits / (float)totalShots) * 100) : 0;

        // weapon

        SetImage("WeaponImage", weapon != null ? weapon.ResearchWidget : null);
        SetText("WeaponName", weapon != null && weapon.Name != 0 ? TextDatabase.instance[weapon.Name] : "");
        SetText("Kills_Enum", string.Format(TextDatabase.instance[killsTextId], totalKills));
        SetText("Accuracy_Enum", computedAccurancy.ToString());
        SetText("Headshots_Enum", "N/A" /*weaponData.StatsHeadShots.ToString()*/);
        SetText("Shotsfired_Enum", weaponData.StatsFire.ToString());
        SetText("TotalTime_Enum", "N/A");
        SetText("TotalTime_Units", TextDatabase.instance[01160014]);

        // item

        SetImage("ItemImage", item != null ? item.ShopWidget : null);
        SetText("ItemName", item != null && item.Name != 0 ? TextDatabase.instance[item.Name] : "");

        // perk

        SetImage("PerkImage", perk != null ? perk.ShopWidget : null);
        SetText("PerkName", perk != null && perk.Name != 0 ? TextDatabase.instance[perk.Name] : "");

        // hat

        SetImage("HatImage", hat != null ? hat.ShopWidget : null);
        SetText("HatName", hat != null && hat.Name != 0 ? TextDatabase.instance[hat.Name] : "");

        // skin

        SetImage("SkinImage", skin != null ? skin.ScrollerWidget : null);
        SetText("SkinName", skin != null && skin.Name != 0 ? TextDatabase.instance[skin.Name] : "");
    }
Esempio n. 6
0
 // ------
 void InitData()
 {
     if (weaponID != E_WeaponID.None)
     {
         WeaponSettings settings = WeaponSettingsManager.Instance.Get(weaponID);
         m_ItemName        = settings.Name;
         m_ItemDescription = settings.Description;
         m_IsPriceGold     = settings.GoldCost > 0;
         m_Price           = m_IsPriceGold ? settings.GoldCost : settings.MoneyCost;
         m_Image           = settings.ResearchWidget;
         m_GUID            = settings.GUID;
     }
     else if (itemID != E_ItemID.None)
     {
         ItemSettings settings = ItemSettingsManager.Instance.Get(itemID);
         m_ItemName        = settings.Name;
         m_ItemDescription = settings.Description;
         m_IsPriceGold     = settings.GoldCost > 0;
         m_Price           = m_IsPriceGold ? settings.GoldCost : settings.MoneyCost;
         m_Image           = settings.ResearchWidget;
         m_GUID            = settings.GUID;
     }
     else if (upgradeID != E_UpgradeID.None)
     {
         UpgradeSettings settings = UpgradeSettingsManager.Instance.Get(upgradeID);
         m_ItemName        = settings.Name;
         m_ItemDescription = settings.Description;
         m_IsPriceGold     = settings.GoldCost > 0;
         m_Price           = m_IsPriceGold ? settings.GoldCost : settings.MoneyCost;
         m_Image           = settings.ResearchWidget;
         m_GUID            = settings.GUID;
     }
     else if (perkID != E_PerkID.None)
     {
         PerkSettings settings = PerkSettingsManager.Instance.Get(perkID);
         m_ItemName        = settings.Name;
         m_ItemDescription = settings.Description;
         m_IsPriceGold     = settings.GoldCost > 0;
         m_Price           = m_IsPriceGold ? settings.GoldCost : settings.MoneyCost;
         m_Image           = settings.ResearchWidget;
         m_GUID            = settings.GUID;
     }
     else
     {
         Error("Unknown type!");
     }
 }
Esempio n. 7
0
    // ------
    public string GetDescription()
    {
        string text;

        text = TextDatabase.instance[m_ItemDescription];
        if (perkID != E_PerkID.None)
        {
            PerkSettings settings = PerkSettingsManager.Instance.Get(perkID);
            text = text.Replace("@1", Mathf.Round((settings.Modifier - 1.0f) * 100).ToString());
            if ((perkID == E_PerkID.Sprint) || (perkID == E_PerkID.SprintII) || (perkID == E_PerkID.SprintIII))
            {
                text = text.Replace("@2", Mathf.Round(settings.Timer).ToString());
            }
        }

        return(text);
    }
Esempio n. 8
0
    void UpdatePerk()
    {
        if (Perk.id == E_PerkID.None)
        {
            return;
        }

        bool active    = true;
        bool countdown = false;

        switch (Perk.id)
        {
        case E_PerkID.Sprint:
        case E_PerkID.SprintII:
        case E_PerkID.SprintIII:
            if (Owner.BlackBoard.MotionType == E_MotionType.Sprint)
            {
                countdown = true;
            }
            else
            {
                active = false;
            }
            break;
        }

        if (countdown)
        {
            Perk.Timer = Mathf.Max(0, Perk.Timer - Time.deltaTime);
        }

        if (active)
        {
            return;
        }

        PerkSettings settings = PerkSettingsManager.Instance.Get(Perk.id);

        if (Perk.Timer < settings.Timer)
        {
            Perk.Timer = Mathf.Min(Perk.Timer + settings.Recharge * Time.deltaTime, settings.Timer);
        }
    }
Esempio n. 9
0
    void Activate()
    {
        PlayerPersistantInfo ppi = PPIManager.Instance.GetPPI(Owner.NetworkView.owner);

        Item g = null;

        foreach (PPIItemData d in ppi.EquipList.Items)
        {
            if (d.ID == E_ItemID.None)
            {
                continue;
            }

            g = new Item(ppi, Owner, d.ID);
            Gadgets.Add(d.ID, g);
        }

        if (ppi.EquipList.Perk != E_PerkID.None)
        {
            PerkSettings settings = PerkSettingsManager.Instance.Get(ppi.EquipList.Perk);
            Perk.id               = settings.ID;
            Perk.Timer            = settings.Timer;
            Perk.Recharge         = settings.Recharge;
            Perk.CipheredModifier = settings.Modifier;             //ciphered accessor; Perk.Modifier	= settings.Modifier;

//			Debug.Log ("PERK: id=" + Perk.id + ", settings.Modifier=" + settings.Modifier + ", m_CipheredModifier=" + Perk.m_CipheredModifier + ", CipheredModifier=" + Perk.CipheredModifier + ", Cipher=" + Perk.Cipher1);

            //'HACK': this is because we don't want to change the execution order (to: 1) ComponentGadgets 2) AgentHuman)
            Owner.BlackBoard.Health = Owner.BlackBoard.RealMaxHealth;
            //need to reset the Health, because it can be modified by Perks which were not available at BlackBoard.Reset() time
        }

        if (Owner.IsOwner)
        {
            GuiHUD.Instance.CreateGadgetInventory(ppi);
        }

        if (Owner.debugGame)
        {
            if (Gadgets.Count > 0)
            {
                string s = PPIManager.Instance.GetPPI(Owner.NetworkView.owner).Name + " : created gadgets - ";
                foreach (KeyValuePair <E_ItemID, Item> pair in Gadgets)
                {
                    s += TextDatabase.instance[pair.Value.Settings.Name];
                }

                if (Game.Instance.GameLog)
                {
                    Debug.Log(s);
                }
            }
            else if (Game.Instance.GameLog)
            {
                Debug.Log(PPIManager.Instance.GetPPI(Owner.NetworkView.owner).Name + " : created no gadgets");
            }

            if (Game.Instance.GameLog)
            {
                Debug.Log("Current Perk: " + Perk);
            }
        }
    }
Esempio n. 10
0
    //Funkce pro fixnuti equipu na ppi
    //Projdeme casti equipu ktere by nemuseli byt validni a vytvorime seznam akci ktere je treba vykonat aby byl zase v poradku.
    //Pokud je vse v poradku, vraci null, jinak serial cloud action ktera se ma provest
    public static BaseCloudAction ValidateEquip()
    {
        List <BaseCloudAction> outActions = new List <BaseCloudAction>();
        PlayerPersistantInfo   ppi        = ShopDataBridge.Instance.PPI;
        UnigueUserID           userID     = CloudUser.instance.authenticatedUserID;

        //weapons:
        //bool anyWeaponEquipped = false;
        foreach (PPIWeaponData w in ppi.EquipList.Weapons)
        {
            //ignoruj prazdna id
            if (w.ID == E_WeaponID.None)
            {
                continue;
            }

            //pokud je item zakazany, nebo ma locknuty slot, odstran ho z equipu.
            WeaponSettings s = WeaponSettingsManager.Instance.Get(w.ID);
            if (s.DISABLED || ShopDataBridge.Instance.IsWeaponSlotLocked(w.EquipSlotIdx))
            {
                //unequip it
                outActions.Add(new SlotEquipAction(userID, s.GUID, w.EquipSlotIdx, false));
                continue;
            }

            //	anyWeaponEquipped = true;
        }

        /* we don't need this functionality right now,
         * because we don't allow player to spawn without any weapon now
         * //pokud nemame equpnutou zadnou zbran, pridej nejakou do prvniho slotu
         * if(!anyWeaponEquipped)
         * {
         *      List<ShopItemId> ownedWeapons = ShopDataBridge.Instance.GetOwnedWeapons();
         *      if(ownedWeapons.Count > 0)
         *      {
         *              int guid = ShopDataBridge.Instance.GetShopItemGUID(ownedWeapons[0]);
         *              outActions.Add(new SlotEquipAction(userID, guid, 0, true ));
         *      }
         * }*/

        //items:
        foreach (PPIItemData w in ppi.EquipList.Items)
        {
            //ignoruj prazdna id
            if (w.ID == E_ItemID.None)
            {
                continue;
            }

            //pokud je item zakazany, nebo ma locknuty slot, odstran ho z equipu.
            ItemSettings s = ItemSettingsManager.Instance.Get(w.ID);
            if (s.DISABLED || ShopDataBridge.Instance.IsItemSlotLocked(w.EquipSlotIdx))
            {
                //unequip it
                outActions.Add(new SlotEquipAction(userID, s.GUID, w.EquipSlotIdx, false));
                continue;
            }

            //pokud mame od itemu v inventari lepsi nebo naopak horsi verzi, updatni jej ve slotu.
            E_ItemID bestVersion = ShopDataBridge.Instance.FindBestItemUpgrade(w.ID);
            if (w.ID != bestVersion)
            {
                //replace it with actual version from inventory
                int bestVersionGUID = ItemSettingsManager.Instance.Get(bestVersion).GUID;
                outActions.Add(new SlotEquipAction(userID, bestVersionGUID, w.EquipSlotIdx, true));
                continue;
            }
        }

        //perk:
        if (ppi.EquipList.Perk != E_PerkID.None)
        {
            E_PerkID perk        = ppi.EquipList.Perk;
            E_PerkID bestVersion = ShopDataBridge.Instance.FindBestPerkUpgrade(ppi.EquipList.Perk);

            //pokud je zakazany, odstran jej ze slotu
            PerkSettings s = PerkSettingsManager.Instance.Get(perk);
            if (s.DISABLED)
            {
                //unequip it
                outActions.Add(new SlotEquipAction(userID, s.GUID, 0, false));
            }
            else if (perk != bestVersion)
            {
                //replace it with actual version from inventory
                int bestVersionGUID = PerkSettingsManager.Instance.Get(bestVersion).GUID;
                outActions.Add(new SlotEquipAction(userID, bestVersionGUID, 0, true));
            }
        }

        //skins:
        {
            ShopItemId        currSkin   = new ShopItemId((int)ppi.EquipList.Outfits.Skin, GuiShop.E_ItemType.Skin);
            List <ShopItemId> ownedSkins = ShopDataBridge.Instance.GetOwnedSkins();
            if (!ownedSkins.Contains(currSkin))
            {
                //Debug.Log("Equiped skin " + currSkin + " is not in inventory, switching to: " + ( (ownedSkins.Count > 0) ? ownedSkins[0].ToString() : "-none-") );

                if (ownedSkins.Count > 0)
                {
                    //equipnuty skin neni v inventari, vyber misto neho nejaky jiny
                    ownedSkins.Sort();
                    int guid = ShopDataBridge.Instance.GetShopItemGUID(ownedSkins[0]);
                    outActions.Add(new SlotEquipAction(userID, guid, 0, true));
                }
                else
                {
                    Debug.LogError("No skins in inventory!");
                }
            }
        }

        //upgrades:
        {
            List <PPIUpgradeList.UpgradeData> upgs = ppi.Upgrades.Upgrades;
            if (upgs.Find(u => u.ID == E_UpgradeID.ItemSlot2).ID != E_UpgradeID.ItemSlot2)
            {
                int guid = ShopDataBridge.Instance.GetShopItemGUID(new ShopItemId((int)E_UpgradeID.ItemSlot2, GuiShop.E_ItemType.Upgrade));
                outActions.Add(new ShopBuyAction(userID, guid));
            }

            if (upgs.Find(u => u.ID == E_UpgradeID.WeaponSlot2).ID != E_UpgradeID.WeaponSlot2)
            {
                int guid = ShopDataBridge.Instance.GetShopItemGUID(new ShopItemId((int)E_UpgradeID.WeaponSlot2, GuiShop.E_ItemType.Upgrade));
                outActions.Add(new ShopBuyAction(userID, guid));
            }
        }

        //pokud jsme neco zmenili, updatuj na zaver PPI
        if (outActions.Count > 0)
        {
            outActions.Add(new FetchPlayerPersistantInfo(userID));
            BaseCloudAction resultAction = new CloudActionSerial(userID, BaseCloudAction.NoTimeOut, outActions.ToArray());
            return(resultAction);
        }
        else
        {
            return(null);
        }
    }