# Five Card Studs Final Presentation ## Describe two APIs in detail 1. `ActionManager` 2. `GameDataInitializer` ## Use Cases 1. Use Case #1: Showing the user available betting actions In `GameLogic`: ``` pokerGame.getPossibleBetActionsForPlayer(PlayerInterface currentPlayer); ``` The `BetManager` determines which actions are available for `currentPlayer` and calls, for example: ``` actionManager.addAction("Fold"); ``` `GameLogic` then takes the returned `ActionManager` object and sends the possible user actions to the View: ``` actionManager.getListOfUserActions(); ``` 2. Use Case #2: In View: User clicks the Save and Exit button on the screen that is displayed between rounds. This button triggers the exportToXML() function of the XMLWriter class, and an XML file is written to the repo containing this data. Then, the user starts a new game and clicks the Load Saved Game button. This button calls the loadExistingGame() function in GameDataInitializer, which parses in the XML and creates a Data record with the same state as the saved game. ## Describe two designs 1. Stable: UI of the View 2. Changed significantly: game logic ## Contrast the completed project with where you planned it to be - Focused on good design of core functionality - Did not implement all planned features - Controller implemented later than expected - Networking was not successfully implemented, although Firebase was used ## Show a timeline of at least four significant events 1. Planning meeting: the first weekend after the project was assigned 2. Integration of parts: the night before the Sprint 2 deadline 3. Last minute bugs: the day of the Sprint 2 deadline 4. Refactoring the controller: the weekend before the Complete deadline ## Revisit your Team Contract - The parts about deadlines and communication were relevant throughout the project - Clearer guidelines on testing code would have helped us keep on track