public override void Exit(AState to)
    {
        missionPopup.gameObject.SetActive(false);
        inventoryCanvas.gameObject.SetActive(false);

        if (m_Character != null)
        {
            Addressables.ReleaseInstance(m_Character);
        }

        GameState gs = to as GameState;

        skyMeshFilter.gameObject.SetActive(false);
        UIGroundFilter.gameObject.SetActive(false);

        if (gs != null)
        {
            gs.currentModifier = m_CurrentModifier;

            // We reset the modifier to a default one, for next run (if a new modifier is applied, it will replace this default one before the run starts)
            m_CurrentModifier = new Modifier();

            if (m_PowerupToUse != Consumable.ConsumableType.NONE)
            {
                PlayerData.instance.Consume(m_PowerupToUse);
                Consumable inv = Instantiate(ConsumableDatabase.GetConsumbale(m_PowerupToUse));
                inv.gameObject.SetActive(false);
                gs.trackManager.characterController.inventory = inv;
            }
        }
    }
    void PopulatePowerup()
    {
        powerupIcon.gameObject.SetActive(true);

        if (PlayerData.instance.consumables.Count > 0)
        {
            Consumable c = ConsumableDatabase.GetConsumbale(m_PowerupToUse);

            powerupSelect.gameObject.SetActive(true);
            if (c != null)
            {
                powerupIcon.sprite = c.icon;
                powerupCount.text  = PlayerData.instance.consumables[m_PowerupToUse].ToString();
            }
            else
            {
                powerupIcon.sprite = noItemIcon;
                powerupCount.text  = "";
            }
        }
        else
        {
            powerupSelect.gameObject.SetActive(false);
        }
    }
示例#3
0
    public override void Exit(AState to)
    {
        missionPopup.gameObject.SetActive(false);
        inventoryCanvas.gameObject.SetActive(false);

        if (m_Character != null)
        {
            Destroy(m_Character);
        }

        GameState gamestate = to as GameState;

        skyMeshFilter.gameObject.SetActive(false);
        UIGroundFilter.gameObject.SetActive(false);

        if (gamestate != null)
        {
            gamestate.currentModifier = m_CurrentModifier;

            //重置人物选择的装饰为初始状态,为了下一次的游戏开始。
            m_CurrentModifier = new Modifier();
            //给游戏状态加载道具
            if (m_PowerupToUse != Consumable.ConsumableType.NONE)
            {
                PlayerData.instance.Consume(m_PowerupToUse);
                Consumable inventory = Instantiate(ConsumableDatabase.GetConsumable(m_PowerupToUse));
                inventory.gameObject.SetActive(false);
                gamestate.trackManager.characterController.inventory = inventory;
            }
        }
    }
示例#4
0
        public void AddItem(int itemType)
        {
            ItemType i = (ItemType)itemType;

            switch (i)
            {
            case ItemType.Weapon:
                if (WeaponDatabase.Instance.Count >= 0)
                {
                    int rand = Mathf.FloorToInt(UnityEngine.Random.Range(0, (WeaponDatabase.Instance.Count)));
                    IM.Add <Weapon>(WeaponDatabase.GetItemFromAsset(WeaponDatabase.Instance.GetAtIndex(rand)));
                }
                break;

            case ItemType.Consumable:
                if (ConsumableDatabase.Instance.Count >= 0)
                {
                    int rand = Mathf.FloorToInt(UnityEngine.Random.Range(0, (QuestDatabase.Instance.Count)));
                    IM.Add <Consumable>(ConsumableDatabase.GetItemFromAsset(ConsumableDatabase.Instance.GetAtIndex(rand)));
                }
                break;

            case ItemType.Quest:
                if (QuestDatabase.Instance.Count >= 0)
                {
                    int rand = Mathf.FloorToInt(UnityEngine.Random.Range(0, (QuestDatabase.Instance.Count - 1)));
                    IM.Add <QuestItem>(QuestDatabase.GetItemFromAsset(QuestDatabase.Instance.GetAtIndex(rand)));
                }
                break;
            }
        }
示例#5
0
 void CreateDatabase(ref ConsumableDatabase database, string path)
 {
     database = CreateInstance <ConsumableDatabase>();
     AssetDatabase.CreateAsset(database, path);
     AssetDatabase.SaveAssets();
     AssetDatabase.Refresh();
     Debug.Log(consumableDb);
 }
示例#6
0
 void LoadDatabase(ref ConsumableDatabase database, string path)
 {
     database = ( ConsumableDatabase )AssetDatabase.LoadAssetAtPath(path, typeof(ConsumableDatabase));
     //Debug.Log( database );
     if (database == null)
     {
         CreateDatabase(ref database, path);
     }
 }
示例#7
0
    public override void Populate()
    {
        m_RefreshCallback = null;
        foreach (Transform t in listRoot)
        {
            Destroy(t.gameObject);
        }

        GameObject fishItem = Instantiate(fishPrefabItem);

        fishItem.transform.SetParent(listRoot, false);
        fishItem.GetComponent <ShopItemListItem>()
        .buyButton
        .onClick
        .AddListener(delegate() {
            PlayerData.instance.coins += cheatFishCount;
            PlayerData.instance.Save();
        });

        GameObject premiumItem = Instantiate(premiumPrefabItem);

        premiumItem.transform.SetParent(listRoot, false);
        premiumItem.GetComponent <ShopItemListItem>()
        .buyButton
        .onClick
        .AddListener(delegate() {
            PlayerData.instance.premium += cheatPremiumCount;
            PlayerData.instance.Save();
        });


        for (int i = 0; i < s_ConsumablesTypes.Length; ++i)
        {
            Consumable c = ConsumableDatabase.GetConsumbale(s_ConsumablesTypes[i]);
            if (c != null)
            {
                GameObject newEntry = Instantiate(prefabItem);
                newEntry.transform.SetParent(listRoot, false);

                ShopItemListItem itm = newEntry.GetComponent <ShopItemListItem>();

                itm.buyButton.image.sprite = itm.buyButtonSprite;

                itm.nameText.text = c.GetConsumableName();
                itm.icon.sprite   = c.icon;

                itm.countText.gameObject.SetActive(true);

                itm.buyButton.onClick.AddListener(delegate() { Buy(c); });
                m_RefreshCallback += delegate() { RefreshButton(itm, c); };
                RefreshButton(itm, c);
            }
        }
    }
示例#8
0
    static public void AddConsumables()
    {
        for (int i = 0; i < ShopItemList.s_ConsumablesTypes.Length; ++i)
        {
            Consumable c = ConsumableDatabase.GetConsumable(ShopItemList.s_ConsumablesTypes[i]);
            if (c != null)
            {
                PlayerData.instance.consumables[c.GetConsumableType()] = 10;
            }
        }

        PlayerData.instance.Save();
    }
    public override void Populate()
    {
        m_RefreshCallback = null;
        foreach (Transform t in listRoot)
        {
            Destroy(t.gameObject);
        }

        for (int i = 0; i < s_ConsumablesTypes.Length; ++i)
        {
            Consumable c = ConsumableDatabase.GetConsumbale(s_ConsumablesTypes[i]);
            if (c != null)
            {
                prefabItem.InstantiateAsync().Completed += (op) =>
                {
                    if (op.Result == null || !(op.Result is GameObject))
                    {
                        Debug.LogWarning(string.Format("Unable to load item shop list {0}.", prefabItem.Asset.name));
                        return;
                    }
                    GameObject newEntry = op.Result;
                    newEntry.transform.SetParent(listRoot, false);

                    ShopItemListItem itm = newEntry.GetComponent <ShopItemListItem>();

                    itm.buyButton.image.sprite = itm.buyButtonSprite;

                    itm.nameText.text  = c.GetConsumableName();
                    itm.pricetext.text = c.GetPrice().ToString();

                    if (c.GetPremiumCost() > 0)
                    {
                        itm.premiumText.transform.parent.gameObject.SetActive(true);
                        itm.premiumText.text = c.GetPremiumCost().ToString();
                    }
                    else
                    {
                        itm.premiumText.transform.parent.gameObject.SetActive(false);
                    }

                    itm.icon.sprite = c.icon;

                    itm.countText.gameObject.SetActive(true);

                    itm.buyButton.onClick.AddListener(delegate() { Buy(c); });
                    m_RefreshCallback += delegate() { RefreshButton(itm, c); };
                    RefreshButton(itm, c);
                };
            }
        }
    }
    public override void Populate()
    {
        m_RefreshCallback = null;
        foreach (Transform t in listRoot)
        {
            Destroy(t.gameObject);
        }

        for (int i = 0; i < s_ConsumablesTypes.Length; ++i)
        {
            Consumable c = ConsumableDatabase.GetConsumbale(s_ConsumablesTypes[i]);
            if (c != null)
            {
                GameObject newEntry = Instantiate(prefabItem);
                newEntry.transform.SetParent(listRoot, false);

                ShopItemListItem itm = newEntry.GetComponent <ShopItemListItem>();

                itm.buyButton.image.sprite = itm.buyButtonSprite;

                itm.nameText.text  = c.GetConsumableName();
                itm.pricetext.text = c.GetPrice().ToString();

                if (c.GetPremiumCost() > 0)
                {
                    itm.premiumText.transform.parent.gameObject.SetActive(true);
                    itm.premiumText.text = c.GetPremiumCost().ToString();
                }
                else
                {
                    itm.premiumText.transform.parent.gameObject.SetActive(false);
                }

                itm.icon.sprite = c.icon;

                itm.countText.gameObject.SetActive(true);

                itm.buyButton.onClick.AddListener(delegate() { Buy(c); });
                m_RefreshCallback += delegate() { RefreshButton(itm, c); };
                RefreshButton(itm, c);
            }
        }
    }
示例#11
0
        public void Consumables()
        {
            scrollPosition = GUILayout.BeginScrollView(scrollPosition);

            for (int i = 0; i < ConsumableDatabase.GetAssetCount(); i++)
            {
                ConsumableAsset asset = ConsumableDatabase.GetAt(i);
                if (asset != null)
                {
                    GUILayout.BeginHorizontal(EditorStyles.toolbar);
                    GUILayout.Label(string.Format("ID: {0}", asset.ID.ToString("D3")), GUILayout.Width(60));

                    bool clicked = GUILayout.Toggle(asset.ID == activeID, asset.Name, ToggleButtonStyle);

                    if (clicked != (asset.ID == activeID))
                    {
                        if (clicked)
                        {
                            activeID = asset.ID;
                            GUI.FocusControl(null);
                        }
                        else
                        {
                            activeID = -1;
                        }
                    }

                    if (GUILayout.Button("x", EditorStyles.toolbarButton, GUILayout.Width(30)) && EditorUtility.DisplayDialog("Delete Consumable Item", "Are you sure you want to delete " + asset.Name + " Consumable?", "Delete", "Cancel"))
                    {
                        ConsumableDatabase.Instance.RemoveAt(i);
                    }

                    GUILayout.EndHorizontal();

                    if (activeID == asset.ID)
                    {
                        EditorGUI.BeginChangeCheck();

                        GUILayout.BeginVertical("Box");

                        GUILayout.BeginHorizontal();
                        //ITEM SPRITE
                        GUILayout.BeginVertical(GUILayout.Width(75)); //begin vertical
                        asset.Icon = (Sprite)EditorGUILayout.ObjectField(asset.Icon, typeof(Sprite), false, GUILayout.Width(72), GUILayout.Height(72));
                        GUILayout.Label("Item Sprite", GUILayout.Width(72));
                        GUILayout.EndVertical();   //end vertical

                        //ITEM CLASS
                        GUILayout.BeginVertical(); //begin vertical
                        GUILayout.Label("Item Class: " + asset.IType.ToString(), EditorStyles.boldLabel);

                        //NAME
                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Name", GUILayout.Width(80));
                        asset.Name = EditorGUILayout.TextField(asset.Name);
                        GUILayout.EndHorizontal();

                        //DESCRIPTION
                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Description", GUILayout.Width(80));
                        asset.Description = EditorGUILayout.TextArea(asset.Description, GUILayout.MinHeight(30));
                        GUILayout.EndHorizontal();

                        //COST
                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Cost", GUILayout.Width(80));
                        asset.Cost = EditorGUILayout.IntField(asset.Cost);
                        GUILayout.EndHorizontal();

                        //STACKABLE
                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Stackable", GUILayout.Width(80));
                        GUILayout.BeginVertical();
                        asset.Stackable = EditorGUILayout.BeginToggleGroup("Enabled", asset.Stackable);
                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Stack Size", GUILayout.Width(80));
                        asset.StackSize = EditorGUILayout.IntSlider(asset.StackSize, 2, 64);
                        GUILayout.EndHorizontal();
                        GUILayout.EndVertical();
                        GUILayout.EndHorizontal();
                        EditorGUILayout.EndToggleGroup();

                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Level", GUILayout.Width(80));
                        asset.Level = EditorGUILayout.IntSlider(asset.Level, 1, 99);
                        GUILayout.EndHorizontal();

                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Weight", GUILayout.Width(80));
                        asset.Weight = EditorGUILayout.IntSlider(asset.Weight, 0, 99);
                        GUILayout.EndHorizontal();

                        GUILayout.Label("Consumable Variables", EditorStyles.boldLabel);

                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Stat To Effect", GUILayout.Width(80));
                        asset.StatToEffect = (StatType)EditorGUILayout.EnumPopup(asset.StatToEffect);
                        GUILayout.EndHorizontal();

                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Effect Amount", GUILayout.Width(80));
                        asset.EffectAmount = EditorGUILayout.IntField(asset.EffectAmount);
                        GUILayout.EndHorizontal();

                        GUILayout.EndVertical();

                        GUILayout.EndHorizontal();

                        GUILayout.EndVertical();
                        if (EditorGUI.EndChangeCheck())
                        {
                            EditorUtility.SetDirty(ConsumableDatabase.Instance);
                        }
                    }
                }
            }
            GUILayout.EndScrollView();
        }