public static void Main(string[] args) { MpqContainer mpq = new MpqContainer(); mpq.Add(new MpqArchive("/home/toshok/src/starcraft/sc-cd/install.exe")); mpq.Add(new MpqArchive("/home/toshok/src/starcraft/starcraft/StarDat.mpq")); Fnt fnt = (Fnt)mpq.GetResource("files\\font\\font16.fnt"); Console.WriteLine("loading font palette"); Stream palStream = (Stream)mpq.GetResource("glue\\Palmm\\tFont.pcx"); Pcx pcx1 = new Pcx(); pcx1.ReadFromStream(palStream, -1, -1); Painter.InitializePainter(false, 300); Surface textSurf1 = GuiUtil.ComposeText(str1, fnt, pcx1.Palette); Surface textSurf2 = GuiUtil.ComposeText(str2, fnt, pcx1.Palette); Surface textSurf3 = GuiUtil.ComposeText(str3, fnt, pcx1.Palette); Surface textSurf4 = GuiUtil.ComposeText(str4, fnt, pcx1.Palette); Surface backgroundSurface = new Surface(Painter.SCREEN_RES_X, Painter.SCREEN_RES_Y); backgroundSurface.Fill(new Rectangle(new Point(0, 0), backgroundSurface.Size), Color.Red); Painter.Add(Layer.UI, delegate(DateTime now) { int y = 0; Painter.Blit(textSurf1, new Point(0, y)); y += textSurf1.Height; Painter.Blit(textSurf2, new Point(0, y)); y += textSurf2.Height; Painter.Blit(textSurf3, new Point(0, y)); y += textSurf3.Height; Painter.Blit(textSurf4, new Point(0, y)); y += textSurf4.Height; }); Painter.Add(Layer.Background, delegate(DateTime now) { Painter.Blit(backgroundSurface); }); Events.KeyboardUp += delegate(object o, KeyboardEventArgs keyargs) { if (keyargs.Key == Key.Escape) { Events.QuitApplication(); } }; Events.Run(); }
public Game (string starcraftDir, string scCDDir, string bwCDDir) { instance = this; starcraftDir = starcraftDir.Replace ('\\', Path.DirectorySeparatorChar) .Replace ('/', Path.DirectorySeparatorChar); scCDDir = scCDDir.Replace ('\\', Path.DirectorySeparatorChar) .Replace ('/', Path.DirectorySeparatorChar); bwCDDir = bwCDDir.Replace ('\\', Path.DirectorySeparatorChar) .Replace ('/', Path.DirectorySeparatorChar); screens = new UIScreen[(int)UIScreenType.ScreenCount]; installedMpq = new MpqContainer (); playingMpq = new MpqContainer (); Mpq scMpq = null, bwMpq = null; if (starcraftDir != null) { foreach (string path in Directory.GetFileSystemEntries (starcraftDir)) { if (Path.GetFileName (path).ToLower() == "broodat.mpq" || Path.GetFileName (path).Equals ("Brood War Data")) { if (broodatMpq != null) throw new Exception ("You have multiple broodat.mpq files in your starcraft directory."); try { bwMpq = GetMpq (path); Console.WriteLine ("found BrooDat.mpq"); } catch (Exception e) { throw new Exception (String.Format ("Could not read mpq archive {0}", path), e); } } else if (Path.GetFileName (path).ToLower() == "stardat.mpq" || Path.GetFileName (path).Equals ("Starcraft Data")) { if (stardatMpq != null) throw new Exception ("You have multiple stardat.mpq files in your starcraft directory."); try { scMpq = GetMpq (path); Console.WriteLine ("found StarDat.mpq"); } catch (Exception e) { throw new Exception (String.Format ("could not read mpq archive {0}", path), e); } } else if (Path.GetFileName (path).ToLower() == "patch_rt.mpq" || Path.GetFileName (path).Equals ("Starcraft Mac Patch")) { if (patchRtMpq != null) throw new Exception ("You have multiple patch_rt.mpq files in your starcraft directory."); try { patchRtMpq = GetMpq (path); Console.WriteLine ("found patch_rt.mpq"); } catch (Exception e) { throw new Exception (String.Format ("could not read mpq archive {0}", path), e); } } else if (Path.GetFileName (path).ToLower() == "starcraft.mpq") { try { scInstallExe = GetMpq (path); Console.WriteLine ("found starcraft.mpq"); } catch (Exception e) { throw new Exception (String.Format ("could not read mpq archive {0}", path), e); } } else if (Path.GetFileName (path).ToLower() == "broodwar.mpq") { try { bwInstallExe = GetMpq (path); Console.WriteLine ("found broodwar.mpq"); } catch (Exception e) { throw new Exception (String.Format ("could not read mpq archive {0}", path), e); } } } } if (scMpq == null) { throw new Exception ("unable to locate stardat.mpq, please check your StarcraftDirectory configuration setting"); } if (!string.IsNullOrEmpty (scCDDir)) { foreach (string path in Directory.GetFileSystemEntries (scCDDir)) { if (Path.GetFileName (path).ToLower() == "install.exe" || Path.GetFileName (path).Equals ("Starcraft Archive")) { try { scInstallExe = GetMpq (path); Console.WriteLine ("found SC install.exe"); } catch (Exception e) { throw new Exception (String.Format ("could not read mpq archive {0}", path), e); } } } } if (!string.IsNullOrEmpty (bwCDDir)) { foreach (string path in Directory.GetFileSystemEntries (bwCDDir)) { if (Path.GetFileName (path).ToLower() == "install.exe" || Path.GetFileName (path).Equals ("Brood War Archive")) { try { bwInstallExe = GetMpq (path); Console.WriteLine ("found BW install.exe"); } catch (Exception e) { throw new Exception (String.Format ("could not read mpq archive {0}", path), e); } } } } if (bwInstallExe == null) throw new Exception ("unable to locate broodwar cd's install.exe, please check your BroodwarCDDirectory configuration setting"); if (bwMpq != null) { if (patchRtMpq != null) { broodatMpq = new MpqContainer (); ((MpqContainer)broodatMpq).Add (patchRtMpq); ((MpqContainer)broodatMpq).Add (bwMpq); } else broodatMpq = bwMpq; } if (scMpq != null) { if (patchRtMpq != null) { stardatMpq = new MpqContainer (); ((MpqContainer)stardatMpq).Add (patchRtMpq); ((MpqContainer)stardatMpq).Add (scMpq); } else stardatMpq = bwMpq; } if (broodatMpq != null) installedMpq.Add (broodatMpq); if (bwInstallExe != null) installedMpq.Add (bwInstallExe); if (stardatMpq != null) installedMpq.Add (stardatMpq); if (scInstallExe != null) installedMpq.Add (scInstallExe); PlayingBroodWar = isBroodWar = (broodatMpq != null); this.rootDir = starcraftDir; }
public Game(string starcraftDir, string scCDDir, string bwCDDir) { instance = this; starcraftDir = starcraftDir.Replace('\\', Path.DirectorySeparatorChar) .Replace('/', Path.DirectorySeparatorChar); scCDDir = scCDDir.Replace('\\', Path.DirectorySeparatorChar) .Replace('/', Path.DirectorySeparatorChar); bwCDDir = bwCDDir.Replace('\\', Path.DirectorySeparatorChar) .Replace('/', Path.DirectorySeparatorChar); screens = new UIScreen[(int)UIScreenType.ScreenCount]; installedMpq = new MpqContainer(); playingMpq = new MpqContainer(); Mpq scMpq = null, bwMpq = null; if (starcraftDir != null) { foreach (string path in Directory.GetFileSystemEntries(starcraftDir)) { if (Path.GetFileName(path).ToLower() == "broodat.mpq" || Path.GetFileName(path).Equals("Brood War Data")) { if (broodatMpq != null) { throw new Exception("You have multiple broodat.mpq files in your starcraft directory."); } try { bwMpq = GetMpq(path); Console.WriteLine("found BrooDat.mpq"); } catch (Exception e) { throw new Exception(String.Format("Could not read mpq archive {0}", path), e); } } else if (Path.GetFileName(path).ToLower() == "stardat.mpq" || Path.GetFileName(path).Equals("Starcraft Data")) { if (stardatMpq != null) { throw new Exception("You have multiple stardat.mpq files in your starcraft directory."); } try { scMpq = GetMpq(path); Console.WriteLine("found StarDat.mpq"); } catch (Exception e) { throw new Exception(String.Format("could not read mpq archive {0}", path), e); } } else if (Path.GetFileName(path).ToLower() == "patch_rt.mpq" || Path.GetFileName(path).Equals("Starcraft Mac Patch")) { if (patchRtMpq != null) { throw new Exception("You have multiple patch_rt.mpq files in your starcraft directory."); } try { patchRtMpq = GetMpq(path); Console.WriteLine("found patch_rt.mpq"); } catch (Exception e) { throw new Exception(String.Format("could not read mpq archive {0}", path), e); } } else if (Path.GetFileName(path).ToLower() == "starcraft.mpq") { try { scInstallExe = GetMpq(path); Console.WriteLine("found starcraft.mpq"); } catch (Exception e) { throw new Exception(String.Format("could not read mpq archive {0}", path), e); } } else if (Path.GetFileName(path).ToLower() == "broodwar.mpq") { try { bwInstallExe = GetMpq(path); Console.WriteLine("found broodwar.mpq"); } catch (Exception e) { throw new Exception(String.Format("could not read mpq archive {0}", path), e); } } } } if (scMpq == null) { throw new Exception("unable to locate stardat.mpq, please check your StarcraftDirectory configuration setting"); } if (!string.IsNullOrEmpty(scCDDir)) { foreach (string path in Directory.GetFileSystemEntries(scCDDir)) { if (Path.GetFileName(path).ToLower() == "install.exe" || Path.GetFileName(path).Equals("Starcraft Archive")) { try { scInstallExe = GetMpq(path); Console.WriteLine("found SC install.exe"); } catch (Exception e) { throw new Exception(String.Format("could not read mpq archive {0}", path), e); } } } } if (!string.IsNullOrEmpty(bwCDDir)) { foreach (string path in Directory.GetFileSystemEntries(bwCDDir)) { if (Path.GetFileName(path).ToLower() == "install.exe" || Path.GetFileName(path).Equals("Brood War Archive")) { try { bwInstallExe = GetMpq(path); Console.WriteLine("found BW install.exe"); } catch (Exception e) { throw new Exception(String.Format("could not read mpq archive {0}", path), e); } } } } if (bwInstallExe == null) { throw new Exception("unable to locate broodwar cd's install.exe, please check your BroodwarCDDirectory configuration setting"); } if (bwMpq != null) { if (patchRtMpq != null) { broodatMpq = new MpqContainer(); ((MpqContainer)broodatMpq).Add(patchRtMpq); ((MpqContainer)broodatMpq).Add(bwMpq); } else { broodatMpq = bwMpq; } } if (scMpq != null) { if (patchRtMpq != null) { stardatMpq = new MpqContainer(); ((MpqContainer)stardatMpq).Add(patchRtMpq); ((MpqContainer)stardatMpq).Add(scMpq); } else { stardatMpq = bwMpq; } } if (broodatMpq != null) { installedMpq.Add(broodatMpq); } if (bwInstallExe != null) { installedMpq.Add(bwInstallExe); } if (stardatMpq != null) { installedMpq.Add(stardatMpq); } if (scInstallExe != null) { installedMpq.Add(scInstallExe); } PlayingBroodWar = isBroodWar = (broodatMpq != null); this.rootDir = starcraftDir; }