Пример #1
0
        KmtEntry cloneentry(KmtEntry entry)
        {
            KmtEntry newentry = new KmtEntry();

            newentry.CameraMode            = entry.CameraMode;
            newentry.CannonFlag            = entry.CannonFlag;
            newentry.Character             = entry.Character;
            newentry.ControllerRestriction = entry.ControllerRestriction;
            newentry.Course         = entry.Course;
            newentry.EngineClass    = entry.EngineClass;
            newentry.GameMode       = entry.GameMode;
            newentry.Minimap        = entry.Minimap;
            newentry.MissionRunFile = entry.MissionRunFile;
            newentry.Score          = entry.Score;
            newentry.TimeLimit      = entry.TimeLimit;
            newentry.Vehicle        = entry.Vehicle;
            for (int m = 0; m < entry.CPUs.Count; m += 1)
            {
                KmtCPUEntry cpu    = entry.CPUs[m];
                KmtCPUEntry newcpu = new KmtCPUEntry();
                newcpu.Character = cpu.Character;
                newcpu.Vehicle   = cpu.Vehicle;
                newentry.CPUs.Add(cpu);
            }
            return(newentry);
        }
Пример #2
0
        void mission_move(bool movedown)
        {
            int oldindex = tv_Missions.SelectedNode.Index;
            int newindex;

            if (movedown)
            {
                newindex = oldindex + 1;
            }
            else
            {
                newindex = oldindex - 1;
            }
            TreeNode oldnode  = tv_Missions.Nodes[oldindex];
            TreeNode newnode  = tv_Missions.Nodes[newindex];
            string   curtext  = oldnode.Text;
            string   swptext  = newnode.Text;
            KmtEntry curentry = nodemission[oldnode];
            KmtEntry swpentry = nodemission[newnode];

            newnode.Text             = curtext;
            oldnode.Text             = swptext;
            nodemission[newnode]     = curentry;
            nodemission[oldnode]     = swpentry;
            tv_Missions.SelectedNode = newnode;
            starttimer();
            updatebuttons();
        }
        public static void CopyCheatCodeToClipboard(KmtEntry mission, int region)
        {
            string missionmode = getcode(region);

            missionmode = missionmode.Replace("MM",
                                              bytetostring(missioncode(mission))
                                              );
            Clipboard.SetText(missionmode);
        }
Пример #4
0
        bool usermadechanges()
        {
            KmtEntryList entrylist = msv_Program.Missions();

            if (openkmt == null)
            {
                return(entrylist.Count > 0);
            }

            if (entrylist.Count != openkmt.Entries.Count)
            {
                return(true);
            }

            for (int n = 0; n < entrylist.Count; n += 1)
            {
                KmtEntry newentry = entrylist[n];
                KmtEntry oldentry = openkmt.Entries[n];
                if (
                    newentry.CameraMode != oldentry.CameraMode |
                    newentry.CannonFlag != oldentry.CannonFlag |
                    newentry.Character != oldentry.Character |
                    newentry.ControllerRestriction != oldentry.ControllerRestriction |
                    newentry.Course != oldentry.Course |
                    newentry.EngineClass != oldentry.EngineClass |
                    newentry.GameMode != oldentry.GameMode |
                    newentry.Minimap != oldentry.Minimap |
                    newentry.MissionRunFile != oldentry.MissionRunFile |
                    newentry.Score != oldentry.Score |
                    newentry.TimeLimit != oldentry.TimeLimit |
                    newentry.Vehicle != oldentry.Vehicle
                    )
                {
                    return(true);
                }

                if (newentry.CPUs.Count != oldentry.CPUs.Count)
                {
                    return(true);
                }

                for (int m = 0; m < newentry.CPUs.Count; m += 1)
                {
                    KmtCPUEntry newcpu = newentry.CPUs[m];
                    KmtCPUEntry oldcpu = newentry.CPUs[m];
                    if (newcpu.Character != oldcpu.Character |
                        newcpu.Vehicle != oldcpu.Vehicle)
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Пример #5
0
        void mission_add()
        {
            KmtEntry newentry      = new KmtEntry();
            int      section_index = tv_Missions.Nodes.Count / 8;
            int      mission_index = tv_Missions.Nodes.Count % 8;
            TreeNode mission       = new TreeNode(String.Format(
                                                      "{0} - {1}"
                                                      , section_index + 1, mission_index + 1));

            nodemission.Add(mission, newentry);
            tv_Missions.Nodes.Add(mission);
            updatebuttons();
            tv_Missions.SelectedNode = mission;
        }
Пример #6
0
 public void LoadKmt(Kmt kmt)
 {
     clear();
     for (int n = 0; n < kmt.Entries.Count; n += 1)
     {
         KmtEntry entry         = kmt.Entries[n];
         KmtEntry newentry      = cloneentry(entry);
         int      section_index = n / 8;
         int      mission_index = n % 8;
         TreeNode mission       = new TreeNode(String.Format(
                                                   "{0} - {1}"
                                                   , section_index + 1, mission_index + 1));
         nodemission.Add(mission, newentry);
         tv_Missions.Nodes.Add(mission);
     }
     updatebuttons();
 }
Пример #7
0
 public SelectionChangedEventArgs(KmtEntry entry)
 {
     Entry = entry;
 }
Пример #8
0
        private void SelectionChanged(KmtEntry entry)
        {
            SelectionChangedEventArgs args = new SelectionChangedEventArgs(entry);

            OnSelectionChanged(this, args);
        }
        public static void ExportGCTCode(KmtEntry mission, int region)
        {
            SaveFileDialog dialog = new SaveFileDialog();

            dialog.Filter = "GCT File|*.gct";
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    List <byte> newbytes = new List <byte>();

                    byte stringtobyte(char Y, char Z)
                    {
                        //Format: 0xYZ
                        int getvalue(char cc)
                        {
                            int index = ("0123456789ABCDEF").IndexOf(cc);

                            if (index == -1)
                            {
                                index = ("0123456789abcedf").IndexOf(cc);
                            }
                            return(index);
                        }

                        return((byte)(getvalue(Y) * 16 + getvalue(Z)));
                    }
                    string missionmode = getcode(region)
                                         .Replace("\n", "").Replace(" ", "");
                    int mmoffset = missionmode.IndexOf("MM");

                    newbytes.Add(0x00);
                    newbytes.Add(0xD0);
                    newbytes.Add(0xC0);
                    newbytes.Add(0xDE);
                    newbytes.Add(0x00);
                    newbytes.Add(0xD0);
                    newbytes.Add(0xC0);
                    newbytes.Add(0xDE);

                    for (int n = 0; n < mmoffset; n += 2)
                    {
                        newbytes.Add(stringtobyte(
                                         missionmode[n], missionmode[n + 1]
                                         ));
                    }
                    newbytes.AddRange(missioncode(mission));
                    for (int n = mmoffset + 2; n < missionmode.Length; n += 2)
                    {
                        newbytes.Add(stringtobyte(
                                         missionmode[n], missionmode[n + 1]
                                         ));
                    }

                    newbytes.Add(0xFF);
                    newbytes.Add(0x00);
                    newbytes.Add(0x00);
                    newbytes.Add(0x00);
                    newbytes.Add(0x00);
                    newbytes.Add(0x00);
                    newbytes.Add(0x00);
                    newbytes.Add(0x00);

                    File.WriteAllBytes(dialog.FileName, newbytes.ToArray());
                }
                catch (Exception ex)
                {
                    Error.Show(ex.Message, "Could not save file");
                }
            }
        }
 public static void CopyEntryToClipboard(KmtEntry mission)
 {
     Clipboard.SetText(bytetostring(missioncode(mission)));
 }
        private static byte[] missioncode(KmtEntry mission)
        {
            byte[] ushort_getbytes(ushort value)
            {
                byte[] newbyte = BitConverter.GetBytes(value);
                Array.Reverse(newbyte);
                return(newbyte);
            }

            byte[] uint_getbytes(uint value)
            {
                byte[] newbyte = BitConverter.GetBytes(value);
                Array.Reverse(newbyte);
                return(newbyte);
            }

            List <byte> newbytes = new List <byte>();

            newbytes.AddRange(ushort_getbytes(mission.MissionRunFile));
            newbytes.AddRange(ushort_getbytes((ushort)mission.GameMode));
            newbytes.Add((byte)mission.Course);
            newbytes.Add((byte)mission.Character);
            newbytes.Add((byte)mission.Vehicle);
            newbytes.Add((byte)mission.EngineClass);
            for (int n = 0x08; n < 0x2C; n += 1)
            {
                newbytes.Add(0x00);
            }
            newbytes.AddRange(ushort_getbytes(mission.TimeLimit));
            newbytes.Add(0x00);
            newbytes.Add(mission.ControllerRestriction);
            newbytes.AddRange(uint_getbytes(mission.Score));
            for (int n = 0x34; n < 0x48; n += 1)
            {
                newbytes.Add(0x00);
            }
            newbytes.AddRange(ushort_getbytes((ushort)mission.CameraMode));
            newbytes.AddRange(ushort_getbytes((ushort)mission.Minimap));
            for (int n = 0x4C; n < 0x50; n += 1)
            {
                newbytes.Add(0x00);
            }
            newbytes.AddRange(ushort_getbytes(mission.CannonFlag));
            for (int n = 0x52; n < 0x58; n += 1)
            {
                newbytes.Add(0x00);
            }
            newbytes.AddRange(ushort_getbytes((ushort)mission.CPUs.Count));
            int offset = 0x5A;

            for (int n = 0; n < mission.CPUs.Count; n += 1)
            {
                KmtCPUEntry cpu = mission.CPUs[n];
                newbytes.Add((byte)cpu.Character);
                newbytes.Add((byte)cpu.Vehicle);
                offset += 2;
            }
            for (int n = offset; n < 0x70; n += 1)
            {
                newbytes.Add(0x00);
            }

            return(newbytes.ToArray());
        }
Пример #12
0
 public IndexMission(int index, KmtEntry mission)
 {
     Index   = index;
     Mission = mission;
 }