This commit is contained in:
aozhiwei 2019-04-15 14:09:52 +08:00
parent 16eab602ee
commit 4f4a2bacd1
12 changed files with 65 additions and 3 deletions

View File

@ -17,6 +17,7 @@ Building::~Building()
void Building::Initialize()
{
Entity::Initialize();
RecalcSelfCollider();
}

View File

@ -18,6 +18,7 @@ Bullet::~Bullet()
void Bullet::Initialize()
{
Entity::Initialize();
RecalcSelfCollider();
}

View File

@ -75,6 +75,7 @@ enum InventorySlot_e
IS_FRAG = 5,
IS_SMOKE = 6,
IS_HEALTHKIT = 7,
IS_PAIN_KILLER = 8,
IS_1XSCOPE = 12,
IS_2XSCOPE = 13,

View File

@ -2,12 +2,23 @@
#include "entity.h"
#include "collider.h"
#include "room.h"
Entity::Entity()
{
}
Entity::~Entity()
{
ClearColliders();
}
void Entity::Initialize()
{
xtimer_attacher.xtimer = &room->xtimer;
}
bool Entity::TestCollision(Entity* b)
{
for (auto& a_collider : colliders) {

View File

@ -46,12 +46,13 @@ class Entity
int updated_times = 0;
std::list<ColliderComponent*> colliders;
bool deleted = false;
a8::XTimerAttacher xtimer_attacher;
Obstacle* last_collision_door = nullptr;
Entity() {};
Entity();
virtual ~Entity();
virtual void Initialize() {};
virtual void Initialize();
virtual void Update(int delta_time) {};
virtual void FillMFObjectPart(cs::MFObjectPart* part_data) {};
virtual void FillMFObjectFull(cs::MFObjectFull* full_data) {};

View File

@ -38,6 +38,7 @@ Human::~Human()
void Human::Initialize()
{
Entity::Initialize();
}
float Human::GetSpeed()

View File

@ -4,6 +4,7 @@
#include "metamgr.h"
#include "room.h"
#include "collider.h"
#include "entity.h"
Loot::Loot():Entity()
{
@ -16,6 +17,7 @@ Loot::~Loot()
void Loot::Initialize()
{
Entity::Initialize();
RecalcSelfCollider();
}

View File

@ -17,6 +17,7 @@ Obstacle::~Obstacle()
void Obstacle::Initialize()
{
Entity::Initialize();
health = meta->i->hp();
RecalcSelfCollider();
}

View File

@ -27,6 +27,7 @@ Player::~Player()
void Player::Initialize()
{
Human::Initialize();
health = meta->i->health();
RecalcSelfCollider();
}
@ -200,6 +201,22 @@ void Player::UpdateAction()
}
}
break;
case IS_PAIN_KILLER:
{
MetaData::Equip* item_meta = MetaMgr::Instance()->GetEquipBySlotId(action_item_id);
if (item_meta){
if (inventory[item_meta->i->_inventory_slot()] > 0) {
float old_health = health;
health += item_meta->i->heal();
health = std::min(health, GetMaxHP());
stats.heal_amount += health - old_health;
--inventory[item_meta->i->_inventory_slot()];
need_sync_active_player = true;
SyncAroundPlayers();
}
}
}
break;
default:
{
}
@ -241,6 +258,19 @@ void Player::UpdateUseItemIdx()
}
}
break;
case IS_PAIN_KILLER:
{
MetaData::Equip* item_meta = MetaMgr::Instance()->GetEquipBySlotId(use_item_idx);
if (item_meta) {
StartAction(
AT_UseItem,
item_meta->i->use_time(),
use_item_idx,
0
);
}
}
break;
default:
{

View File

@ -25,6 +25,12 @@ const int ANDROID_NUM = 0;
const int ANDROID_NUM = 10;
#endif
static long long RoomXGetTickCount(void* context)
{
Room* room = (Room*)context;
return room->frame_no;
}
Room::~Room()
{
@ -32,6 +38,8 @@ Room::~Room()
void Room::Init()
{
xtimer.Init(RoomXGetTickCount, this, 100, 100);
ShuaAndroid();
CreateThings();
stats_timer_ = a8::Timer::Instance()->AddRepeatTimer(
@ -61,6 +69,7 @@ void Room::Update(int delta_time)
long long begin_tick = a8::XGetTickCount();
elapsed_time_ += delta_time;
while (elapsed_time_ >= 50) {
xtimer.Update();
if (frame_no % 2 == 0) {
ResetFrameData();
UpdateGas();

View File

@ -1,5 +1,8 @@
#pragma once
#include <a8/xtimer.h>
#include <a8/timer_attacher.h>
#include "framedata.h"
namespace MetaData
@ -31,6 +34,7 @@ public:
bool game_over = false;
long long game_over_frameno = 0;
RoomProfile profile;
a8::XTimer xtimer;
~Room();
void Init();
@ -83,7 +87,6 @@ private:
void OutputDebugLog();
private:
a8::TimerAttacher timer_attacher_;
timer_list* stats_timer_ = nullptr;
int elapsed_time_ = 0;
int alive_count_ = 0;

View File

@ -18,6 +18,7 @@ Smoke::~Smoke()
void Smoke::Initialize()
{
Entity::Initialize();
}
void Smoke::Update(int delta_time)