📄 maingamestate.h.svn-base
字号:
#ifndef MAINGAMESTATE_H
#define MAINGAMESTATE_H
#include <list>
#include "hgegui.h"
#include "hgecolor.h"
#include "curvedani.h"
#include "hgeCurvedAni.h"
#include "common/gameState.h"
#include "common/entity.h"
#include "common/controlEntity.h"
#include "common/utils.h"
#include "common/entityManager.h"
#include "common/graphicEntity.h"
#include "verlet/verlet.h"
#include "game/dataCurvedAni.h"
using std::list;
class hgeFont;
class hgeSprite;
class CannonBall;
class Bullet;
class Map;
class AiTankController;
class RadarMap;
class TargetIndicator;
class CooldownIcon;
class TankContactInfo : public iContactInfo
{
public:
verlet::Contact *getData()
{
return contact;
}
const verlet::Contact *getData() const
{
return contact;
}
void setNumber(size_t num)
{
this->num = num;
}
size_t getNumber() const
{
return num;
}
virtual void Update()
{
static Point2f off[4] =
{
Point2f(-3, -3),
Point2f(3, -3),
Point2f(3, 3),
Point2f(-3, 3),
};
for(size_t i = 0; i < num; i++)
{
//RenderQueue::getSingleton().render(contact[i].m_xContacts[0] + off[0], contact[i].m_xContacts[1] + off[2], ARGB(255, 0, 255, 0));
//RenderQueue::getSingleton().render(contact[i].m_xContacts[0] + off[1], contact[i].m_xContacts[1] + off[3], ARGB(255, 0, 255, 0));
contact[i].ResolveOverlap();
contact[i].ResolveCollision();
}
}
protected:
verlet::Contact contact[8];
size_t num;
};
class TankCollisionChecker : public CollisionChecker
{
public:
bool checkCollision(iCollisionEntity *a, iCollisionEntity *b, iContactInfo &contactInfo);
int checkCount;
//protected:
float deltaTime;
};
class MainGameState : public GameState, public Singleton<MainGameState>
{
public:
MainGameState() : hge(0)
{
}
virtual ~MainGameState();
virtual void OnEnter();
virtual void OnLeave();
virtual void OnFrame();
virtual void OnRender();
CannonBall *createCannonBall();
Bullet *createBullet();
hgeFont *getFont()
{
return font;
}
void resetMyTank();
void addAiTank(const Point2f &pos, AiTankController *controller = 0);
void addRandomItem(const Point2f &pos);
void findPath(list<Point2f> &result, const Point2f &fromPos, const Point2f &toPos) const;
protected:
void ProcessTankControl(const hgeInputEvent &event);
HGE *hge;
HTEXTURE texGui;
hgeGUI *gui;
hgeFont *font;
cAni::iAnimResManager *animResManager;
Map *map;
hgeCurvedAniSystem *system;
SingleController tankController;
TankCollisionChecker tankCollisionChecker;
TankContactInfo tankContactInfo;
RadarMap *radar;
TargetIndicator *targetIndicator;
CooldownIcon *gunCooldown;
CooldownIcon *cannonCooldown;
RenderQueue renderQueue;
list<AiTankController*> aitankers;
// renderers instances
DataTriangleRenderer dataTriangleRenderer;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -