/// <summary> Called when the nfo[] edit fields should be rendered </summary> public override void NfoField(plyDataObject data, EditorWindow ed) { // Let designer pick a reward type EditorGUI.BeginChangeCheck(); selectedOption = EditorGUILayout.Popup("Reward Type", selectedOption, Options); if (EditorGUI.EndChangeCheck()) { data.nfo[0] = selectedOption.ToString(); data.nfo[1] = ""; if (selectedOption == 1) { // set a default item to be selected selectedItem = 0; data.nfo[1] = ItemNames[0]; } } // Let designer pick an item as reward if (selectedOption == 1) { EditorGUI.BeginChangeCheck(); selectedItem = EditorGUILayout.Popup(" ", selectedItem, ItemNames); if (EditorGUI.EndChangeCheck()) data.nfo[1] = ItemNames[selectedItem]; } }
/// <summary> Return a nice name that identifies the data. Shown in the button /// used to open the data provider editor window for setup. </summary> public override string PrettyName(plyDataObject data, string emptyText) { if (data.nfo[0] == "0") return "Currency"; if (data.nfo[0] == "1") return "Inventory Pro item: " + data.nfo[2]; return emptyText; }
/// <summary> Called when the data provider is selected </summary> public override void NfoFieldFocus(plyDataObject data, EditorWindow ed) { // make sure the Component that handles the Rewards is registered to be added to DiaQ EdGlobal.RemoveAutoComponent("DiaQ", typeof(plyRPGDiaQRewardHandler).AssemblyQualifiedName); // make sure old one is not present as it causes problems EdGlobal.RegisterAutoComponent("DiaQ", typeof(InventoryProDiaQRewardHandler).AssemblyQualifiedName); _selected = 0; int.TryParse(data.nfo[0], out _selected); if (_attribsAsset == null) { if (_dataAsset == null) { _dataAsset = EdGlobal.GetDataAsset(); } _attribsAsset = (ActorAttributesAsset)_dataAsset.GetAsset <ActorAttributesAsset>(); if (_attribsAsset == null) { _attribsAsset = (ActorAttributesAsset)EdGlobal.LoadOrCreateAsset <ActorAttributesAsset>(plyEdUtil.DATA_PATH_SYSTEM + "attributes.asset", null); } } if (_itemsAsset == null) { if (_dataAsset == null) { _dataAsset = EdGlobal.GetDataAsset(); } _itemsAsset = (ItemsAsset)_dataAsset.GetAsset <ItemsAsset>(); if (_itemsAsset == null) { _itemsAsset = (ItemsAsset)EdGlobal.LoadOrCreateAsset <ItemsAsset>(plyEdUtil.DATA_PATH_SYSTEM + "items.asset", null); } _itemsAsset.UpdateItemCache(); } _selectedIdent = -1; _attribNames = new string[_attribsAsset.attributes.Count]; for (int i = 0; i < _attribsAsset.attributes.Count; i++) { _attribNames[i] = _attribsAsset.attributes[i].def.screenName; if (_selected == 1 && _selectedIdent < 0) { if (data.nfo[1].Equals(_attribsAsset.attributes[i].id.ToString())) { _selectedIdent = i; data.nfo[2] = _attribsAsset.attributes[_selectedIdent].ToString(); // update cached name just in case it has changed GUI.changed = true; } } } }
/// <summary> Return a nice name that identifies the data. Shown in the button /// used to open the data provider editor window for setup. </summary> public override string PrettyName(plyDataObject data, string emptyText) { if (data.nfo[0] == "0") { return("Currency: " + data.nfo[2]); } if (data.nfo[0] == "1") { return("Inventory Pro item: " + data.nfo[2]); } return(emptyText); }
/// <summary> Called when the nfo[] edit fields should be rendered </summary> public override void NfoField(plyDataObject data, EditorWindow ed) { // nfo[0] = 0:Currency, 1:Item // nfo[1] = the identifier of the attribute or item.(not used with currency selected) // nfo[2] = cached name of selected attribute or item EditorGUI.BeginChangeCheck(); _selected = EditorGUILayout.Popup("Reward Type", _selected, _options); if (EditorGUI.EndChangeCheck()) { data.nfo[0] = _selected.ToString(); data.nfo[1] = "-1"; data.nfo[2] = ""; } if (_selected == 0) { ObjectPickerUtility.RenderObjectPickerForType <CurrencyDefinition>("Currency", _selectedCurrency, (val) => { _selectedCurrency = val; }); data.nfo[0] = "0"; data.nfo[1] = _selectedCurrency.ToString(); data.nfo[2] = _selectedCurrency != null ? _selectedCurrency.singleName : " (NOT FOUND)"; } else if (_selected == 1) { if (GUILayout.Button("Select item")) { //itemPicker = InventoryItemPicker.Get(); ObjectPickerUtility.GetObjectPickerForType <InventoryItemBase>(item => { data.nfo[0] = "1"; data.nfo[1] = item.ID.ToString(); data.nfo[2] = item.name; _selectedCurrency = null; //data.nfo[2] = item.currentStackSize.ToString(); ed.Repaint(); GUI.changed = true; }); } } }
/// <summary> Called when the nfo[] edit fields should be rendered </summary> public override void NfoField(plyDataObject data, EditorWindow ed) { // nfo[0] = 0:Currency, 1:Attribute, 2:Item // nfo[1] = the identifier of the attribute or item.(not used with currency selected) // nfo[2] = cached name of selected attribute or item if (selectingItem) { ShowSelectItem(data); return; } EditorGUI.BeginChangeCheck(); selected = EditorGUILayout.Popup("Reward Type", selected, Options); if (EditorGUI.EndChangeCheck()) { data.nfo[0] = selected.ToString(); data.nfo[1] = "-1"; data.nfo[2] = ""; } if (selected == 1) { EditorGUI.BeginChangeCheck(); selectedIdent = EditorGUILayout.Popup(" ", selectedIdent, attribNames); if (EditorGUI.EndChangeCheck()) { data.nfo[1] = attribsAsset.attributes[selectedIdent].id.ToString(); data.nfo[2] = attribsAsset.attributes[selectedIdent].def.screenName; } } else if (selected == 2) { if (GUILayout.Button(string.IsNullOrEmpty(data.nfo[2]) ? "-select-" : data.nfo[2])) { selectingItem = true; } } }
private void ShowSelectItem(plyDataObject data) { GUILayout.Label("Select Item"); if (GUILayout.Button(GC_BACK)) { selectingItem = false; return; } foreach (Item it in itemsAsset.items) { if (GUILayout.Button(it.def.screenName)) { data.nfo[1] = it.prefabId.ToString(); data.nfo[2] = it.def.screenName; selectingItem = false; return; } } }
/// <summary> Return a nice name that identifies the data. Shown in the button /// used to open the data provider editor window for setup. </summary> public override string PrettyName(plyDataObject data, string emptyText) { if (data.nfo[0] == "0") return "Currency"; return string.IsNullOrEmpty(data.nfo[2]) ? "-error-" : data.nfo[2]; }
/// <summary> Called when the data provider is selected </summary> public override void NfoFieldFocus(plyDataObject data, EditorWindow ed) { // make sure the Component that handles the Rewards is registered to be added to DiaQ EdGlobal.RegisterAutoComponent("DiaQ", "plyRPGDiaQRewardHandler"); selected = 0; int.TryParse(data.nfo[0], out selected); if (attribsAsset == null) { if (dataAsset == null) dataAsset = EdGlobal.GetDataAsset(); attribsAsset = (ActorAttributesAsset)dataAsset.GetAsset<ActorAttributesAsset>(); if (attribsAsset == null) attribsAsset = (ActorAttributesAsset)EdGlobal.LoadOrCreateAsset<ActorAttributesAsset>(EdGlobal.DATA_PATH_SYSTEM + "attributes.asset", null); } if (itemsAsset == null) { if (dataAsset == null) dataAsset = EdGlobal.GetDataAsset(); itemsAsset = (ItemsAsset)dataAsset.GetAsset<ItemsAsset>(); if (itemsAsset == null) itemsAsset = (ItemsAsset)EdGlobal.LoadOrCreateAsset<ItemsAsset>(EdGlobal.DATA_PATH_SYSTEM + "items.asset", null); itemsAsset.UpdateItemCache(); } selectedIdent = -1; attribNames = new string[attribsAsset.attributes.Count]; for (int i = 0; i < attribsAsset.attributes.Count; i++) { attribNames[i] = attribsAsset.attributes[i].def.screenName; if (selected == 1 && selectedIdent < 0) { if (data.nfo[1].Equals(attribsAsset.attributes[i].id.ToString())) { selectedIdent = i; data.nfo[2] = attribsAsset.attributes[selectedIdent].def.screenName; // update cached name just in case it has changed GUI.changed = true; } } } if (data.nfo[0] == "2") { if (null == itemsAsset.GetDefinition(new UniqueID(data.nfo[1]))) { data.nfo[1] = ""; data.nfo[2] = ""; GUI.changed = true; } } }
/// <summary> Called when the nfo[] edit fields should be rendered </summary> public override void NfoField(plyDataObject data, EditorWindow ed) { // nfo[0] = 0:Currency, 1:Item // nfo[1] = the identifier of the attribute or item.(not used with currency selected) // nfo[2] = cached name of selected attribute or item EditorGUI.BeginChangeCheck(); selected = EditorGUILayout.Popup("Reward Type", selected, Options); if (EditorGUI.EndChangeCheck()) { data.nfo[0] = selected.ToString(); data.nfo[1] = "-1"; data.nfo[2] = ""; } if (selected == 0) { GUILayout.TextField("New currency system in development"); } else if (selected == 1) { if (GUILayout.Button("Select item")) { //itemPicker = InventoryItemPicker.Get(); itemPicker.Show(true); itemPicker.OnPickObject += (item) => { data.nfo[0] = "1"; data.nfo[1] = item.ID.ToString(); data.nfo[2] = item.name; selectedItem = item; //data.nfo[2] = item.currentStackSize.ToString(); ed.Repaint(); GUI.changed = true; }; } } }
/// <summary> Called when the data provider is selected </summary> public override void NfoFieldFocus(plyDataObject data, EditorWindow ed) { // make sure the Component that handles the Rewards is registered to be added to DiaQ EdGlobal.RemoveAutoComponent("DiaQ", typeof(plyRPGDiaQRewardHandler).AssemblyQualifiedName); // make sure old one is not present as it causes problems EdGlobal.RegisterAutoComponent("DiaQ", typeof(InventoryProDiaQRewardHandler).AssemblyQualifiedName); selected = 0; int.TryParse(data.nfo[0], out selected); if (attribsAsset == null) { if (dataAsset == null) dataAsset = EdGlobal.GetDataAsset(); attribsAsset = (ActorAttributesAsset)dataAsset.GetAsset<ActorAttributesAsset>(); if (attribsAsset == null) attribsAsset = (ActorAttributesAsset)EdGlobal.LoadOrCreateAsset<ActorAttributesAsset>(plyEdUtil.DATA_PATH_SYSTEM + "attributes.asset", null); } if (itemsAsset == null) { if (dataAsset == null) dataAsset = EdGlobal.GetDataAsset(); itemsAsset = (ItemsAsset)dataAsset.GetAsset<ItemsAsset>(); if (itemsAsset == null) itemsAsset = (ItemsAsset)EdGlobal.LoadOrCreateAsset<ItemsAsset>(plyEdUtil.DATA_PATH_SYSTEM + "items.asset", null); itemsAsset.UpdateItemCache(); } selectedIdent = -1; attribNames = new string[attribsAsset.attributes.Count]; for (int i = 0; i < attribsAsset.attributes.Count; i++) { attribNames[i] = attribsAsset.attributes[i].def.screenName; if (selected == 1 && selectedIdent < 0) { if (data.nfo[1].Equals(attribsAsset.attributes[i].id.ToString())) { selectedIdent = i; data.nfo[2] = attribsAsset.attributes[selectedIdent].ToString(); // update cached name just in case it has changed GUI.changed = true; } } } }
/// <summary> Return a nice name that identifies the data. Shown in the button /// used to open the data provider editor window for setup. </summary> public override string PrettyName(plyDataObject data, string emptyText) { if (data.nfo[0] == "0") return "XP"; // in this case we use nfo[1] as a cache of the name of the picked item if (data.nfo[0] == "1") return "Item: " + data.nfo[1]; return emptyText; }
/// <summary> Called when the data provider is selected </summary> public override void NfoFieldFocus(plyDataObject data, EditorWindow ed) { selectedOption = 0; int.TryParse(data.nfo[0], out selectedOption); selectedItem = -1; if (selectedOption == 1) { for (int i = 0; i < ItemNames.Length; i++) { if (ItemNames[i].Equals(data.nfo[1])) { selectedItem = i; break; } } if (selectedItem < 0) { // no item selected. set a default. selectedItem = 0; data.nfo[1] = ItemNames[0]; GUI.changed = true; // so changed gets saved } } }