1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
// Description:
// Callback manager.
//
// Copyright (C) 2001 Frank Becker
//
// This program is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free Software
// Foundation; either version 2 of the License, or (at your option) any later
// version.
//
// This program is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details
//
#include <Trace.hpp>
#include <ActionCallbacks.hpp>
#include <CallbackManager.hpp>
#include <FindHash.hpp>
#include <Hero.hpp>
CallbackManager::CallbackManager( void)
{
XTRACE();
}
CallbackManager::~CallbackManager()
{
XTRACE();
__gnu_cxx::hash_map< string, Callback*, __gnu_cxx::hash<string> >::const_iterator ci;
for( ci=_actionMap.begin(); ci!=_actionMap.end(); ci++)
{
delete ci->second;
}
_actionMap.clear();
}
void CallbackManager::init( void)
{
XTRACE();
//actions will add themselves to the CallbackManager
new WeaponFireAction( Hero::PRIMARY_WEAPON, "PrimaryFire");
new WeaponFireAction( Hero::SECONDARY_WEAPON, "SecondaryFire");
new WeaponFireAction( Hero::TERTIARY_WEAPON, "TertiaryFire");
new SnapshotAction();
new MotionAction();
new MotionRightAction();
new MotionLeftAction();
new MotionUpAction();
new MotionDownAction();
new ChangeContext();
new PauseGame();
new ConfirmAction();
new EscapeAction();
new CritterBoard();
}
void CallbackManager::addCallback( Callback *cb)
{
XTRACE();
LOG_INFO << "Adding callback for action ["
<< cb->getActionName() << "]" << endl;
_actionMap[ cb->getActionName()] = cb;
}
Callback *CallbackManager::getCallback( string actionString)
{
XTRACE();
Callback * cb = findHash( actionString, _actionMap);
if( !cb)
{
LOG_ERROR << "Unable to find callback for " << actionString << endl;
string dummyAction = "TertiaryFire";
cb = findHash( dummyAction, _actionMap);
}
return cb;
}
|