1
This commit is contained in:
parent
16eab602ee
commit
4f4a2bacd1
@ -17,6 +17,7 @@ Building::~Building()
|
||||
|
||||
void Building::Initialize()
|
||||
{
|
||||
Entity::Initialize();
|
||||
RecalcSelfCollider();
|
||||
}
|
||||
|
||||
|
@ -18,6 +18,7 @@ Bullet::~Bullet()
|
||||
|
||||
void Bullet::Initialize()
|
||||
{
|
||||
Entity::Initialize();
|
||||
RecalcSelfCollider();
|
||||
}
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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) {
|
||||
|
@ -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) {};
|
||||
|
@ -38,6 +38,7 @@ Human::~Human()
|
||||
|
||||
void Human::Initialize()
|
||||
{
|
||||
Entity::Initialize();
|
||||
}
|
||||
|
||||
float Human::GetSpeed()
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
@ -17,6 +17,7 @@ Obstacle::~Obstacle()
|
||||
|
||||
void Obstacle::Initialize()
|
||||
{
|
||||
Entity::Initialize();
|
||||
health = meta->i->hp();
|
||||
RecalcSelfCollider();
|
||||
}
|
||||
|
@ -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:
|
||||
{
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
|
@ -18,6 +18,7 @@ Smoke::~Smoke()
|
||||
|
||||
void Smoke::Initialize()
|
||||
{
|
||||
Entity::Initialize();
|
||||
}
|
||||
|
||||
void Smoke::Update(int delta_time)
|
||||
|
Loading…
x
Reference in New Issue
Block a user