home *** CD-ROM | disk | FTP | other *** search
- #include "..\GAME\GAME.HPP"
-
- // ------------------------------------------------------------------
- // File: GAME.CPP
- // Path: ...\REHACK\GAME\GAME.CPP
- // Version: 0.01
- // Author: Pat Reilly
- // CIS Id: 71333,2764
- // Created On: 6/28/93
- // Modified On:
- // Description: Game class for REHACK. See GAME.TXT for
- // more details.
- // Tabs: 4
- // ------------------------------------------------------------------
-
- GameInit::GameInit(VisMaker makeCloseUp, VisMaker makeAutoMap,
- VisMaker makeButtons, VisMaker makeCharacter,
- VisMaker makeMessage) :
- closeUpMaker(makeCloseUp),
- autoMapMaker(makeAutoMap),
- buttonsMaker(makeButtons),
- characterMaker(makeCharacter),
- messageMaker(makeMessage)
- {}
-
-
- EventQueue Game::eventQueue;
- Mouse Game::mouse;
- Keyboard Game::keyboard;
- Game* Game::game = 0;
- Visible* Game::closeUp = 0;
- Visible* Game::autoMap = 0;
- Visible* Game::buttons = 0;
- Visible* Game::character = 0;
- Visible* Game::message = 0;
-
- Game::Game(const Rect& aBounds) :
- Window(aBounds),
- GameInit(0, 0, 0, 0, 0)
- {
- game = this;
- Rect rect = getLocalBounds();
-
- // Insert the subwindows.
- if(closeUpMaker != 0)
- {
- closeUp = closeUpMaker(rect);
- insert(closeUp);
- }
- if(autoMapMaker != 0)
- {
- autoMap = autoMapMaker(rect);
- insert(autoMap);
- }
- if(buttonsMaker != 0)
- {
- buttons = buttonsMaker(rect);
- insert(buttons);
- }
- if(characterMaker != 0)
- {
- character = characterMaker(rect);
- insert(character);
- }
- if(messageMaker != 0)
- {
- message = messageMaker(rect);
- insert(message);
- }
-
- // Initialize the mouse.
- mouse.install();
- rect.bottomRight.x--;
- rect.bottomRight.y--;
- mouse.setBounds(rect);
- mouse.show();
-
- // install keyboard routines
- keyboard.install();
-
- }
-
- Game::~Game()
- {
- mouse.remove();
- keyboard.remove();
- }
-
- void Game::get(Event& event)
- {
- eventQueue.get(event);
- if(event.isNull())
- idle();
- }
-
- void Game::handle(Event& event)
- {
- if((event.type & Message) && event.msg.id == IdQuit)
- {
- stopRunning(event.msg.id);
- event.clear();
- }
- else
- Window::handle(event);
- }
-
- void Game::idle()
- {}
-
- bool Game::sendMessage(Visible* obj, word type, word id, void* info)
- {
- Event event;
-
- event.type = type;
- event.msg.id = id;
- event.msg.pointerValue = info;
-
- if(obj != 0)
- {
- obj->handle(event);
- return bool(event.isNull());
- }
- else
- return false;
- }
-