28 #ifndef ABSTRACTGUIDRIVER_H
29 #define ABSTRACTGUIDRIVER_H
32 #include <sys/types.h>
53 #include "FileByteSource.h"
65 #define FRAMES_PER_SECOND 100.0
67 #define CAMERA_SLOW_SPEED 2
68 #define CAMERA_FAST_SPEED 50
70 #define STATS_WINDOW_WIDTH 288
72 #define STATS_START_WINDOW_WIDTH STATS_WINDOW_WIDTH // Why two constants?
73 #define STATS_START_WINDOW_HEIGHT 120
76 #define MINIMAL_START_WINDOW_WIDTH 1
77 #define MINIMAL_START_WINDOW_HEIGHT 1
80 #define MAX_PATH_LENGTH 1000
81 #define MIN_PATH_RESERVED_LENGTH 100
92 enum { W = GC::GRID_WIDTH};
93 enum { H = GC::GRID_HEIGHT};
96 bool m_thisUpdateIsEpoch;
99 bool m_captureScreenshots;
100 u32 m_saveStateIndex;
101 u32 m_epochSaveStateIndex;
103 bool m_keyboardPaused;
107 bool m_reinitRequested;
110 m_reinitRequested =
true;
114 u32 m_ticksLastStopped;
189 AbstractButton::SetName(
"ClearButton");
190 Panel::SetDimensions(200,40);
191 AbstractButton::SetRenderPoint(
SPoint(2, 250));
196 OurGrid & grid = AbstractGridButton::m_driver->GetGrid();
197 GridRenderer & grend = AbstractGridButton::m_driver->GetGridRenderer();
199 const SPoint selTile = grend.GetSelectedTile();
200 if(selTile.
GetX() >= 0 && selTile.
GetX() < W &&
201 selTile.
GetY() >= 0 && selTile.
GetY() < H)
213 AbstractButton::SetName(
"ClearGridButton");
214 Panel::SetDimensions(200,40);
215 AbstractButton::SetRenderPoint(
SPoint(2, 250));
220 OurGrid & grid = AbstractGridButton::m_driver->GetGrid();
231 AbstractButton::SetName(
"NukeButton");
232 Panel::SetDimensions(200,40);
233 AbstractButton::SetRenderPoint(
SPoint(2, 100));
238 AbstractGridButton::m_driver->GetGrid().RandomNuke();
246 AbstractButton::SetName(
"XRayButton");
247 Panel::SetDimensions(200,40);
248 AbstractButton::SetRenderPoint(
SPoint(2, 150));
253 AbstractGridButton::m_driver->GetGrid().XRay();
262 AbstractButton::SetName(
"GridRunButton");
263 Panel::SetDimensions(200, 25);
264 AbstractButton::SetRenderPoint(
SPoint(2, 0));
275 AbstractButton::SetName(
"GridRenderButton");
276 Panel::SetDimensions(200,25);
277 AbstractButton::SetRenderPoint(
SPoint(2, 25));
282 } m_gridRenderButton;
288 AbstractButton::SetName(
"HeatmapButton");
289 Panel::SetDimensions(200,25);
290 AbstractButton::SetRenderPoint(
SPoint(2, 50));
302 AbstractButton::SetName(
"GridStepButton");
303 Panel::SetDimensions(200, 40);
304 AbstractButton::SetRenderPoint(
SPoint(2, 200));
309 AbstractGridButton::m_driver->m_singleStep =
true;
310 AbstractGridButton::m_driver->m_keyboardPaused =
false;
318 AbstractButton::SetName(
"TileViewButton");
319 Panel::SetDimensions(200,40);
320 AbstractButton::SetRenderPoint(
SPoint(2, 200));
325 AbstractGridButton::m_driver->GetGridRenderer().ToggleMemDraw();
333 AbstractButton::SetName(
"SaveButton");
334 Panel::SetDimensions(200, 40);
335 AbstractButton::SetRenderPoint(
SPoint(2, 300));
340 AbstractGridButton::m_driver->SaveGridWithNextFilename();
350 u32 m_currentScreenshot;
351 SDL_Surface* m_screen;
358 m_currentScreenshot(0),
362 AbstractButton::SetName(
"Screenshot");
363 Panel::SetDimensions(200, 40);
366 void SetScreen(SDL_Surface* screen)
371 void SetCamera(
Camera* camera)
383 if(m_driver && m_screen && m_camera)
385 const char * path = m_driver->GetSimDirPathTemporary(
"screenshot/%010d.png",
386 ++m_currentScreenshot);
387 LOG.
Debug(
"Screenshot saved at %s", path);
389 m_camera->DrawSurface(m_screen, path);
393 LOG.
Debug(
"Screenshot not saved; screen is null. Use SetScreen() first.");
402 AbstractButton::SetName(
"QuitButton");
403 Panel::SetDimensions(200,40);
404 AbstractButton::SetRenderPoint(
SPoint(2, 350));
417 AbstractButton::SetName(
"ReloadButton");
418 Panel::SetDimensions(200,40);
419 AbstractButton::SetRenderPoint(
SPoint(2, 350));
424 AbstractGridButton::m_driver->LoadFromConfigurationPath();
432 AbstractButton::SetName(
"PauseTileButton");
433 Panel::SetDimensions(200, 40);
434 AbstractButton::SetRenderPoint(
SPoint(2, 400));
439 SPoint selectedTile = AbstractGridButton::m_grend->GetSelectedTile();
441 if(selectedTile.
GetX() >= 0 && selectedTile.
GetY() >= 0)
443 AbstractGridButton::m_driver->GetGrid().SetTileToExecuteOnly(
445 !AbstractGridButton::m_driver->GetGrid().GetTileExecutionStatus(selectedTile));
455 AbstractButton::SetName(
"BGRButton");
456 Panel::SetDimensions(200,25);
457 AbstractButton::SetRenderPoint(
SPoint(2, 75));
458 Panel::SetVisibility(
true);
463 AbstractGridCheckbox::m_driver->GetGrid().SetBackgroundRadiation(
482 m_statisticsPanel.SetAEPS(Super::GetAEPS());
483 m_statisticsPanel.SetAER(Super::GetRecentAER());
484 m_statisticsPanel.SetAEPSPerFrame(Super::GetAEPSPerFrame());
485 m_statisticsPanel.SetOverheadPercent(Super::GetOverheadPercent());
491 m_thisUpdateIsEpoch =
true;
492 m_thisEpochAEPS = epochAEPS;
502 m_logSplitter.
SetSink2(&m_logPanel.GetByteSink());
516 if (!getenv(
"SDL_VIDEO_ALLOW_SCREENSAVER"))
517 putenv((
char *)
"SDL_VIDEO_ALLOW_SCREENSAVER=1");
519 SDL_Init(SDL_INIT_EVERYTHING);
522 SetScreenSize(m_screenWidth, m_screenHeight);
524 m_rootPanel.SetName(
"Root");
525 m_gridPanel.SetBorder(Drawing::BLACK);
526 m_gridPanel.SetGridRenderer(&m_grend);
527 m_gridPanel.SetToolboxPanel(&m_toolboxPanel);
528 m_gridPanel.SetGrid(&Super::GetGrid());
530 m_statisticsPanel.SetStatsRenderer(&m_srend);
531 m_statisticsPanel.SetGrid(&Super::GetGrid());
532 m_statisticsPanel.SetAEPS(Super::GetAEPS());
533 m_statisticsPanel.SetAER(Super::GetRecentAER());
534 m_statisticsPanel.SetAEPSPerFrame(Super::GetAEPSPerFrame());
535 m_statisticsPanel.SetOverheadPercent(Super::GetOverheadPercent());
536 m_statisticsPanel.SetVisibility(
false);
538 m_rootPanel.Insert(&m_gridPanel, NULL);
539 m_gridPanel.Insert(&m_statisticsPanel, NULL);
540 m_statisticsPanel.Insert(&m_buttonPanel, NULL);
541 m_buttonPanel.SetVisibility(
true);
543 m_gridPanel.Insert(&m_logPanel, NULL);
544 m_logPanel.SetVisibility(
false);
545 m_logPanel.SetDimensions(m_screenWidth, 160);
546 m_logPanel.SetDesiredSize(
U32_MAX, 160);
548 m_logPanel.
SetFont(AssetManager::Get(FONT_ASSET_LOGGER));
550 m_toolboxPanel.SetName(
"Toolbox");
551 m_toolboxPanel.SetVisibility(
false);
552 m_toolboxPanel.SetBigText(m_bigText);
553 m_toolboxPanel.SetBackground(Drawing::GREY60);
554 m_toolboxPanel.SetAnchor(ANCHOR_WEST);
555 m_toolboxPanel.SetAnchor(ANCHOR_NORTH);
556 m_gridPanel.Insert(&m_toolboxPanel, NULL);
557 m_toolboxPanel.RebuildControllers();
559 m_helpPanel.SetName(
"Help");
560 m_helpPanel.SetDimensions(m_screenWidth / 3, m_screenHeight);
562 m_gridPanel.Insert(&m_helpPanel, NULL);
564 m_rootPanel.Print(STDOUT);
568 SDL_WM_SetCaption(MFM_VERSION_STRING_LONG, NULL);
570 m_ticksLastStopped = 0;
572 m_reinitRequested =
false;
577 SetScreenSize(m_screenWidth, m_screenHeight);
582 void OnceOnlyButtons()
584 m_statisticsPanel.
SetAnchor(ANCHOR_EAST);
586 m_buttonPanel.InsertCheckbox(&m_heatmapButton);
587 m_buttonPanel.InsertCheckbox(&m_gridRenderButton);
588 m_buttonPanel.InsertCheckbox(&m_gridRunButton);
589 m_buttonPanel.InsertCheckbox(&m_bgrButton);
591 m_buttonPanel.InsertButton(&m_gridStepButton);
592 m_buttonPanel.InsertButton(&m_clearButton);
593 m_buttonPanel.InsertButton(&m_clearGridButton);
594 m_buttonPanel.InsertButton(&m_xrayButton);
595 m_buttonPanel.InsertButton(&m_nukeButton);
596 m_buttonPanel.InsertButton(&m_tileViewButton);
597 m_buttonPanel.InsertButton(&m_pauseTileButton);
598 m_buttonPanel.InsertButton(&m_saveButton);
599 m_buttonPanel.InsertButton(&m_screenshotButton);
600 m_buttonPanel.InsertButton(&m_reloadButton);
601 m_buttonPanel.InsertButton(&m_quitButton);
603 m_screenshotButton.SetDriver(
this);
604 m_screenshotButton.SetScreen(screen);
605 m_screenshotButton.SetCamera(&camera);
607 m_pauseTileButton.SetGridRenderer(m_grend);
612 GetBackgroundRadiationEnabledPointer());
615 m_buttonPanel.SetButtonDrivers(*
this);
616 m_buttonPanel.InsertButtons();
622 void Update(OurGrid& grid)
624 KeyboardUpdate(grid);
628 m_keyboardPaused =
false;
631 m_gridPaused = m_keyboardPaused || m_mousePaused;
637 m_keyboardPaused =
true;
638 m_singleStep =
false;
643 const s32 ONE_THOUSAND = 1000;
644 const s32 ONE_MILLION = ONE_THOUSAND*ONE_THOUSAND;
646 Sleep(0,33*ONE_MILLION);
650 inline void ToggleStatsView()
652 m_statisticsPanel.ToggleVisibility();
653 m_grend.SetDimensions(Point<u32>(m_screenWidth - (m_renderStats ? STATS_WINDOW_WIDTH : 0)
657 inline void ToggleLogView()
659 m_logPanel.ToggleVisibility();
662 inline void ToggleToolbox()
664 m_toolboxPanel.ToggleVisibility();
665 m_gridPanel.SetPaintingEnabled(m_toolboxPanel.IsVisible());
668 void KeyboardUpdate(OurGrid& grid)
670 u8 speed = m_keyboard.ShiftHeld() ?
671 CAMERA_FAST_SPEED : CAMERA_SLOW_SPEED;
673 if(m_keyboard.IsDown(SDLK_q) && m_keyboard.CtrlHeld())
679 if(m_keyboard.SemiAuto(SDLK_a))
681 m_srend.SetDisplayAER(1 + m_srend.GetDisplayAER());
683 if(m_keyboard.SemiAuto(SDLK_i))
687 if(m_keyboard.SemiAuto(SDLK_g))
689 m_grend.ToggleGrid();
691 if(m_keyboard.SemiAuto(SDLK_b))
693 m_buttonPanel.ToggleVisibility();
695 if(m_keyboard.SemiAuto(SDLK_m))
697 m_grend.ToggleMemDraw();
699 if(m_keyboard.SemiAuto(SDLK_k))
701 m_grend.ToggleDataHeatmap();
703 if(m_keyboard.SemiAuto(SDLK_h))
705 m_helpPanel.ToggleVisibility();
707 if(m_keyboard.SemiAuto(SDLK_l))
711 if(m_keyboard.SemiAuto(SDLK_p))
713 m_grend.ToggleTileSeparation();
715 if(m_keyboard.SemiAuto(SDLK_v))
717 m_gridPanel.ToggleAtomViewPanel();
719 if(m_keyboard.SemiAuto(SDLK_o))
721 m_gridPanel.ToggleDrawAtomsAsSquares();
724 if(m_keyboard.SemiAuto(SDLK_ESCAPE))
726 m_gridPanel.DeselectAtomAndTile();
730 if(m_keyboard.SemiAuto(SDLK_r))
732 m_captureScreenshots = !m_captureScreenshots;
733 if (m_captureScreenshots)
734 LOG.
Message(
"Capturing screenshots every %d AEPS", this->GetAEPSPerEpoch());
736 LOG.
Message(
"Not capturing screenshots");
739 if(m_keyboard.SemiAuto(SDLK_t))
745 if(m_keyboard.IsDown(SDLK_LEFT))
747 m_grend.MoveLeft(speed);
749 if(m_keyboard.IsDown(SDLK_DOWN))
751 m_grend.MoveDown(speed);
753 if(m_keyboard.IsDown(SDLK_UP))
755 m_grend.MoveUp(speed);
757 if(m_keyboard.IsDown(SDLK_RIGHT))
759 m_grend.MoveRight(speed);
763 if(m_keyboard.SemiAuto(SDLK_SPACE))
765 m_keyboardPaused = !m_keyboardPaused;
767 if(m_keyboard.SemiAuto(SDLK_s))
770 m_keyboardPaused =
false;
772 if(m_keyboard.IsDown(SDLK_COMMA))
776 if(m_keyboard.IsDown(SDLK_PERIOD))
786 void SaveGridWithNextFilename()
788 const char* filename =
790 Super::SaveGrid(filename);
793 void SaveGridWithConstantFilename(
const char* filename)
795 const char* finalName =
797 Super::SaveGrid(finalName);
800 AbstractGUIDriver() :
802 m_thisUpdateIsEpoch(false),
804 m_captureScreenshots(false),
806 m_epochSaveStateIndex(0),
807 m_renderStats(false),
808 m_screenWidth(SCREEN_INITIAL_WIDTH),
809 m_screenHeight(SCREEN_INITIAL_HEIGHT),
810 m_selectedTool(TOOL_SELECTOR),
811 m_toolboxPanel(&m_selectedTool),
820 virtual void ReinitUs()
833 m_renderStats =
false;
835 m_toolboxPanel.AddButtons();
840 for(u32 i = 0; i < AbstractDriver<GC>::m_neededElementCount; i++)
848 virtual void HandleResize()
851 void ToggleTileView()
853 m_grend.ToggleMemDraw();
856 void RegisterToolboxElement(Element<CC>* element)
858 m_toolboxPanel.RegisterElement(element);
865 static void ConfigStatsOnlyView(
const char* not_used,
void* driverptr)
867 AbstractGUIDriver* driver = (AbstractGUIDriver<GC>*)driverptr;
870 driver->m_screenWidth = STATS_START_WINDOW_WIDTH;
871 driver->m_screenHeight = STATS_START_WINDOW_HEIGHT;
872 driver->ToggleStatsView();
873 driver->m_srend.SetDisplayAER(driver->m_srend.GetMaxDisplayAER());
876 static void ConfigMinimalView(
const char* not_used,
void* driverptr)
878 AbstractGUIDriver* driver = (AbstractGUIDriver<GC>*)driverptr;
880 driver->m_screenWidth = MINIMAL_START_WINDOW_HEIGHT;
881 driver->m_screenHeight = MINIMAL_START_WINDOW_WIDTH;
884 static void SetRecordScreenshotPerAEPSFromArgs(
const char* aeps,
void* driverptr)
886 AbstractGUIDriver* driver = (AbstractGUIDriver<GC>*)driverptr;
888 driver->m_captureScreenshots =
true;
891 static void SetStartPausedFromArgs(
const char* not_used,
void* driverptr)
893 AbstractGUIDriver& driver = *((AbstractGUIDriver*)driverptr);
895 driver.m_startPaused =
false;
898 static void DontShowHelpPanelOnStart(
const char* not_used,
void* driverptr)
900 AbstractGUIDriver& driver = *((AbstractGUIDriver*)driverptr);
902 driver.m_helpPanel.SetVisibility(
false);
905 static void SetIncreaseTextSizeFlag(
const char* not_used,
void* driverptr)
907 AbstractGUIDriver& driver = *((AbstractGUIDriver*)driverptr);
909 LOG.
Debug(
"Increase text size.\n");
911 driver.m_bigText =
true;
918 this->RegisterSection(
"GUI switches");
920 this->RegisterArgument(
"Start with only the statistics view on the screen.",
921 "--startwithoutgrid", &ConfigStatsOnlyView,
this,
false);
923 this->RegisterArgument(
"Start with a minimal-sized window.",
924 "--startminimal", &ConfigMinimalView,
this,
false);
926 this->RegisterArgument(
"Capture a screenshot every epoch",
927 "-p|--pngs", &SetRecordScreenshotPerAEPSFromArgs,
this,
false);
929 this->RegisterArgument(
"Simulation begins upon program startup.",
930 "--run", &SetStartPausedFromArgs,
this,
false);
932 this->RegisterArgument(
"Help panel is not shown upon startup.",
933 "-n| --nohelp", &DontShowHelpPanelOnStart,
this,
false);
935 this->RegisterArgument(
"Increase button and text size.",
936 "--bigtext", &SetIncreaseTextSizeFlag,
this,
false);
939 EditingTool m_selectedTool;
951 double m_overheadPercent;
957 SetName(
"Statistics Panel");
958 SetDimensions(STATS_START_WINDOW_WIDTH,
959 SCREEN_INITIAL_HEIGHT);
960 SetDesiredSize(STATS_START_WINDOW_WIDTH,
962 SetRenderPoint(
SPoint(100000, 0));
965 m_AEPS = m_AER = 0.0;
967 m_overheadPercent = 0.0;
975 void SetGrid(
OurGrid* mainGrid)
977 m_mainGrid = mainGrid;
980 void SetAEPS(
double aeps)
985 void SetAER(
double aer)
990 void SetOverheadPercent(
double overheadPercent)
992 m_overheadPercent = overheadPercent;
995 void SetAEPSPerFrame(u32 apf)
997 m_aepsPerFrame = apf;
1004 m_srend->RenderGridStatistics(drawing, *m_mainGrid,
1005 m_AEPS, m_AER, m_aepsPerFrame,
1006 m_overheadPercent,
false);
1020 static const u32 MAX_BUTTONS = 16;
1021 static const u32 CHECKBOX_SPACING_HEIGHT = 32;
1022 static const u32 BUTTON_SPACING_HEIGHT = 34;
1023 static const u32 BUTTON_HEIGHT = 30;
1024 static const u32 BUTTON_WIDTH = STATS_START_WINDOW_WIDTH;
1033 SetName(
"ButtonPanel");
1034 SetDimensions(STATS_START_WINDOW_WIDTH,
1035 SCREEN_INITIAL_HEIGHT / 2);
1036 SetDesiredSize(
U32_MAX, SCREEN_INITIAL_HEIGHT / 2);
1044 SetFont(AssetManager::Get(FONT_ASSET_ELEMENT));
1047 void InsertCheckbox(AbstractGridCheckbox* checkbox)
1049 if(m_checkboxCount >= MAX_BUTTONS)
1054 m_checkboxes[m_checkboxCount++] = checkbox;
1059 void InsertButton(AbstractGridButton* button)
1061 if(m_buttonCount >= MAX_BUTTONS)
1066 m_buttons[m_buttonCount++] = button;
1071 void SetButtonDrivers(AbstractGUIDriver& driver)
1073 for(u32 i = 0; i < m_checkboxCount; i++)
1075 m_checkboxes[i]->SetDriver(driver);
1078 for(u32 i = 0; i < m_buttonCount; i++)
1080 m_buttons[i]->SetDriver(driver);
1084 void InsertButtons()
1086 for(u32 i = 0; i < m_checkboxCount; i++)
1088 Panel::Insert(m_checkboxes[i], NULL);
1091 for(u32 i = 0; i < m_buttonCount; i++)
1093 Panel::Insert(m_buttons[i], NULL);
1094 m_buttons[i]->
SetDimensions(SPoint(BUTTON_WIDTH, BUTTON_HEIGHT));
1099 AbstractGridCheckbox* m_checkboxes[MAX_BUTTONS];
1100 AbstractGridButton* m_buttons[MAX_BUTTONS];
1102 u32 m_checkboxCount;
1107 for(u32 i = 0; i < m_checkboxCount; i++)
1109 m_checkboxes[i]->SetRenderPoint(SPoint(2, i * CHECKBOX_SPACING_HEIGHT));
1112 for(u32 i = 0; i < m_buttonCount; i++)
1114 m_buttons[i]->SetRenderPoint(SPoint(2, m_checkboxCount * CHECKBOX_SPACING_HEIGHT +
1115 i * BUTTON_SPACING_HEIGHT));
1118 Panel::SetDimensions(STATS_WINDOW_WIDTH,
1119 m_checkboxCount * CHECKBOX_SPACING_HEIGHT +
1120 m_buttonCount * BUTTON_SPACING_HEIGHT);
1125 TextPanel<120,100> m_logPanel;
1126 TeeByteSink m_logSplitter;
1128 void SetScreenSize(u32 width, u32 height)
1130 m_screenWidth = width;
1131 m_screenHeight = height;
1132 screen = SDL_SetVideoMode(m_screenWidth, m_screenHeight, 32,
1133 SDL_SWSURFACE | SDL_RESIZABLE);
1139 FAIL(ILLEGAL_STATE);
1142 UPoint newDimensions(width, height);
1144 m_rootPanel.SetDimensions(m_screenWidth, m_screenHeight);
1145 m_gridPanel.SetDimensions(m_screenWidth, m_screenHeight);
1147 m_rootPanel.SetRenderPoint(SPoint(0, 0));
1152 m_rootDrawing.
Reset(screen, AssetManager::Get(FONT_ASSET_ELEMENT));
1156 m_grend.SetDimensions(UPoint(m_screenWidth - STATS_WINDOW_WIDTH,m_screenHeight));
1160 m_grend.SetDimensions(UPoint(m_screenWidth,m_screenHeight));
1163 m_srend.SetDrawPoint(SPoint(0,0));
1164 m_srend.SetDimensions(UPoint(STATS_WINDOW_WIDTH, m_screenHeight));
1166 printf(
"Screen resize: %d x %d\n", width, height);
1170 StatsRenderer<GC> & GetStatsRenderer()
1177 m_keyboardPaused = m_startPaused;
1178 m_singleStep =
false;
1180 bool running =
true;
1183 s32 lastFrame = SDL_GetTicks();
1185 u32 mouseButtonsDown = 0;
1186 ButtonPositionArray dragStartPositions;
1190 while(SDL_PollEvent(&event))
1194 case SDL_VIDEORESIZE:
1195 SetScreenSize(event.resize.w, event.resize.h);
1202 case SDL_MOUSEBUTTONUP:
1203 mouseButtonsDown &= ~(1<<(
event.button.button));
1204 dragStartPositions[
event.button.button].Set(-1,-1);
1205 goto mousebuttondispatch;
1207 case SDL_MOUSEBUTTONDOWN:
1208 mouseButtonsDown |= 1<<(
event.button.button);
1209 dragStartPositions[
event.button.button].Set(event.button.x,event.button.y);
1212 mousebuttondispatch:
1217 UPoint(m_screenWidth,m_screenHeight)));
1221 case SDL_MOUSEMOTION:
1224 mouseButtonsDown, dragStartPositions, m_selectedTool);
1227 UPoint(m_screenWidth,m_screenHeight)));
1233 m_keyboard.HandleEvent(&event.key);
1239 m_mousePaused = mouseButtonsDown != 0;
1243 ((1000.0 / FRAMES_PER_SECOND) -
1244 (SDL_GetTicks() - lastFrame));
1249 lastFrame = SDL_GetTicks();
1252 m_thisUpdateIsEpoch =
false;
1254 Update(Super::GetGrid());
1256 m_rootDrawing.
Clear();
1258 m_rootPanel.Paint(m_rootDrawing);
1260 if (m_thisUpdateIsEpoch)
1262 if (m_captureScreenshots)
1266 camera.DrawSurface(screen,path);
1291 if(Super::GetHaltAfterAEPS() > 0 &&
1292 Super::GetAEPS() > Super::GetHaltAfterAEPS())
1295 SaveGridWithConstantFilename(
"save/final.mfs");
1302 SDL_FreeSurface(screen);
virtual void DoEpochEvents(OurGrid &grid, u32 epochs, u32 epochAEPS)
Definition: AbstractGUIDriver.h:488
void DecrementAEPSPerFrame(u32 amount)
Definition: AbstractDriver.h:303
Definition: AbstractCheckbox.h:146
virtual void OnceOnly(VArguments &args)
Definition: AbstractDriver.h:392
virtual void PaintComponent(Drawing &drawing)
Definition: AbstractGUIDriver.h:1001
void IncrementAEPSPerFrame(u32 amount)
Definition: AbstractDriver.h:322
Definition: AbstractGUIDriver.h:84
ByteSink * SetByteSink(ByteSink &byteSink)
Definition: Logger.h:171
Definition: Keyboard.h:36
Definition: AbstractGUIDriver.h:257
Definition: AbstractDriver.h:67
Definition: AbstractGUIDriver.h:297
virtual void AddDriverArguments()
Definition: AbstractDriver.h:912
u32 SetForeground(const u32 color)
Definition: Panel.h:256
void UpdateGrid(OurGrid &grid)
Definition: AbstractDriver.h:239
virtual void HandleResize(const UPoint &parentSize)
Definition: Panel.cpp:265
Definition: MovablePanel.h:34
virtual bool IsChecked() const
Definition: AbstractCheckbox.h:183
Definition: HelpPanel.h:40
virtual void OnceOnly(VArguments &args)
Definition: AbstractGUIDriver.h:495
void Clear()
Definition: Drawing.cpp:91
void SetAnchor(const GUIAnchor anchor)
Definition: Panel.cpp:243
T GetY() const
Definition: Point.tcc:40
const char * GetSimDirPathTemporary(const char *format,...) const
Definition: AbstractDriver.h:746
Definition: GridRenderer.h:46
virtual void PostUpdate()
Definition: AbstractGUIDriver.h:479
virtual void PaintComponent(Drawing &config)
Definition: Panel.cpp:230
Definition: ByteSink.h:47
void AddDriverArguments()
Definition: AbstractGUIDriver.h:914
ByteSink * SetSink1(ByteSink *sink)
Definition: TeeByteSink.h:108
virtual void PostReinitPhysics()
Definition: AbstractGUIDriver.h:838
virtual void OnCheck(bool value)
Definition: AbstractGUIDriver.h:267
GC::CORE_CONFIG CC
Definition: AbstractDriver.h:75
void Clear()
Definition: Grid.tcc:502
Definition: StatsRenderer.h:44
Definition: AbstractGUIDriver.h:162
void Debug(const char *format,...)
Definition: Logger.h:301
Definition: GridPanel.h:49
Definition: AbstractGUIDriver.h:945
static void Destroy()
Definition: AssetManager.h:191
void RunHelper()
Definition: AbstractGUIDriver.h:1175
ByteSink * SetSink2(ByteSink *sink)
Definition: TeeByteSink.h:125
void Reset(SDL_Surface *dest, TTF_Font *font)
Definition: Drawing.cpp:75
void Message(const char *format,...)
Definition: Logger.h:287
virtual bool Dispatch(MouseEvent &event, const Rect &rect)
Definition: Panel.cpp:310
void SetExternalValue(bool *ptr)
Definition: AbstractCheckbox.h:168
virtual void OnClick(u8 button)
Definition: AbstractGUIDriver.h:307
virtual void PaintBorder(Drawing &config)
Definition: AbstractGUIDriver.h:1009
Definition: VArguments.h:48
void EmptyTile(const SPoint &tileLoc)
Definition: Grid.h:300
static void Initialize()
Definition: AssetManager.h:152
virtual void DoEpochEvents(OurGrid &grid, u32 epochs, u32 epochAEPS)
Definition: AbstractDriver.h:797
virtual void PostReinit(VArguments &args)
Definition: AbstractGUIDriver.h:829
TTF_Font * SetFont(TTF_Font *newFont)
Definition: Panel.cpp:135
u32 SetBackground(const u32 color)
Definition: Panel.h:220
#define U32_MAX
Definition: itype.h:95
T GetX() const
Definition: Point.tcc:34