Esempio n. 1
0
 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();
         }
     }
 }
Esempio n. 2
0
    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);
            }
        }
    }
Esempio n. 3
0
    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();
    }