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); } }
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; } } }
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; } }
void CreateDatabase(ref ConsumableDatabase database, string path) { database = CreateInstance <ConsumableDatabase>(); AssetDatabase.CreateAsset(database, path); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); Debug.Log(consumableDb); }
void LoadDatabase(ref ConsumableDatabase database, string path) { database = ( ConsumableDatabase )AssetDatabase.LoadAssetAtPath(path, typeof(ConsumableDatabase)); //Debug.Log( database ); if (database == null) { CreateDatabase(ref database, path); } }
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); } } }
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); } } }
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(); }