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); }
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); }
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); }
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; }
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(); }
public SelectionChangedEventArgs(KmtEntry entry) { Entry = entry; }
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()); }
public IndexMission(int index, KmtEntry mission) { Index = index; Mission = mission; }