#ifndef Logic_Header #define Logic_Header #include #include #include "LogicController.H" class Professor; class Budget; class Map; class GameState; //This represents a point on the abstract logic map. class Logic :: LogicController{ public: Logic() ; virtual ~Logic(); void LogicController::saveState(string filename) ; /*This function causes the LogicController to advance one time step, and update the GameState. It is called by the GUI.*/ void Logic::nextState() ; /*TODO: I'm sure we'll need to add more of these, but basically every single feature of the game needs a function like those below.*/ void Logic::addBuilding (BuildingType type, LogicPoint p) ; /*This is used when the user is about to click to put down a building. It lets the graphics draw a square, so the user can see where the building would go.*/ void Logic::getBuildingSize(BuildingType type) ; /*This destroys whatever is currently on the square.*/ void Logic::bulldoze (LogicPoint p); /*I'm assuming the Logic gets Professor *s when the user clicks on a "Professors" menu.*/ void Logic::fireProfessor(Professor *p) ; void Logic::hireProfessor(Professor *p) ; std::vector LogicController::getProfessors(); /*Obviously, we'll need to talk about what a Budget object looks like, so that the GUI can display one, modify it, and then return it to the Logic.*/ Budget* Logic::getBudget() ; private: LogicMap *m_map; GameState *m_state; }; #endif