public void draw()
        {
            EditorGUILayout.HelpBox(TC.get("RandomEffect.Description"), MessageType.Info);
            EditorGUI.BeginChangeCheck();
            var newProbability = EditorGUILayout.IntSlider("RandomEffect.Probability.Description".Traslate(),
                                                           effect.getProbability(), 0, 100);

            if (EditorGUI.EndChangeCheck())
            {
                effect.setProbability(newProbability);
            }

            using (new EditorGUILayout.HorizontalScope())
            {
                GUILayout.Label("RandomEffect.Positive.Title".Traslate());
                if (GUILayout.Button(effect.getPositiveEffect() == null ? addTexture : removeTexture, GUILayout.Width(20)))
                {
                    if (effect.getPositiveEffect() == null)
                    {
                        EffectEditorWindow.CreateEffect(newEffect =>
                        {
                            effect.setPositiveEffect(newEffect);
                        });
                    }
                    else
                    {
                        effect.setPositiveEffect(null);
                        effect.setNegativeEffect(null);
                    }
                }
            }

            using (new EditorGUI.DisabledScope(effect.getPositiveEffect() == null))
            {
                using (new EditorGUILayout.HorizontalScope())
                {
                    GUILayout.Label("RandomEffect.Negative.Title".Traslate());
                    if (GUILayout.Button(effect.getNegativeEffect() == null ? addTexture : removeTexture, GUILayout.Width(20)))
                    {
                        if (effect.getNegativeEffect() == null)
                        {
                            EffectEditorWindow.CreateEffect(effect.setNegativeEffect);
                        }
                        else
                        {
                            effect.setNegativeEffect(null);
                        }
                    }
                }
            }
        }
コード例 #2
0
    /*
     * (non-Javadoc)
     *
     * @see es.eucm.eadventure.engine.loader.subparsers.SubParser#startElement(java.lang.string, java.lang.string,
     *      java.lang.string, org.xml.sax.Attributes)
     */
    public override void startElement(string namespaceURI, string sName, string qName, Dictionary <string, string> attrs)
    {
        //Debug.Log("Start: " + sName + " " + qName + "\nAttr: \n " +CollectionPrinter.PrintCollection(attrs));
        newEffect = null;
        audioPath = string.Empty;

        //Debug.Log(sName + " " + qName + "\nAttrs: \n" + CollectionPrinter.PrintCollection(attrs));
        // If it is a cancel-action tag
        if (qName.Equals("cancel-action"))
        {
            newEffect = new CancelActionEffect();
        }

        // If it is a activate tag
        else if (qName.Equals("activate"))
        {
            foreach (KeyValuePair <string, string> entry in attrs)
            {
                if (entry.Key.Equals("flag"))
                {
                    newEffect = new ActivateEffect(entry.Value.ToString());
                    chapter.addFlag(entry.Value.ToString());
                }
            }
        }

        // If it is a deactivate tag
        else if (qName.Equals("deactivate"))
        {
            foreach (KeyValuePair <string, string> entry in attrs)
            {
                if (entry.Key.Equals("flag"))
                {
                    newEffect = new DeactivateEffect(entry.Value.ToString());
                    chapter.addFlag(entry.Value.ToString());
                }
            }
        }

        // If it is a set-value tag
        else if (qName.Equals("set-value"))
        {
            string var   = null;
            int    value = 0;

            foreach (KeyValuePair <string, string> entry in attrs)
            {
                if (entry.Key.Equals("var"))
                {
                    var = entry.Value.ToString();
                }
                else if (entry.Key.Equals("value"))
                {
                    value = int.Parse(entry.Value.ToString());
                }
            }
            newEffect = new SetValueEffect(var, value);
            chapter.addVar(var);
        }

        // If it is a set-value tag
        else if (qName.Equals("increment"))
        {
            string var   = null;
            int    value = 0;

            foreach (KeyValuePair <string, string> entry in attrs)
            {
                if (entry.Key.Equals("var"))
                {
                    var = entry.Value.ToString();
                }
                else if (entry.Key.Equals("value"))
                {
                    value = int.Parse(entry.Value.ToString());
                }
            }
            newEffect = new IncrementVarEffect(var, value);
            chapter.addVar(var);
        }

        // If it is a decrement tag
        else if (qName.Equals("decrement"))
        {
            string var   = null;
            int    value = 0;

            foreach (KeyValuePair <string, string> entry in attrs)
            {
                if (entry.Key.Equals("var"))
                {
                    var = entry.Value.ToString();
                }
                else if (entry.Key.Equals("value"))
                {
                    value = int.Parse(entry.Value.ToString());
                }
            }
            newEffect = new DecrementVarEffect(var, value);
            chapter.addVar(var);
        }

        // If it is a macro-reference tag
        else if (qName.Equals("macro-ref"))
        {
            // Id
            string id = null;
            foreach (KeyValuePair <string, string> entry in attrs)
            {
                if (entry.Key.Equals("id"))
                {
                    id = entry.Value.ToString();
                }
            }
            // Store the inactive flag in the conditions or either conditions
            newEffect = new MacroReferenceEffect(id);
        }

        // If it is a consume-object tag
        else if (qName.Equals("consume-object"))
        {
            foreach (KeyValuePair <string, string> entry in attrs)
            {
                if (entry.Key.Equals("idTarget"))
                {
                    newEffect = new ConsumeObjectEffect(entry.Value.ToString());
                }
            }
        }

        // If it is a generate-object tag
        else if (qName.Equals("generate-object"))
        {
            foreach (KeyValuePair <string, string> entry in attrs)
            {
                if (entry.Key.Equals("idTarget"))
                {
                    newEffect = new GenerateObjectEffect(entry.Value.ToString());
                }
            }
        }

        // If it is a speak-char tag
        else if (qName.Equals("speak-char"))
        {
            audioPath = "";
            // Store the idTarget, to store the effect when the tag is closed
            currentCharIdTarget = null;

            foreach (KeyValuePair <string, string> entry in attrs)
            {
                if (entry.Key.Equals("idTarget"))
                {
                    currentCharIdTarget = entry.Value.ToString();
                }
                // If there is a "uri" attribute, store it as audio path
                if (entry.Key.Equals("uri"))
                {
                    audioPath = entry.Value.ToString();
                }
            }
        }

        // If it is a trigger-book tag
        else if (qName.Equals("trigger-book"))
        {
            foreach (KeyValuePair <string, string> entry in attrs)
            {
                if (entry.Key.Equals("idTarget"))
                {
                    newEffect = new TriggerBookEffect(entry.Value.ToString());
                }
            }
        }

        // If it is a trigger-last-scene tag
        else if (qName.Equals("trigger-last-scene"))
        {
            newEffect = new TriggerLastSceneEffect();
        }

        // If it is a play-sound tag
        else if (qName.Equals("play-sound"))
        {
            // Store the path and background
            string path       = "";
            bool   background = true;
            foreach (KeyValuePair <string, string> entry in attrs)
            {
                if (entry.Key.Equals("background"))
                {
                    background = entry.Value.ToString().Equals("yes");
                }
                else if (entry.Key.Equals("uri"))
                {
                    path = entry.Value.ToString();
                }
            }

            // Add the new play sound effect
            newEffect = new PlaySoundEffect(background, path);
        }

        // If it is a trigger-conversation tag
        else if (qName.Equals("trigger-conversation"))
        {
            foreach (KeyValuePair <string, string> entry in attrs)
            {
                if (entry.Key.Equals("idTarget"))
                {
                    newEffect = new TriggerConversationEffect(entry.Value.ToString());
                }
            }
        }

        // If it is a trigger-cutscene tag
        else if (qName.Equals("trigger-cutscene"))
        {
            foreach (KeyValuePair <string, string> entry in attrs)
            {
                if (entry.Key.Equals("idTarget"))
                {
                    newEffect = new TriggerCutsceneEffect(entry.Value.ToString());
                }
            }
        }

        // If it is a trigger-scene tag
        else if (qName.Equals("trigger-scene"))
        {
            string scene = "";
            int    x     = 0;
            int    y     = 0;
            foreach (KeyValuePair <string, string> entry in attrs)
            {
                if (entry.Key.Equals("idTarget"))
                {
                    scene = entry.Value.ToString();
                }
                else if (entry.Key.Equals("x"))
                {
                    x = int.Parse(entry.Value.ToString());
                }
                else if (entry.Key.Equals("y"))
                {
                    y = int.Parse(entry.Value.ToString());
                }
            }

            newEffect = new TriggerSceneEffect(scene, x, y);
        }

        // If it is a play-animation tag
        else if (qName.Equals("play-animation"))
        {
            string path = "";
            int    x    = 0;
            int    y    = 0;
            foreach (KeyValuePair <string, string> entry in attrs)
            {
                if (entry.Key.Equals("uri"))
                {
                    path = entry.Value.ToString();
                }
                else if (entry.Key.Equals("x"))
                {
                    x = int.Parse(entry.Value.ToString());
                }
                else if (entry.Key.Equals("y"))
                {
                    y = int.Parse(entry.Value.ToString());
                }
            }

            // Add the new play sound effect
            newEffect = new PlayAnimationEffect(path, x, y);
        }

        // If it is a move-player tag
        else if (qName.Equals("move-player"))
        {
            int x = 0;
            int y = 0;
            foreach (KeyValuePair <string, string> entry in attrs)
            {
                if (entry.Key.Equals("x"))
                {
                    x = int.Parse(entry.Value.ToString());
                }
                else if (entry.Key.Equals("y"))
                {
                    y = int.Parse(entry.Value.ToString());
                }
            }

            // Add the new move player effect
            newEffect = new MovePlayerEffect(x, y);
        }

        // If it is a move-npc tag
        else if (qName.Equals("move-npc"))
        {
            string npcTarget = "";
            int    x         = 0;
            int    y         = 0;
            foreach (KeyValuePair <string, string> entry in attrs)
            {
                if (entry.Key.Equals("idTarget"))
                {
                    npcTarget = entry.Value.ToString();
                }
                else if (entry.Key.Equals("x"))
                {
                    x = int.Parse(entry.Value.ToString());
                }
                else if (entry.Key.Equals("y"))
                {
                    y = int.Parse(entry.Value.ToString());
                }
            }

            // Add the new move NPC effect
            newEffect = new MoveNPCEffect(npcTarget, x, y);
        }

        // Random effect tag
        else if (qName.Equals("random-effect"))
        {
            int probability = 0;
            foreach (KeyValuePair <string, string> entry in attrs)
            {
                if (entry.Key.Equals("probability"))
                {
                    probability = int.Parse(entry.Value.ToString());
                }
            }

            // Add the new random effect
            randomEffect        = new RandomEffect(probability);
            newEffect           = randomEffect;
            readingRandomEffect = true;
            positiveBlockRead   = false;
        }
        // wait-time effect
        else if (qName.Equals("wait-time"))
        {
            int time = 0;
            foreach (KeyValuePair <string, string> entry in attrs)
            {
                if (entry.Key.Equals("time"))
                {
                    time = int.Parse(entry.Value.ToString());
                }
            }

            // Add the new move NPC effect
            newEffect = new WaitTimeEffect(time);
        }

        // show-text effect
        else if (qName.Equals("show-text"))
        {
            x           = 0;
            y           = 0;
            frontColor  = 0;
            borderColor = 0;
            audioPath   = "";

            foreach (KeyValuePair <string, string> entry in attrs)
            {
                if (entry.Key.Equals("x"))
                {
                    x = int.Parse(entry.Value.ToString());
                }
                else if (entry.Key.Equals("y"))
                {
                    y = int.Parse(entry.Value.ToString());
                }
                else if (entry.Key.Equals("frontColor"))
                {
                    frontColor = int.Parse(entry.Value.ToString());
                }
                else if (entry.Key.Equals("borderColor"))
                {
                    borderColor = int.Parse(entry.Value.ToString());
                }
                // If there is a "uri" attribute, store it as audio path
                else if (entry.Key.Equals("uri"))
                {
                    audioPath = entry.Value.ToString();
                }
            }
        }

        else if (qName.Equals("highlight-item"))
        {
            int    type     = 0;
            bool   animated = false;
            string id       = "";
            foreach (KeyValuePair <string, string> entry in attrs)
            {
                if (entry.Key.Equals("idTarget"))
                {
                    id = entry.Value.ToString();
                }
                if (entry.Key.Equals("animated"))
                {
                    animated = (entry.Value.ToString().Equals("yes") ? true : false);
                }
                if (entry.Key.Equals("type"))
                {
                    if (entry.Value.ToString().Equals("none"))
                    {
                        type = HighlightItemEffect.NO_HIGHLIGHT;
                    }
                    if (entry.Value.ToString().Equals("green"))
                    {
                        type = HighlightItemEffect.HIGHLIGHT_GREEN;
                    }
                    if (entry.Value.ToString().Equals("red"))
                    {
                        type = HighlightItemEffect.HIGHLIGHT_RED;
                    }
                    if (entry.Value.ToString().Equals("blue"))
                    {
                        type = HighlightItemEffect.HIGHLIGHT_BLUE;
                    }
                    if (entry.Value.ToString().Equals("border"))
                    {
                        type = HighlightItemEffect.HIGHLIGHT_BORDER;
                    }
                }
            }
            newEffect = new HighlightItemEffect(id, type, animated);
        }
        else if (qName.Equals("move-object"))
        {
            bool   animated       = false;
            string id             = "";
            int    x              = 0;
            int    y              = 0;
            float  scale          = 1.0f;
            int    translateSpeed = 20;
            int    scaleSpeed     = 20;
            foreach (KeyValuePair <string, string> entry in attrs)
            {
                if (entry.Key.Equals("idTarget"))
                {
                    id = entry.Value.ToString();
                }
                if (entry.Key.Equals("animated"))
                {
                    animated = (entry.Value.ToString().Equals("yes") ? true : false);
                }
                if (entry.Key.Equals("x"))
                {
                    x = int.Parse(entry.Value.ToString());
                }
                if (entry.Key.Equals("y"))
                {
                    y = int.Parse(entry.Value.ToString());
                }
                if (entry.Key.Equals("scale"))
                {
                    scale = float.Parse(entry.Value.ToString(), CultureInfo.InvariantCulture);
                }
                if (entry.Key.Equals("translateSpeed"))
                {
                    translateSpeed = int.Parse(entry.Value.ToString());
                }
                if (entry.Key.Equals("scaleSpeed"))
                {
                    scaleSpeed = int.Parse(entry.Value.ToString());
                }
            }
            newEffect = new MoveObjectEffect(id, x, y, scale, animated, translateSpeed, scaleSpeed);
        }


        else if (qName.Equals("speak-player"))
        {
            audioPath = "";

            foreach (KeyValuePair <string, string> entry in attrs)
            {
                // If there is a "uri" attribute, store it as audio path
                if (entry.Key.Equals("uri"))
                {
                    audioPath = entry.Value.ToString();
                }
            }
        }
        // If it is a condition tag, create new conditions and switch the state
        else if (qName.Equals("condition"))
        {
            currentConditions = new Conditions();
            subParser         = new ConditionSubParser(currentConditions, chapter);
            subParsing        = SUBPARSING_CONDITION;
        }

        // Not reading Random effect: Add the new Effect if not null
        if (!readingRandomEffect && newEffect != null)
        {
            effects.add(newEffect);
            // Store current effect
            currentEffect = newEffect;
        }

        // Reading random effect
        if (readingRandomEffect)
        {
            // When we have just created the effect, add it
            if (newEffect != null && newEffect == randomEffect)
            {
                effects.add(newEffect);
            }
            // Otherwise, determine if it is positive or negative effect
            else if (newEffect != null && !positiveBlockRead)
            {
                randomEffect.setPositiveEffect(newEffect);
                positiveBlockRead = true;
            }
            // Negative effect
            else if (newEffect != null && positiveBlockRead)
            {
                randomEffect.setNegativeEffect(newEffect);
                positiveBlockRead   = false;
                readingRandomEffect = false;
                newEffect           = randomEffect;
                randomEffect        = null;
            }
            // Store current effect
            currentEffect = newEffect;
        }

        // If it is reading an effect or a condition, spread the call
        if (subParsing != SUBPARSING_NONE)
        {
            subParser.startElement(namespaceURI, sName, qName, attrs);
            endElement(namespaceURI, sName, qName);
        }
    }
コード例 #3
0
    public override void ParseElement(XmlElement element)
    {
        string tmpArgVal;
        int    x = 0;
        int    y = 0;
        string path = "";
        string id = "";
        bool   animated = false, addeffect = true;
        List <AbstractEffect> effectlist;

        foreach (XmlElement effect in element.ChildNodes)
        {
            addeffect = true;

            switch (effect.Name)
            {
            case "cancel-action": currentEffect = new CancelActionEffect(); break;

            case "activate":
            case "deactivate":
                tmpArgVal = effect.GetAttribute("flag");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    chapter.addFlag(tmpArgVal);
                }

                if (effect.Name == "activate")
                {
                    currentEffect = new ActivateEffect(tmpArgVal);
                }
                else
                {
                    currentEffect = new DeactivateEffect(tmpArgVal);
                }
                break;

            case "set-value":
            case "increment":
            case "decrement":
                string var   = null;
                int    value = 0;

                tmpArgVal = effect.GetAttribute("var");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    var = tmpArgVal;
                }
                tmpArgVal = effect.GetAttribute("value");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    value = int.Parse(tmpArgVal);
                }
                if (effect.Name == "set-value")
                {
                    currentEffect = new SetValueEffect(var, value);
                }
                else if (effect.Name == "increment")
                {
                    currentEffect = new IncrementVarEffect(var, value);
                }
                else
                {
                    currentEffect = new DecrementVarEffect(var, value);
                }

                chapter.addVar(var);
                break;

            case "macro-ref":
                id        = "";
                tmpArgVal = effect.GetAttribute("id");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    id = tmpArgVal;
                }
                currentEffect = new MacroReferenceEffect(id);
                break;

            case "speak-char":
                audioPath           = "";
                currentCharIdTarget = null;

                tmpArgVal = effect.GetAttribute("idTarget");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    currentCharIdTarget = tmpArgVal;
                }

                tmpArgVal = effect.GetAttribute("uri");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    audioPath = tmpArgVal;
                }

                // Add the effect and clear the current string
                currentEffect = new SpeakCharEffect(currentCharIdTarget, effect.InnerText.ToString().Trim());
                ((SpeakCharEffect)currentEffect).setAudioPath(audioPath);
                break;

            case "trigger-last-scene":
                currentEffect = new TriggerLastSceneEffect();
                break;

            case "play-sound":
                // Store the path and background
                bool background = true;
                path = "";

                tmpArgVal = effect.GetAttribute("background");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    background = tmpArgVal.Equals("yes");
                }
                tmpArgVal = effect.GetAttribute("uri");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    path = tmpArgVal;
                }

                // Add the new play sound effect
                currentEffect = new PlaySoundEffect(background, path);
                break;

            case "consume-object":
            case "generate-object":
            case "trigger-book":
            case "trigger-conversation":
            case "trigger-cutscene":
                tmpArgVal = effect.GetAttribute("idTarget");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    switch (effect.Name)
                    {
                    case "consume-object": currentEffect = new ConsumeObjectEffect(tmpArgVal); break;

                    case "generate-object": currentEffect = new GenerateObjectEffect(tmpArgVal); break;

                    case "trigger-book": currentEffect = new TriggerBookEffect(tmpArgVal); break;

                    case "trigger-conversation": currentEffect = new TriggerConversationEffect(tmpArgVal); break;

                    case "trigger-cutscene": currentEffect = new TriggerCutsceneEffect(tmpArgVal); break;
                    }
                }
                break;

            case "trigger-scene":
                x = 0;
                y = 0;
                string scene = "";
                tmpArgVal = effect.GetAttribute("idTarget");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    scene = tmpArgVal;
                }
                tmpArgVal = effect.GetAttribute("x");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    x = int.Parse(tmpArgVal);
                }
                tmpArgVal = effect.GetAttribute("y");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    y = int.Parse(tmpArgVal);
                }

                currentEffect = new TriggerSceneEffect(scene, x, y);
                break;

            case "play-animation":
                x    = 0;
                y    = 0;
                path = "";

                tmpArgVal = effect.GetAttribute("uri");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    path = tmpArgVal;
                }
                tmpArgVal = effect.GetAttribute("x");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    x = int.Parse(tmpArgVal);
                }
                tmpArgVal = effect.GetAttribute("y");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    y = int.Parse(tmpArgVal);
                }

                // Add the new play sound effect
                currentEffect = new PlayAnimationEffect(path, x, y);
                break;

            case "move-player":
                x         = 0;
                y         = 0;
                tmpArgVal = effect.GetAttribute("x");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    x = int.Parse(tmpArgVal);
                }
                tmpArgVal = effect.GetAttribute("y");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    y = int.Parse(tmpArgVal);
                }

                // Add the new move player effect
                currentEffect = new MovePlayerEffect(x, y);
                break;

            case "move-npc":
                x = 0;
                y = 0;
                string npcTarget = "";
                tmpArgVal = effect.GetAttribute("idTarget");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    npcTarget = tmpArgVal;
                }
                tmpArgVal = effect.GetAttribute("x");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    x = int.Parse(tmpArgVal);
                }
                tmpArgVal = effect.GetAttribute("y");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    y = int.Parse(tmpArgVal);
                }

                // Add the new move NPC effect
                currentEffect = new MoveNPCEffect(npcTarget, x, y);
                break;

            case "random-effect":
                int probability = 0;

                tmpArgVal = effect.GetAttribute("probability");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    probability = int.Parse(tmpArgVal);
                }

                // Add the new random effect
                randomEffect = new RandomEffect(probability);

                Effects randomEffectList = new Effects();

                new EffectSubParser_(randomEffectList, this.chapter).ParseElement(effect);

                randomEffect.setPositiveEffect(randomEffectList.getEffects() [0]);
                randomEffect.setNegativeEffect(randomEffectList.getEffects() [1]);

                currentEffect = randomEffect;
                break;

            case "wait-time":
                int time = 0;

                tmpArgVal = effect.GetAttribute("time");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    time = int.Parse(tmpArgVal);
                }

                // Add the new move NPC effect
                currentEffect = new WaitTimeEffect(time);
                break;

            case "show-text":
                x           = 0;
                y           = 0;
                frontColor  = 0;
                borderColor = 0;
                audioPath   = "";
                tmpArgVal   = effect.GetAttribute("x");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    x = int.Parse(tmpArgVal);
                }
                tmpArgVal = effect.GetAttribute("y");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    y = int.Parse(tmpArgVal);
                }
                tmpArgVal = effect.GetAttribute("frontColor");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    frontColor = int.Parse(tmpArgVal);
                }
                tmpArgVal = effect.GetAttribute("borderColor");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    borderColor = int.Parse(tmpArgVal);
                }
                tmpArgVal = effect.GetAttribute("uri");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    audioPath = tmpArgVal;
                }

                // Add the new ShowTextEffect
                currentEffect = new ShowTextEffect(effect.InnerText.ToString().Trim(), x, y, frontColor.ToString(), borderColor.ToString());
                ((ShowTextEffect)currentEffect).setAudioPath(audioPath);
                break;

            case "highlight-item":
                int type = 0;
                id       = "";
                animated = false;

                tmpArgVal = effect.GetAttribute("idTarget");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    id = tmpArgVal;
                }

                tmpArgVal = effect.GetAttribute("animated");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    animated = (tmpArgVal.Equals("yes") ? true : false);
                }

                tmpArgVal = effect.GetAttribute("type");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    if (tmpArgVal.Equals("none"))
                    {
                        type = HighlightItemEffect.NO_HIGHLIGHT;
                    }
                    if (tmpArgVal.Equals("green"))
                    {
                        type = HighlightItemEffect.HIGHLIGHT_GREEN;
                    }
                    if (tmpArgVal.Equals("red"))
                    {
                        type = HighlightItemEffect.HIGHLIGHT_RED;
                    }
                    if (tmpArgVal.Equals("blue"))
                    {
                        type = HighlightItemEffect.HIGHLIGHT_BLUE;
                    }
                    if (tmpArgVal.Equals("border"))
                    {
                        type = HighlightItemEffect.HIGHLIGHT_BORDER;
                    }
                }
                currentEffect = new HighlightItemEffect(id, type, animated);
                break;

            case "move-object":
                float scale          = 1.0f;
                int   translateSpeed = 20;
                int   scaleSpeed     = 20;
                x        = 0;
                y        = 0;
                id       = "";
                animated = false;

                tmpArgVal = effect.GetAttribute("idTarget");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    id = tmpArgVal;
                }
                tmpArgVal = effect.GetAttribute("animated");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    animated = (tmpArgVal.Equals("yes") ? true : false);
                }

                tmpArgVal = effect.GetAttribute("x");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    x = int.Parse(tmpArgVal);
                }

                tmpArgVal = effect.GetAttribute("y");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    y = int.Parse(tmpArgVal);
                }

                tmpArgVal = effect.GetAttribute("scale");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    scale = float.Parse(tmpArgVal, CultureInfo.InvariantCulture);
                }

                tmpArgVal = effect.GetAttribute("translateSpeed");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    translateSpeed = int.Parse(tmpArgVal);
                }

                tmpArgVal = effect.GetAttribute("scaleSpeed");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    scaleSpeed = int.Parse(tmpArgVal);
                }
                currentEffect = new MoveObjectEffect(id, x, y, scale, animated, translateSpeed, scaleSpeed);
                break;

            case "speak-player":
                audioPath = "";

                tmpArgVal = effect.GetAttribute("uri");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    audioPath = tmpArgVal;
                }

                // Add the effect and clear the current string
                currentEffect = new SpeakPlayerEffect(effect.InnerText.ToString().Trim());
                break;

            case "condition":
                addeffect         = false;
                currentConditions = new Conditions();
                new ConditionSubParser_(currentConditions, chapter).ParseElement(effect);
                currentEffect.setConditions(currentConditions);

                effectlist = effects.getEffects();
                effectlist[effectlist.Count - 1].setConditions(currentConditions);
                break;

            case "documentation":
                addeffect = false;
                break;

            default:
                addeffect = false;
                Debug.LogWarning("EFFECT NOT SUPPORTED: " + effect.Name);
                break;
            }

            if (addeffect)
            {
                effects.add(currentEffect);
            }
        }
    }
コード例 #4
0
        public override bool doTool()
        {
            bool effectEdited = false;

            EffectType effectType = effect.getType();

            // If a change has been made
            if (newProperties != null)
            {
                effectEdited = true;
                oldEffect    = (AbstractEffect)effect;

                switch (effectType)
                {
                case EffectType.ACTIVATE:
                    ActivateEffect activateEffect = (ActivateEffect)effect;
                    activateEffect.setTargetId((string)newProperties[EffectsController.EFFECT_PROPERTY_TARGET]);
                    Controller.getInstance().updateVarFlagSummary();
                    break;

                case EffectType.DEACTIVATE:
                    DeactivateEffect deactivateEffect = (DeactivateEffect)effect;
                    deactivateEffect.setTargetId((string)newProperties[EffectsController.EFFECT_PROPERTY_TARGET]);
                    Controller.getInstance().updateVarFlagSummary();
                    break;

                case EffectType.SET_VALUE:
                    SetValueEffect setValueEffect = (SetValueEffect)effect;
                    setValueEffect.setTargetId((string)newProperties[EffectsController.EFFECT_PROPERTY_TARGET]);
                    setValueEffect.setValue(int.Parse((string)newProperties[EffectsController.EFFECT_PROPERTY_VALUE]));
                    Controller.getInstance().updateVarFlagSummary();
                    break;

                case EffectType.INCREMENT_VAR:
                    IncrementVarEffect incrementVarEffect = (IncrementVarEffect)effect;
                    incrementVarEffect.setTargetId((string)newProperties[EffectsController.EFFECT_PROPERTY_TARGET]);
                    incrementVarEffect.setIncrement(int.Parse((string)newProperties[EffectsController.EFFECT_PROPERTY_VALUE]));
                    Controller.getInstance().updateVarFlagSummary();
                    break;

                case EffectType.DECREMENT_VAR:
                    DecrementVarEffect decrementVarEffect = (DecrementVarEffect)effect;
                    decrementVarEffect.setTargetId((string)newProperties[EffectsController.EFFECT_PROPERTY_TARGET]);
                    decrementVarEffect.setDecrement(int.Parse((string)newProperties[EffectsController.EFFECT_PROPERTY_VALUE]));
                    Controller.getInstance().updateVarFlagSummary();
                    break;

                case EffectType.MACRO_REF:
                    MacroReferenceEffect macroEffect = (MacroReferenceEffect)effect;
                    macroEffect.setTargetId((string)newProperties[EffectsController.EFFECT_PROPERTY_TARGET]);
                    break;

                case EffectType.CONSUME_OBJECT:
                    ConsumeObjectEffect consumeObjectEffect = (ConsumeObjectEffect)effect;
                    consumeObjectEffect.setTargetId((string)newProperties[EffectsController.EFFECT_PROPERTY_TARGET]);
                    break;

                case EffectType.GENERATE_OBJECT:
                    GenerateObjectEffect generateObjectEffect = (GenerateObjectEffect)effect;
                    generateObjectEffect.setTargetId((string)newProperties[EffectsController.EFFECT_PROPERTY_TARGET]);
                    break;

                case EffectType.SPEAK_PLAYER:
                    SpeakPlayerEffect speakPlayerEffect = (SpeakPlayerEffect)effect;
                    speakPlayerEffect.setLine((string)newProperties[EffectsController.EFFECT_PROPERTY_TEXT]);
                    speakPlayerEffect.setAudioPath((string)newProperties[EffectsController.EFFECT_PROPERTY_PATH]);
                    break;

                case EffectType.SPEAK_CHAR:
                    SpeakCharEffect speakCharEffect = (SpeakCharEffect)effect;
                    speakCharEffect.setTargetId((string)newProperties[EffectsController.EFFECT_PROPERTY_TARGET]);
                    speakCharEffect.setLine((string)newProperties[EffectsController.EFFECT_PROPERTY_TEXT]);
                    speakCharEffect.setAudioPath((string)newProperties[EffectsController.EFFECT_PROPERTY_PATH]);
                    break;

                case EffectType.TRIGGER_BOOK:
                    TriggerBookEffect triggerBookEffect = (TriggerBookEffect)effect;
                    triggerBookEffect.setTargetId((string)newProperties[EffectsController.EFFECT_PROPERTY_TARGET]);
                    break;

                case EffectType.PLAY_SOUND:
                    PlaySoundEffect playSoundEffect = (PlaySoundEffect)effect;
                    playSoundEffect.setPath((string)newProperties[EffectsController.EFFECT_PROPERTY_PATH]);
                    playSoundEffect.setBackground(bool.Parse((string)newProperties[EffectsController.EFFECT_PROPERTY_BACKGROUND]));
                    break;

                case EffectType.PLAY_ANIMATION:
                    PlayAnimationEffect playAnimationEffect = (PlayAnimationEffect)effect;
                    playAnimationEffect.setPath((string)newProperties[EffectsController.EFFECT_PROPERTY_PATH]);
                    playAnimationEffect.setDestiny(int.Parse((string)newProperties[EffectsController.EFFECT_PROPERTY_X]), int.Parse((string)newProperties[EffectsController.EFFECT_PROPERTY_Y]));
                    break;

                case EffectType.MOVE_PLAYER:
                    MovePlayerEffect movePlayerEffect = (MovePlayerEffect)effect;
                    movePlayerEffect.setDestiny(int.Parse((string)newProperties[EffectsController.EFFECT_PROPERTY_X]), int.Parse((string)newProperties[EffectsController.EFFECT_PROPERTY_Y]));
                    break;

                case EffectType.MOVE_NPC:
                    MoveNPCEffect moveNPCEffect = (MoveNPCEffect)effect;
                    moveNPCEffect.setTargetId((string)newProperties[EffectsController.EFFECT_PROPERTY_TARGET]);
                    moveNPCEffect.setDestiny(int.Parse((string)newProperties[EffectsController.EFFECT_PROPERTY_X]), int.Parse((string)newProperties[EffectsController.EFFECT_PROPERTY_Y]));
                    break;

                case EffectType.TRIGGER_CONVERSATION:
                    TriggerConversationEffect triggerConversationEffect = (TriggerConversationEffect)effect;
                    triggerConversationEffect.setTargetId((string)newProperties[EffectsController.EFFECT_PROPERTY_TARGET]);
                    break;

                case EffectType.TRIGGER_CUTSCENE:
                    TriggerCutsceneEffect triggerCutsceneEffect = (TriggerCutsceneEffect)effect;
                    triggerCutsceneEffect.setTargetId((string)newProperties[EffectsController.EFFECT_PROPERTY_TARGET]);
                    break;

                case EffectType.TRIGGER_SCENE:
                    TriggerSceneEffect triggerSceneEffect = (TriggerSceneEffect)effect;
                    triggerSceneEffect.setTargetId((string)newProperties[EffectsController.EFFECT_PROPERTY_TARGET]);
                    triggerSceneEffect.setPosition(int.Parse((string)newProperties[EffectsController.EFFECT_PROPERTY_X]), int.Parse((string)newProperties[EffectsController.EFFECT_PROPERTY_Y]));
                    break;

                case EffectType.RANDOM_EFFECT:
                    RandomEffect randomEffect = (RandomEffect)effect;
                    randomEffect.setProbability(int.Parse((string)newProperties[EffectsController.EFFECT_PROPERTY_PROBABILITY]));
                    randomEffect.setPositiveEffect(pos);
                    randomEffect.setNegativeEffect(neg);
                    break;

                case EffectType.WAIT_TIME:
                    WaitTimeEffect waitTimeEffect = (WaitTimeEffect)effect;
                    waitTimeEffect.setTime(int.Parse((string)newProperties[EffectsController.EFFECT_PROPERTY_TIME]));
                    break;

                case EffectType.SHOW_TEXT:
                    ShowTextEffect showTextEffect = (ShowTextEffect)effect;
                    showTextEffect.setText((string)newProperties[EffectsController.EFFECT_PROPERTY_TEXT]);
                    showTextEffect.setTextPosition(int.Parse((string)newProperties[EffectsController.EFFECT_PROPERTY_X]), int.Parse((string)newProperties[EffectsController.EFFECT_PROPERTY_Y]));
                    showTextEffect.setRgbFrontColor((string)newProperties[EffectsController.EFFECT_PROPERTY_FRONT_COLOR]);
                    showTextEffect.setRgbBorderColor((string)newProperties[EffectsController.EFFECT_PROPERTY_BORDER_COLOR]);
                    showTextEffect.setAudioPath((string)newProperties[EffectsController.EFFECT_PROPERTY_PATH]);
                    break;

                case EffectType.HIGHLIGHT_ITEM:
                    HighlightItemEffect highlightItemEffect = (HighlightItemEffect)effect;
                    highlightItemEffect.setTargetId((string)newProperties[EffectsController.EFFECT_PROPERTY_TARGET]);
                    highlightItemEffect.setHighlightAnimated((bool)newProperties[EffectsController.EFFECT_PROPERTY_ANIMATED]);
                    highlightItemEffect.setHighlightType((int)newProperties[EffectsController.EFFECT_PROPERTY_HIGHLIGHT_TYPE]);
                    break;

                case EffectType.MOVE_OBJECT:
                    MoveObjectEffect moveObjectEffect = (MoveObjectEffect)effect;
                    moveObjectEffect.setTargetId((string)newProperties[EffectsController.EFFECT_PROPERTY_TARGET]);
                    moveObjectEffect.setX(int.Parse((string)newProperties[EffectsController.EFFECT_PROPERTY_X]));
                    moveObjectEffect.setY(int.Parse((string)newProperties[EffectsController.EFFECT_PROPERTY_Y]));
                    moveObjectEffect.setScale((float)newProperties[EffectsController.EFFECT_PROPERTY_SCALE]);
                    moveObjectEffect.setAnimated((bool)newProperties[EffectsController.EFFECT_PROPERTY_ANIMATED]);
                    moveObjectEffect.setScaleSpeed((int)newProperties[EffectsController.EFFECT_PROPERTY_SCALE_SPEED]);
                    moveObjectEffect.setTranslateSpeed((int)newProperties[EffectsController.EFFECT_PROPERTY_TRANSLATION_SPEED]);
                    break;
                }
                effectEdited = true;
                Controller.getInstance().updatePanel();
            }

            return(effectEdited);
        }
コード例 #5
0
    public override void ParseElement(XmlElement element)
    {
        string tmpArgVal;
        int x = 0;
        int y = 0;
        string path = "";
        string id = "";
        bool animated = false, addeffect = true;
        List<AbstractEffect> effectlist;

        foreach (XmlElement effect in element.ChildNodes) {
            addeffect = true;

            switch (effect.Name) {
            case "cancel-action": currentEffect = new CancelActionEffect(); break;
            case "activate":
            case "deactivate":
                tmpArgVal = effect.GetAttribute ("flag");
                if (!string.IsNullOrEmpty (tmpArgVal)) {
                    chapter.addFlag (tmpArgVal);
                }

                if (effect.Name == "activate")
                    currentEffect = new ActivateEffect (tmpArgVal);
                else
                    currentEffect = new DeactivateEffect (tmpArgVal);
                break;
            case "set-value":
            case "increment":
            case "decrement":
                string var = null;
                int value = 0;

                tmpArgVal = effect.GetAttribute("var");
                if (!string.IsNullOrEmpty(tmpArgVal)){
                    var = tmpArgVal;
                }
                tmpArgVal = effect.GetAttribute("value");
                if (!string.IsNullOrEmpty(tmpArgVal)){
                    value = int.Parse(tmpArgVal);
                }
                if(effect.Name == "set-value")
                    currentEffect = new SetValueEffect(var, value);
                else if(effect.Name == "increment")
                    currentEffect = new IncrementVarEffect(var, value);
                else
                    currentEffect = new DecrementVarEffect(var, value);

                chapter.addVar(var);
                break;
            case "macro-ref":
                id = "";
                tmpArgVal = effect.GetAttribute("id");
                if (!string.IsNullOrEmpty(tmpArgVal)){
                    id = tmpArgVal;
                }
                currentEffect = new MacroReferenceEffect(id);
                break;
            case "speak-char":
                audioPath = "";
                currentCharIdTarget = null;

                tmpArgVal = effect.GetAttribute("idTarget");
                if (!string.IsNullOrEmpty(tmpArgVal)){
                    currentCharIdTarget = tmpArgVal;
                }

                tmpArgVal = effect.GetAttribute("uri");
                if (!string.IsNullOrEmpty(tmpArgVal)){
                    audioPath = tmpArgVal;
                }

                // Add the effect and clear the current string
                currentEffect = new SpeakCharEffect(currentCharIdTarget, effect.InnerText.ToString().Trim());
                ((SpeakCharEffect) currentEffect).setAudioPath(audioPath);
                break;
            case "trigger-last-scene":
                currentEffect = new TriggerLastSceneEffect();
                break;
            case "play-sound":
                // Store the path and background
                bool background = true;
                path = "";

                tmpArgVal = effect.GetAttribute("background");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    background = tmpArgVal.Equals("yes");
                }
                tmpArgVal = effect.GetAttribute("uri");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    path = tmpArgVal;
                }

                // Add the new play sound effect
                currentEffect = new PlaySoundEffect(background, path);
                break;

            case "consume-object":
            case "generate-object":
            case "trigger-book":
            case "trigger-conversation":
            case "trigger-cutscene":
                tmpArgVal = effect.GetAttribute ("idTarget");
                if (!string.IsNullOrEmpty (tmpArgVal))
                    switch (effect.Name) {
                    case "consume-object": currentEffect = new ConsumeObjectEffect (tmpArgVal); break;
                    case "generate-object": currentEffect = new GenerateObjectEffect (tmpArgVal); break;
                    case "trigger-book": currentEffect = new TriggerBookEffect (tmpArgVal); break;
                    case "trigger-conversation": currentEffect = new TriggerConversationEffect (tmpArgVal); break;
                    case "trigger-cutscene": currentEffect = new TriggerCutsceneEffect (tmpArgVal); break;
                    }
                break;
            case "trigger-scene":
                x = 0;
                y = 0;
                string scene = "";
                tmpArgVal = effect.GetAttribute("idTarget");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    scene = tmpArgVal;
                }
                tmpArgVal = effect.GetAttribute("x");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    x = int.Parse(tmpArgVal);
                }
                tmpArgVal = effect.GetAttribute("y");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    y = int.Parse(tmpArgVal);
                }

                currentEffect = new TriggerSceneEffect(scene, x, y);
                break;
            case "play-animation":
                x = 0;
                y = 0;
                path = "";

                tmpArgVal = effect.GetAttribute("uri");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    path = tmpArgVal;
                }
                tmpArgVal = effect.GetAttribute("x");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    x = int.Parse(tmpArgVal);
                }
                tmpArgVal = effect.GetAttribute("y");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    y = int.Parse(tmpArgVal);
                }

                // Add the new play sound effect
                currentEffect = new PlayAnimationEffect(path, x, y);
                break;
            case "move-player":
                x = 0;
                y = 0;
                tmpArgVal = effect.GetAttribute("x");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    x = int.Parse(tmpArgVal);
                }
                tmpArgVal = effect.GetAttribute("y");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    y = int.Parse(tmpArgVal);
                }

                // Add the new move player effect
                currentEffect = new MovePlayerEffect(x, y);
                break;
            case "move-npc":
                x = 0;
                y = 0;
                string npcTarget = "";
                tmpArgVal = effect.GetAttribute("idTarget");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    npcTarget = tmpArgVal;
                }
                tmpArgVal = effect.GetAttribute("x");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    x = int.Parse(tmpArgVal);
                }
                tmpArgVal = effect.GetAttribute("y");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    y = int.Parse(tmpArgVal);
                }

                // Add the new move NPC effect
                currentEffect = new MoveNPCEffect(npcTarget, x, y);
                break;
            case "random-effect":
                int probability = 0;

                tmpArgVal = effect.GetAttribute ("probability");
                if (!string.IsNullOrEmpty (tmpArgVal)) {
                    probability = int.Parse (tmpArgVal);
                }

                // Add the new random effect
                randomEffect = new RandomEffect (probability);

                Effects randomEffectList = new Effects ();

                new EffectSubParser_ (randomEffectList, this.chapter).ParseElement (effect);

                randomEffect.setPositiveEffect (randomEffectList.getEffects () [0]);
                randomEffect.setNegativeEffect (randomEffectList.getEffects () [1]);

                currentEffect = randomEffect;
                break;
            case "wait-time":
                int time = 0;

                tmpArgVal = effect.GetAttribute("time");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    time = int.Parse(tmpArgVal);
                }

                // Add the new move NPC effect
                currentEffect = new WaitTimeEffect(time);
                break;
            case "show-text":
                x = 0;
                y = 0;
                frontColor = 0;
                borderColor = 0;
                audioPath = "";
                tmpArgVal = effect.GetAttribute("x");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    x = int.Parse(tmpArgVal);
                }
                tmpArgVal = effect.GetAttribute("y");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    y = int.Parse(tmpArgVal);
                }
                tmpArgVal = effect.GetAttribute("frontColor");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    frontColor = int.Parse(tmpArgVal);
                }
                tmpArgVal = effect.GetAttribute("borderColor");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    borderColor = int.Parse(tmpArgVal);
                }
                tmpArgVal = effect.GetAttribute("uri");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    audioPath = tmpArgVal;
                }

                // Add the new ShowTextEffect
                currentEffect = new ShowTextEffect(effect.InnerText.ToString().Trim(), x, y, frontColor, borderColor);
                ((ShowTextEffect) currentEffect).setAudioPath(audioPath);
                break;
            case "highlight-item":
                int type = 0;
                id = "";
                animated = false;

                tmpArgVal = effect.GetAttribute("idTarget");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    id = tmpArgVal;
                }

                tmpArgVal = effect.GetAttribute("animated");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    animated = (tmpArgVal.Equals("yes") ? true : false);
                }

                tmpArgVal = effect.GetAttribute("type");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    if (tmpArgVal.Equals("none"))
                        type = HighlightItemEffect.NO_HIGHLIGHT;
                    if (tmpArgVal.Equals("green"))
                        type = HighlightItemEffect.HIGHLIGHT_GREEN;
                    if (tmpArgVal.Equals("red"))
                        type = HighlightItemEffect.HIGHLIGHT_RED;
                    if (tmpArgVal.Equals("blue"))
                        type = HighlightItemEffect.HIGHLIGHT_BLUE;
                    if (tmpArgVal.Equals("border"))
                        type = HighlightItemEffect.HIGHLIGHT_BORDER;
                }
                currentEffect = new HighlightItemEffect(id, type, animated);
                break;
            case "move-object":
                float scale = 1.0f;
                int translateSpeed = 20;
                int scaleSpeed = 20;
                x = 0;
                y = 0;
                id = "";
                animated = false;

                tmpArgVal = effect.GetAttribute("idTarget");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    id = tmpArgVal;
                }
                tmpArgVal = effect.GetAttribute("animated");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    animated = (tmpArgVal.Equals("yes") ? true : false);
                }

                tmpArgVal = effect.GetAttribute("x");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    x = int.Parse(tmpArgVal);
                }

                tmpArgVal = effect.GetAttribute("y");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    y = int.Parse(tmpArgVal);
                }

                tmpArgVal = effect.GetAttribute("scale");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    scale = float.Parse(tmpArgVal, CultureInfo.InvariantCulture);
                }

                tmpArgVal = effect.GetAttribute("translateSpeed");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    translateSpeed = int.Parse(tmpArgVal);
                }

                tmpArgVal = effect.GetAttribute("scaleSpeed");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    scaleSpeed = int.Parse(tmpArgVal);
                }
                currentEffect = new MoveObjectEffect(id, x, y, scale, animated, translateSpeed, scaleSpeed);
                break;
            case "speak-player":
                audioPath = "";

                tmpArgVal = effect.GetAttribute("uri");
                if (!string.IsNullOrEmpty(tmpArgVal))
                {
                    audioPath = tmpArgVal;
                }

                // Add the effect and clear the current string
                currentEffect = new SpeakPlayerEffect(effect.InnerText.ToString().Trim());
                break;
            case "condition":
                addeffect = false;
                currentConditions = new Conditions ();
                new ConditionSubParser_ (currentConditions, chapter).ParseElement (effect);
                currentEffect.setConditions (currentConditions);

                effectlist = effects.getEffects ();
                effectlist[effectlist.Count-1].setConditions (currentConditions);
                break;
            case "documentation":
                addeffect = false;
                break;
            default:
                addeffect = false;
                Debug.LogWarning ("EFFECT NOT SUPPORTED: " + effect.Name);
                break;
            }

            if(addeffect)
                effects.add(currentEffect);
        }
    }