public GUI(Window win, TCODConsole main, Camera camera) { statusWindow = new TCODConsole(Window.StatusPanelWidth, win.Height); eventLog = new TCODConsole(win.Width - Window.StatusPanelWidth, Window.MessagePanelHeight); statusWindow.setAlignment(TCODAlignment.CenterAlignment); statusWindow.setBackgroundColor(TCODColor.darkestRed.Multiply(0.1f)); this.main = main; this.window = win; this.camera = camera; }
public int Run(string[] args) { fillSampleList(); int curSample = 0; // index of the current sample bool first = true; // first time we render a sample TCODKey key = new TCODKey(); string font = "celtic_garamond_10x10_gs_tc.png"; int numberCharsHorz = 32; int numberCharsVert = 8; int fullscreenWidth = 0; int fullscreenHeight = 0; bool fullscreen = false; bool credits = false; TCODFontFlags flags = TCODFontFlags.Grayscale | TCODFontFlags.LayoutTCOD; TCODFontFlags newFlags = 0; for (int i = 1; i < args.Length; i++) { if (args[i] == "-font" && ArgsRemaining(args, i, 1)) { i++; font = args[i]; } else if (args[i] == "-font-char-numberRows" && ArgsRemaining(args, i, 2)) { i++; numberCharsHorz = System.Convert.ToInt32(args[i]); i++; numberCharsVert = System.Convert.ToInt32(args[i]); } else if (args[i] == "-fullscreen-resolution" && ArgsRemaining(args, i, 2)) { i++; fullscreenWidth = System.Convert.ToInt32(args[i]); i++; fullscreenHeight = System.Convert.ToInt32(args[i]); } else if (args[i] == "-fullscreen") { fullscreen = true; } else if (args[i] == "-font-in-row") { flags = 0; newFlags |= TCODFontFlags.LayoutAsciiInRow; } else if (args[i] == "-font-greyscale") { flags = 0; newFlags |= TCODFontFlags.Grayscale; } else if (args[i] == "-font-tcod") { flags = 0; newFlags |= TCODFontFlags.LayoutTCOD; } else if (args[i] == "-help") { System.Console.Out.WriteLine("options : \n"); System.Console.Out.WriteLine("-font <filename> : use a custom font\n"); System.Console.Out.WriteLine("-font-char-size <char_width> <char_height> : size of the custom font's characters\n"); System.Console.Out.WriteLine("-font-in-row : the font layout is in row instead of columns\n"); System.Console.Out.WriteLine("-font-tcod : the font uses TCOD layout instead of ASCII\n"); System.Console.Out.WriteLine("-font-greyscale : antialiased font using greyscale bitmap\n"); System.Console.Out.WriteLine("-fullscreen : start in fullscreen\n"); System.Console.Out.WriteLine("-fullscreen-resolution <screen_width> <screen_height> : force fullscreen resolution\n"); return 0; } } if (flags == 0) flags = newFlags; if (fullscreenWidth > 0) TCODSystem.forceFullscreenResolution(fullscreenWidth, fullscreenHeight); TCODConsole.setCustomFont(font, (int)flags, numberCharsHorz, numberCharsVert); TCODConsole.initRoot(80, 50, "tcodlib C# sample", fullscreen, TCODRendererType.SDL); rootConsole = TCODConsole.root; sampleConsole = new TCODConsole(SAMPLE_SCREEN_WIDTH, SAMPLE_SCREEN_HEIGHT); setupStaticData(); rootConsole.setBackgroundFlag(TCODBackgroundFlag.Set); rootConsole.setAlignment(TCODAlignment.LeftAlignment); do { rootConsole.clear(); if (!credits) credits = TCODConsole.renderCredits(60, 42, false); for (int i = 0; i < sampleList.Length; i++) { if (i == curSample) { // set colors for currently selected sample rootConsole.setForegroundColor(TCODColor.white); rootConsole.setBackgroundColor(TCODColor.blue); } else { // set colors for other samples rootConsole.setForegroundColor(TCODColor.grey); rootConsole.setBackgroundColor(TCODColor.black); } rootConsole.print(2, 45 - sampleList.Length + i, sampleList[i].name); } rootConsole.setForegroundColor(TCODColor.grey); rootConsole.setBackgroundColor(TCODColor.black); rootConsole.printEx(79, 46, TCODBackgroundFlag.Set, TCODAlignment.RightAlignment, "last frame : " + ((int)(TCODSystem.getLastFrameLength() * 1000)).ToString() + " ms ( " + TCODSystem.getFps() + "fps)"); rootConsole.printEx(79, 47, TCODBackgroundFlag.Set, TCODAlignment.RightAlignment, "elapsed : " + TCODSystem.getElapsedMilli() + "ms " + (TCODSystem.getElapsedSeconds().ToString("0.00")) + "s"); rootConsole.putChar(2, 47, (char)TCODSpecialCharacter.ArrowNorth); rootConsole.putChar(3, 47, (char)TCODSpecialCharacter.ArrowSouth); rootConsole.print(4, 47, " : select a sample"); rootConsole.print(2, 48, "ALT-ENTER : switch to " + (TCODConsole.isFullscreen() ? "windowed mode " : "fullscreen mode")); sampleList[curSample].render(first, key); first = false; TCODConsole.blit(sampleConsole, 0, 0, SAMPLE_SCREEN_WIDTH, SAMPLE_SCREEN_HEIGHT, rootConsole, SAMPLE_SCREEN_X, SAMPLE_SCREEN_Y); TCODConsole.flush(); key = TCODConsole.checkForKeypress((int)TCODKeyStatus.KeyPressed); if (key.KeyCode == TCODKeyCode.Down) { // down arrow : next sample curSample = (curSample + 1) % sampleList.Length; first = true; } else if (key.KeyCode == TCODKeyCode.Up) { // up arrow : previous sample curSample--; if (curSample < 0) curSample = sampleList.Length - 1; first = true; } else if (key.KeyCode == TCODKeyCode.Enter && (key.LeftAlt || key.RightAlt)) { // ALT-ENTER : switch fullscreen TCODConsole.setFullscreen(!TCODConsole.isFullscreen()); } else if (key.KeyCode == TCODKeyCode.F1) { System.Console.Out.WriteLine("key.pressed" + " " + key.LeftAlt + " " + key.LeftControl + " " + key.RightAlt + " " + key.RightControl + " " + key.Shift); } } while (!TCODConsole.isWindowClosed()); return 0; }