// Copyright (c) 2014 Alex Diener. All rights reserved. #ifndef __GameSession_H__ #define __GameSession_H__ #ifdef __cplusplus extern "C" { #endif typedef struct GameSession GameSession; #define BUILT_IN_LEVEL_SET_COUNT 4 #define LEVEL_SET_COUNT_MAX 28 #include "dynamictypes/AssociativeArray.h" #include "inputcontroller/InputMap.h" #include "preferences/Preferences.h" #include "resourcemanager/ResourceManager.h" #include "stemobject/StemObject.h" #include "utilities/EventDispatcher.h" #include "watertowerclassic/LevelSetModel.h" #define GameSession_structContents(self_type) \ StemObject_structContents(self_type) \ \ Preferences * preferences; \ InputMap * inputMap; \ ResourceManager * resourceManager; \ AssociativeArray * importedLevelNames; \ LevelSetModel ** levelSets; \ unsigned int levelSetCount; \ unsigned int selectedLevelSetIndex; \ LevelSetModel * levelSet; \ unsigned int startLevelIndex; \ bool testingLevel; \ bool viewingSettingsFromGameplay; \ bool hasUnsavedLevelChanges; stemobject_struct_definition(GameSession) GameSession * GameSession_create(); bool GameSession_init(GameSession * self); void GameSession_dispose(GameSession * self); void GameSession_saveControlBindings(GameSession * self); void GameSession_savePreferences(GameSession * self); void GameSession_addLevelSet(GameSession * self, LevelSetModel * levelSet); void GameSession_deleteLevelSet(GameSession * self, unsigned int levelSetIndex); void GameSession_replaceLevelSetAtIndex(GameSession * self, unsigned int levelSetIndex, LevelSetModel * levelSet); void GameSession_levelSetNameUpdated(GameSession * self, unsigned int levelIndex); #ifdef __cplusplus } #endif #endif