// Copyright (c) 2023 Alex Diener. All rights reserved. #ifndef __GameplayScreen_H__ #define __GameplayScreen_H__ typedef struct GameplayScreen GameplayScreen; #define GameplayScreen_superclass GameScreen #include "PROJECT_NAME/GameData.h" #include "PROJECT_NAME/GameScreen.h" #include "PROJECT_NAME/GameState.h" #include "PROJECT_NAME/GameView.h" #include "utilities/UndoStack.h" #define GameplayScreen_ivars \ GameScreen_ivars \ \ GameData * gameData; \ GameState * gameState; \ GameView * gameView; \ bool paused; \ RoomStateUndoData roomStateUndoData; \ UndoStack * undoStack; \ GameSavedState * savedGameState; #define GameplayScreen_vtable(self_type) \ GameScreen_vtable(self_type) stemobject_declare(GameplayScreen) GameplayScreen * GameplayScreen_create(void); bool GameplayScreen_init(GameplayScreen * self); void GameplayScreen_dispose(GameplayScreen * self); void GameplayScreen_update(GameplayScreen * self, double deltaTime); bool GameplayScreen_mouseMoved(GameplayScreen * self, float x, float y, float deltaX, float deltaY, unsigned int modifiers, double timestamp); bool GameplayScreen_mouseLeave(GameplayScreen * self, unsigned int modifiers, double timestamp); bool GameplayScreen_keyDown(GameplayScreen * self, unsigned int charCode, unsigned int keyCode, unsigned int modifiers, bool isRepeat, double timestamp); void GameplayScreen_listRenderables(GameplayScreen * self, RenderableIO * renderableIO, int drawOrderOffset, Rect4i clipBounds); bool GameplayScreen_needsRedraw(GameplayScreen * self); void GameplayScreen_activate(GameplayScreen * self, Screen * lastScreen, const char * transitionName); void GameplayScreen_deactivate(GameplayScreen * self, Screen * lastScreen, const char * transitionName); #endif