public SubAssetHolder(string name, string label, BaseScriptableObject parent, Func <T> subAssetConstructor) { _name = name; _label = label; _parent = parent; _subAsset = GetScriptableObjectChild(subAssetConstructor); }
public SubAssetHolder(string name, string label, BaseScriptableObject parent) { _name = name; _label = label; _parent = parent; _subAsset = GetScriptableObjectChild(); }
void CreateScriptableObject() { BaseScriptableObject <ScriptableObject> obj = ScriptableObject.CreateInstance(m_FileName) as BaseScriptableObject <ScriptableObject>; obj.SheetName = m_Path; AssetDatabase.CreateAsset(obj, string.Format("{0}/{1}.asset", ExcelLoaderEditor.scriptableObjectDir, m_FileName)); }
private void Update() { if (Input.GetKeyDown(KeyCode.Return)) { if (current.next != null) { current = current.next; ShowDialogue(); PrivateAction(); } } }
private void PrivateAction() { if (current is EventDialogue) { EventDialogue ev = (EventDialogue)current; dialogueBox.text += "\n" + "Recibiste " + ev.rewardToRecieve.ToString() + ": " + ((ev.goldOrHp != 0) ? ev.goldOrHp.ToString() : ev.item); } if (current is DiceDialogue) { DiceDialogue dice = (DiceDialogue)current; int num = Random.Range(0, 30); if (num < dice.difficulty) { current = dice.fail; } else { current = dice.next; ShowDialogue(); } } }
private void SaveConversation() { BaseScriptableObject lastNode = null; for (int i = 0; i < windows.Count; i++) { if (windows[i] is StartNode) { StartNode nodeNew = (StartNode)windows[i]; Dialogue start = ScriptableObjectUtility.CreateAsset <Dialogue>(); //start.name = "Start"; start.start = true; start.windowPos = nodeNew.windowRect; lastNode = start; ScriptToDelete.Add((BaseScriptableObject)start); } if (windows[i] is DialogueNode) { DialogueNode nodeNew = (DialogueNode)windows[i]; Dialogue npcDialogue = ScriptableObjectUtility.CreateAsset <Dialogue>(); npcDialogue.dialogue = nodeNew.text; npcDialogue.windowPos = nodeNew.windowRect; if (lastNode != null) { lastNode.next = npcDialogue; } lastNode = npcDialogue; ScriptToDelete.Add((BaseScriptableObject)npcDialogue); } if (windows[i] is EventNode) { EventNode nodeNew = (EventNode)windows[i]; EventDialogue npcDialogue = ScriptableObjectUtility.CreateAsset <EventDialogue>(); npcDialogue.dialogue = nodeNew.text; npcDialogue.rewardToRecieve = nodeNew.reward; if (nodeNew.healthPoints != 0) { npcDialogue.goldOrHp = nodeNew.healthPoints; } else if (nodeNew.gold != 0) { npcDialogue.goldOrHp = nodeNew.gold; } else { npcDialogue.item = nodeNew.itemId; } npcDialogue.windowPos = nodeNew.windowRect; if (lastNode != null) { lastNode.next = npcDialogue; } lastNode = npcDialogue; ScriptToDelete.Add((BaseScriptableObject)npcDialogue); } if (windows[i] is EndNode) { EndNode endNode = (EndNode)windows[i]; BaseScriptableObject end = ScriptableObjectUtility.CreateAsset <BaseScriptableObject>(); //end.name = "End"; end.dialogue = "Finished"; end.windowPos = endNode.windowRect; lastNode.next = end; //lastNode = end; ScriptToDelete.Add((BaseScriptableObject)end); } if (windows[i] is DiceRollNode) { DiceRollNode nodeNew = (DiceRollNode)windows[i]; DiceDialogue npcDialogue = ScriptableObjectUtility.CreateAsset <DiceDialogue>(); npcDialogue.roll = nodeNew.rollType; npcDialogue.difficulty = nodeNew.difficulty; npcDialogue.windowPos = nodeNew.windowRect; ScriptToDelete.Add((BaseScriptableObject)npcDialogue); if (lastNode != null) { lastNode.next = npcDialogue; } i++; EndNode endNode = (EndNode)windows[i]; BaseScriptableObject end = ScriptableObjectUtility.CreateAsset <BaseScriptableObject>(); //end.name = "End"; end.dialogue = endNode.finished; end.windowPos = endNode.windowRect; npcDialogue.fail = end; lastNode = npcDialogue; ScriptToDelete.Add((BaseScriptableObject)end); } } }
public void ReloadConversation(Object dragged) { /* BaseNode selNode = windows[0]; * windows.RemoveAt(0); * * foreach (BaseNode n in windows) * { * n.NodeDeleted(selNode); * }*/ BaseScriptableObject dialogue = (BaseScriptableObject)dragged; BaseInputNode lastDiag; Dialogue start = (Dialogue)dialogue; StartNode startNode = (StartNode)windows[0]; startNode.windowRect = start.windowPos; lastDiag = startNode; BaseScriptableObject lastDiagScriptObj = start; while (dialogue.next != null) { ScriptToDelete.Add(dialogue); if (dialogue is Dialogue) { Dialogue npcDialogue = (Dialogue)dialogue; if (!npcDialogue.start) { DialogueNode newNode = new DialogueNode(); newNode.windowRect = npcDialogue.windowPos; newNode.text = npcDialogue.dialogue; newNode.hasInput = true; newNode.input1 = lastDiag; newNode.input1Rect = lastDiag.windowRect; lastDiag = newNode; windows.Add(newNode); } // dialogue = dialogue.next; } else if (dialogue is EventDialogue) { EventDialogue npcDialogue = (EventDialogue)dialogue; EventNode newNode = new EventNode(); newNode.windowRect = npcDialogue.windowPos; newNode.text = npcDialogue.dialogue; newNode.reward = npcDialogue.rewardToRecieve; if (newNode.reward == DialogueEventType.EventReward.gold) { newNode.gold = npcDialogue.goldOrHp; } else if (newNode.reward == DialogueEventType.EventReward.life) { newNode.healthPoints = npcDialogue.goldOrHp; } else { newNode.itemId = npcDialogue.item; } newNode.hasInput = true; newNode.input1 = lastDiag; newNode.input1Rect = lastDiag.windowRect; lastDiag = newNode; windows.Add(newNode); } else if (dialogue is DiceDialogue) { DiceDialogue diceRoll = (DiceDialogue)dialogue; DiceRollNode newNode = new DiceRollNode(); newNode.windowRect = diceRoll.windowPos; newNode.rollType = diceRoll.roll; newNode.difficulty = diceRoll.difficulty; newNode.hasInput = true; newNode.input1 = lastDiag; newNode.input1Rect = lastDiag.windowRect; //BaseScriptableObject endObj = diceRoll.fail; EndNode newEnd = new EndNode(); newEnd.windowRect = diceRoll.fail.windowPos; newEnd.finished = diceRoll.fail.dialogue; newEnd.hasInput = true; newEnd.inputNode = newNode; newEnd.inputNodeRect = newNode.windowRect; ScriptToDelete.Add(diceRoll.fail); lastDiag = newNode; windows.Add(newNode); windows.Add(newEnd); } lastDiagScriptObj = dialogue; Debug.Log("asdasd"); dialogue = dialogue.next; } EndNode lastEnd = new EndNode(); lastEnd.windowRect = lastDiagScriptObj.next.windowPos; lastEnd.finished = lastDiagScriptObj.next.dialogue; lastEnd.hasInput = true; lastEnd.inputNode = lastDiag; lastEnd.inputNodeRect = lastDiag.windowRect; ScriptToDelete.Add(lastDiagScriptObj.next); windows.Add(lastEnd); Debug.Log("ultimo alcanzado"); Repaint(); }