Example #1
0
        //Return the event name followed by each parameter paired with its type.
        public string GetDefaultSyntax(Event eventData)
        {
            string script = GetEventInfo(eventData.eventEvent)._name + (eventData.lParameters > 0 ? ": " : "");

            for (int i = 0; i < eventData.lParameters; i++)
            {
                script += eventData.parameters[i]._type + "-";
                switch ((int)eventData.parameters[i]._type)
                {
                case 0: script += GetValue(eventData.eventEvent, i, eventData.parameters[i]._data); break;

                case 1: script += MParams.UnScalar(eventData.parameters[i]._data).ToString(); break;

                case 2: script += ResolvePointer(eventData.pParameters + i * 8 + 4, eventData.parameters[i]); break;

                case 3: script += (eventData.parameters[i]._data != 0 ? "true" : "false"); break;

                case 4: script += MParams.Hex(eventData.parameters[i]._data); break;

                case 5: script += ResolveVariable(eventData.parameters[i]._data); break;

                case 6: script += GetRequirement(eventData.parameters[i]._data); break;
                }
                if (i != eventData.lParameters)
                {
                    script += ", ";
                }
            }
            return(script);
        }
Example #2
0
        //Return a string of the parameter in the format corresponding to it's type.
        public string[] ResolveParamTypes(Event eventData)
        {
            string[] p = new string[eventData.parameters.Length];

            for (int i = 0; i < p.Length; i++)
            {
                switch ((int)eventData.parameters[i]._type)
                {
                case 0: p[i] = GetValue(eventData.eventEvent, i, eventData.parameters[i]._data); break;

                case 1: p[i] = MParams.UnScalar(eventData.parameters[i]._data).ToString(); break;

                case 2: p[i] = ResolvePointer(eventData.pParameters + i * 8 + 4, eventData.parameters[i]); break;

                case 3: p[i] = (eventData.parameters[i]._data != 0 ? "true" : "false"); break;

                case 4: p[i] = MParams.Hex(eventData.parameters[i]._data); break;

                case 5: p[i] = ResolveVariable(eventData.parameters[i]._data); break;

                case 6: p[i] = GetRequirement(eventData.parameters[i]._data); break;
                }
            }
            return(p);
        }
Example #3
0
        //Display the selected parameter's value, type and description.
        private void DisplayParameter(int index)
        {
            param = eventData.Children[index] as MoveDefEventParameterNode;

            cboType.Enabled = true;
            try { cboType.SelectedIndex = (int)param._type; }
            catch { cboType.SelectedIndex = -1; cboType.Text = "(" + MParams.Hex((int)param._type) + ")"; }
            DisplayInType(param);

            lblParamDescription.Text = param.Description;
        }
Example #4
0
        //Return the requirement corresponding to the value passed.
        public string GetRequirement(long value)
        {
            bool not         = (value & 0x80000000) == 0x80000000;
            long requirement = value & 0xFF;

            if (requirement > iRequirements.Length)
            {
                return(MParams.Hex(requirement));
            }

            if (not == true)
            {
                return("Not " + iRequirements[requirement]);
            }

            return(iRequirements[requirement]);
        }
Example #5
0
        public string GetValue(long eventId, int index, long value)
        {
            string s = null;

            switch (eventId)
            {
            case 0x04000100:
            case 0x04000200:
                if (index == 0)
                {
                    if (TargetNode.Parent != null && TargetNode.Parent.Parent != null && TargetNode.Parent.Parent.Name.StartsWith("Article"))
                    {
                        ResourceNode sa = TargetNode.Parent.Parent.FindChild("SubActions", false);
                        if (sa != null)
                        {
                            return(sa.Children[(int)value].Name);
                        }
                    }
                    else if (value < TargetNode.Root._subActions.Children.Count && value >= 0)
                    {
                        return(TargetNode.Root._subActions.Children[(int)value].Name);
                    }
                    else
                    {
                        return(((int)value).ToString());
                    }
                }
                break;
                //case 0x02010200:
                //case 0x02010300:
                //case 0x02010500:
                //    if (index == 0)
                //        if (TargetNode.Parent != null && TargetNode.Parent.Parent != null && TargetNode.Parent.Parent.Name.StartsWith("Article"))
                //        {
                //            ResourceNode sa = TargetNode.Parent.Parent.FindChild("Actions", false);
                //            if (sa != null)
                //                return sa.Children[(int)value].Name;
                //        }
                //        else if (value < TargetNode.Root._actions.Children.Count)
                //            return TargetNode.Root._actions.Children[(int)value].Name;
                //    break;
            }
            return(s == null?MParams.Hex((int)value) : s);
        }
Example #6
0
        //Return the name of the external pointer corresponding to the address if
        //one is available, otherwise return the string of the value passed.
        public string ResolvePointer(long pointer, Param parameter)
        {
            MoveDefExternalNode ext;

            if ((ext = _targetNode.Root.IsExternal((int)pointer)) != null || (ext = _targetNode.Root.IsExternal((int)parameter._data)) != null)
            {
                return("External: " + ext.Name);
            }

            int list, type, index;

            _targetNode.Root.GetLocation((int)parameter._data, out list, out type, out index);

            if (list == 4)
            {
                return("0x" + MParams.Hex(parameter._data));
            }
            else
            {
                string name = "", t = "", grp = "";
                switch (list)
                {
                case 0:
                    grp  = "Actions";
                    name = _targetNode.Root._actions.Children[index].Name;
                    switch (type)
                    {
                    case 0: t = "Entry"; break;

                    case 1: t = "Exit"; break;
                    }
                    break;

                case 1:
                    grp  = "SubActions";
                    name = _targetNode.Root._subActions.Children[index].Name;
                    switch (type)
                    {
                    case 0: t = "Main"; break;

                    case 1: t = "GFX"; break;

                    case 2: t = "SFX"; break;

                    case 3: t = "Other"; break;
                    }
                    break;

                case 2:
                    grp  = "SubRoutines";
                    name = _targetNode.Root._subRoutineList[index].Name;
                    break;

                case 3:
                    grp  = "References";
                    name = _targetNode.Root.references.Children[index].Name;
                    break;
                }

                return(name + (list >= 2 ? "" : " - " + t) + " in the " + grp + " list");
            }
        }
Example #7
0
        //Return the string result from the passed keyword and its parameters.
        public string ResolveKeyword(string keyword, string[] Params, Event eventData)
        {
            switch (keyword)
            {
            case "\\value":
                try { return(ResolveParamTypes(eventData)[int.Parse(Params[0])]); }
                catch { return("Value-" + Params[0]); }

            case "\\type":
                try { return(eventData.parameters[int.Parse(Params[0])]._type.ToString()); }
                catch { return("Type-" + Params[0]); }

            case "\\if":
                bool compare = false;
                try
                {
                    switch (Params[1])
                    {
                    case "==": compare = int.Parse(Params[0]) == int.Parse(Params[2]); break;

                    case "!=": compare = int.Parse(Params[0]) != int.Parse(Params[2]); break;

                    case ">=": compare = int.Parse(Params[0]) >= int.Parse(Params[2]); break;

                    case "<=": compare = int.Parse(Params[0]) <= int.Parse(Params[2]); break;

                    case ">": compare = int.Parse(Params[0]) > int.Parse(Params[2]); break;

                    case "<": compare = int.Parse(Params[0]) < int.Parse(Params[2]); break;
                    }
                }
                finally { }
                if (compare)
                {
                    return(Params[3]);
                }
                else
                {
                    return(Params[4]);
                }

            case "\\bone":
                try
                {
                    int id = MParams.UnHex(Params[0]);
                    if (id >= 400)
                    {
                        id -= 400;
                    }
                    if (_targetNode.Model != null && _targetNode.Model._linker.BoneCache != null && _targetNode.Model._linker.BoneCache.Length > id && id >= 0)
                    {
                        return(_targetNode.Model._linker.BoneCache[id].Name);
                    }
                    else
                    {
                        return(id.ToString());
                    }
                }
                catch { return(int.Parse(Params[0]).ToString()); }

            case "\\unhex":
                try { return(MParams.UnHex(Params[0]).ToString()); }
                catch { return(Params[0]); }

            case "\\hex":
                try { return(MParams.Hex(int.Parse(Params[0]))); }
                catch { return(Params[0]); }

            case "\\hex8":
                try { return(MParams.Hex8(int.Parse(Params[0]))); }
                catch { return(Params[0]); }

            case "\\half1":
                return(MParams.WordH(Params[0], 0));

            case "\\half2":
                return(MParams.WordH(Params[0], 1));

            case "\\byte1":
                return(MParams.WordB(Params[0], 0));

            case "\\byte2":
                return(MParams.WordB(Params[0], 1));

            case "\\byte3":
                return(MParams.WordB(Params[0], 2));

            case "\\byte4":
                return(MParams.WordB(Params[0], 3));

            case "\\collision":
                try { return(GetCollisionStatus(MParams.UnHex(Params[0]))); }
                catch { return(Params[0]); }

            case "\\airground":
                try { return(GetAirGroundStatus(MParams.UnHex(Params[0]))); }
                catch { return(Params[0]); }

            case "\\enum":
                try { return(GetEnum(int.Parse(Params[1]), MParams.UnHex(Params[0]), eventData)); }
                catch { return("Undefined(" + Params[1] + ")"); }

            case "\\cmpsign":
                try { return(MParams.GetComparisonSign(MParams.UnHex(Params[0]))); }
                catch { return(Params[0]); }

            case "\\name":
                return(GetEventInfo(eventData.eventEvent)._name);

            case "\\white":
                return(" ");

            default:
                return("");
            }
        }