# PROJECT_PLAN
## Names
Daniela Bocanegra (dib4@duke.edu)
Kyra Chan (ktc22@duke.edu)
Erik Gregorio (eg158@duke.edu)
Jackson McNabb (jdm109@duke.edu)
Thomas Quintanilla (tq11@duke.edu)
* Kyra:
* Week 1: Focus on Building Basic Game Structure
* Focus on building hierarchy for View classes, e.g. ViewManager, StyledView, ViewScene
* For ViewManager, create method that switches between scenes
* For StyledView, create setDefaultCSS() method and attachCSS() method
* First create HomeScene and GameCenterScene with default Guest user before handling player profiles
* Work on using reflection to build GameCenterScene grid of games to select from (will need to use XML reader).
* Then work on using reflection to build overall structure of GameScene (will need to use XML reader) for:
* Top Menu, which should contain almost the same info for every game (HBox)
* Game Menu, which should contain game-specific info about the player's status (HBox)
* Game Area (default background image, player character, starting configuration, etc.)
* Action Toolbar, which should contain buttons for the user to play/pause game, preferences, and game statuses (VBox) – although these buttons may not be actionable yet
* User Toolbar, which should contain the player's info and game settings – some buttons may also not be actionable yet, such as update to premium
* Implement high scores feature (on front-end)
* Week 2: Focus on Implementing a Few Games + Player Profiles
* Create dark mode
* Build player profiles
* Implement save game / load game feature
* Implement customization tools, such as increasing animation speed, default powerups and available characters
* Implement more example games (~3 by this point) on front-end
* Week 3: Focus on Implementing More Variety in Games
* Implement more example games (10 by this point) on front-end
* Finish up any other incomplete features
* Thomas:
* Week 1: Focus on constructing the Frontend and Backend API and bridging them together
* Create a list of interactions that would occur between the backend and frontend.
* Develop frontendAPI interface with list of commands to bridge the two together.
* Construct Controller class to hold FrontendAPI and BackendAPI interfaces
* Help Kyra with any UI components needed
* Week 2: Work on front end object interaction
* Send any object interactions to back end to apply any game rules defined
* Handle collisions between objects based on game rules
* Help Kyra with any UI components needed
* Week 3: Focus on implementing more variety in games with Kyra
* Help build UI components needed for each specific game
* Design any levels needed for each game.
* Help Kyra with any UI components needed
* Daniela:
* Week 1: Focus on creating all interfaces and implemement them to begin building all necessary components for a basic game.
* Create a player object that is controlled by user input that can traverse game area
* Begin implementing a full game.
* Week 2: Implement more complex environment objecs. Bring together all game components. Have one full game.
* Begin working on second game/another variation.
* Week 3: Implement final additional features. Implement more games and variations.
* Work on implementing levels.
* Work on saving and loading game state.
* Erik:
* Week 1: Focus on creating and defining interactions between objects.
* Having enemies and platforms that interact with player.
* Begin implementing a full game.
* Week 2: Implement powerups. Bring together all game components. Have one full game.
* Develop player-power up interactions.
* Week 3: Implement final additional features. Implement more games and variations.
* Add functionality to enable/disable premium features.
* Implement game replay so that users can compete against themselves.
* Jackson
* Week 1: Develop and augment a simple XML creation mechanic capable of constructing proof-of-concept player databases that can then be read. This includes, when constructed, player usernames and passwords database and game type and basic preferences.
* Week 2/Week 3: As soon as functions and features on both the frontend and backend become developed work with devs to inherit data and dynamically change as data is then read mid-run or pre-run. Also, develop alert mechanic per feature to alert users to failures of parsing and allow for reified bug testing. Split up classess depending on direction of developments as development progresses.