00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <tankgraph/TankKeyboardControl.h>
00022 #include <tankgraph/TankKeyboardControlUtil.h>
00023 #include <tank/TankContainer.h>
00024 #include <tank/TankState.h>
00025 #include <client/ScorchedClient.h>
00026 #include <client/ClientState.h>
00027 #include <common/Defines.h>
00028
00029 TankKeyboardControl * TankKeyboardControl::instance_ = 0;
00030
00031 TankKeyboardControl * TankKeyboardControl::instance()
00032 {
00033 if (!instance_)
00034 {
00035 instance_ = new TankKeyboardControl;
00036 }
00037
00038 return instance_;
00039 }
00040
00041 TankKeyboardControl::TankKeyboardControl() :
00042 GameStateI("TankKeyboardControl")
00043 {
00044
00045 }
00046
00047 TankKeyboardControl::~TankKeyboardControl()
00048 {
00049
00050 }
00051
00052 void TankKeyboardControl::enterState(const unsigned state)
00053 {
00054 if (state == ClientState::StateShot)
00055 {
00056 Tank *currentTank =
00057 ScorchedClient::instance()->getTankContainer().getCurrentTank();
00058 if (currentTank)
00059 {
00060 if (currentTank->getState().getState() == TankState::sNormal)
00061 {
00062 TankKeyboardControlUtil::endPlayMove(currentTank);
00063 }
00064 }
00065 }
00066 }
00067
00068 void TankKeyboardControl::keyboardCheck(const unsigned state, float frameTime,
00069 char *buffer, unsigned int keyState,
00070 KeyboardHistory::HistoryElement *history, int hisCount,
00071 bool &skipRest)
00072 {
00073 Tank *currentTank =
00074 ScorchedClient::instance()->getTankContainer().getCurrentTank();
00075 if (currentTank)
00076 {
00077 if (currentTank->getState().getState() == TankState::sNormal)
00078 {
00079 TankKeyboardControlUtil::keyboardCheck(currentTank, state, frameTime,
00080 buffer, keyState);
00081 }
00082 }
00083 }