1
This commit is contained in:
parent
3eaeea9686
commit
114a325b5f
@ -53,6 +53,7 @@ void Hero::FillMFObjectFull(cs::MFObjectFull* full_data)
|
|||||||
p->set_helmet(helmet);
|
p->set_helmet(helmet);
|
||||||
p->set_chest(chest);
|
p->set_chest(chest);
|
||||||
weapon.ToPB(p->mutable_weapon());
|
weapon.ToPB(p->mutable_weapon());
|
||||||
|
p->set_energy_shield(energy_shield);
|
||||||
}
|
}
|
||||||
|
|
||||||
ColliderComponent* Hero::GetBoxBound()
|
ColliderComponent* Hero::GetBoxBound()
|
||||||
|
@ -20,6 +20,7 @@ class Hero : public Entity
|
|||||||
int helmet = 0;
|
int helmet = 0;
|
||||||
int chest = 0;
|
int chest = 0;
|
||||||
Weapon weapon;
|
Weapon weapon;
|
||||||
|
int energy_shield = 0;
|
||||||
|
|
||||||
Hero();
|
Hero();
|
||||||
virtual ~Hero() override;
|
virtual ~Hero() override;
|
||||||
|
@ -875,12 +875,13 @@ void Human::OnGridListChange(std::set<GridCell*>& old_grid_list,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
for (GridCell* cell : dec_grid_list) {
|
for (GridCell* cell : dec_grid_list) {
|
||||||
for (Human* entity : cell->human_list) {
|
for (Human* entity : cell->human_list) {
|
||||||
|
#if 0
|
||||||
if (!room->grid_service.HumanInGridList(entity, grid_list)) {
|
if (!room->grid_service.HumanInGridList(entity, grid_list)) {
|
||||||
RemoveObjects(entity);
|
RemoveObjects(entity);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
for (Entity* entity : cell->entity_list) {
|
for (Entity* entity : cell->entity_list) {
|
||||||
if (!room->grid_service.EntityInGridList(entity, grid_list)) {
|
if (!room->grid_service.EntityInGridList(entity, grid_list)) {
|
||||||
@ -888,7 +889,9 @@ void Human::OnGridListChange(std::set<GridCell*>& old_grid_list,
|
|||||||
case ET_Building:
|
case ET_Building:
|
||||||
case ET_Obstacle:
|
case ET_Obstacle:
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
RemoveObjects(entity);
|
RemoveObjects(entity);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -899,7 +902,6 @@ void Human::OnGridListChange(std::set<GridCell*>& old_grid_list,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Human::FillMFActivePlayerData(cs::MFActivePlayerData* player_data)
|
void Human::FillMFActivePlayerData(cs::MFActivePlayerData* player_data)
|
||||||
@ -1113,12 +1115,21 @@ void Human::FillBodyState(::google::protobuf::RepeatedPtrField<::cs::MFBodyState
|
|||||||
state->set_left_time(std::max(0, skill_meta->i->last_time() * 1000 - passed_time));
|
state->set_left_time(std::max(0, skill_meta->i->last_time() * 1000 - passed_time));
|
||||||
state->set_lasting_time(skill_meta->i->last_time() * 1000);
|
state->set_lasting_time(skill_meta->i->last_time() * 1000);
|
||||||
}
|
}
|
||||||
|
if (a8::HasBitFlag(status, HS_SummonHero) && skill_meta) {
|
||||||
|
int passed_time = (room->frame_no - reflect_damage_frameno_) * FRAME_RATE_MS;
|
||||||
|
cs::MFBodyState* state = states->Add();
|
||||||
|
state->set_state_type(HS_SummonHero);
|
||||||
|
state->set_left_time(std::max(0, skill_meta->i->last_time() * 1000 - passed_time));
|
||||||
|
state->set_lasting_time(skill_meta->i->last_time() * 1000);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Human::SummonHero()
|
void Human::SummonHero()
|
||||||
{
|
{
|
||||||
Hero* hero = room->CreateHero(this);
|
Hero* hero = room->CreateHero(this);
|
||||||
if (hero) {
|
if (hero) {
|
||||||
|
hide_frameno_ = room->frame_no;
|
||||||
|
a8::SetBitFlag(status, HS_SummonHero);
|
||||||
room->xtimer.AddDeadLineTimerAndAttach(skill_meta->i->last_time() * SERVER_FRAME_RATE,
|
room->xtimer.AddDeadLineTimerAndAttach(skill_meta->i->last_time() * SERVER_FRAME_RATE,
|
||||||
a8::XParams()
|
a8::XParams()
|
||||||
.SetSender(this)
|
.SetSender(this)
|
||||||
@ -1134,7 +1145,12 @@ void Human::SummonHero()
|
|||||||
if (hero && hero->entity_type == ET_Hero) {
|
if (hero && hero->entity_type == ET_Hero) {
|
||||||
hum->room->RemoveObjectLater(hero);
|
hum->room->RemoveObjectLater(hero);
|
||||||
}
|
}
|
||||||
|
a8::UnSetBitFlag(hum->status, HS_SummonHero);
|
||||||
|
hum->need_sync_active_player = true;
|
||||||
|
hum->BroadcastFullState();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
need_sync_active_player = true;
|
||||||
|
BroadcastFullState();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,7 @@ enum HumanStatus
|
|||||||
HS_DefAdd = 7,
|
HS_DefAdd = 7,
|
||||||
HS_RecoverHP = 8,
|
HS_RecoverHP = 8,
|
||||||
HS_ReflectDamage = 9,
|
HS_ReflectDamage = 9,
|
||||||
|
HS_SummonHero = 10,
|
||||||
HS_End
|
HS_End
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -161,6 +162,7 @@ protected:
|
|||||||
long long defadd_frameno_ = 0;
|
long long defadd_frameno_ = 0;
|
||||||
long long recover_hp_frameno_ = 0;
|
long long recover_hp_frameno_ = 0;
|
||||||
long long reflect_damage_frameno_ = 0;
|
long long reflect_damage_frameno_ = 0;
|
||||||
|
long long summon_hero_frameno_ = 0;
|
||||||
a8::XTimerAttacher skill_xtimer_attacher_;
|
a8::XTimerAttacher skill_xtimer_attacher_;
|
||||||
|
|
||||||
std::array<int, IS_END - 1> inventory_ = {};
|
std::array<int, IS_END - 1> inventory_ = {};
|
||||||
|
@ -443,6 +443,7 @@ Hero* Room::CreateHero(Human* hum)
|
|||||||
hero->helmet = hum->helmet;
|
hero->helmet = hum->helmet;
|
||||||
hero->chest = hum->chest;
|
hero->chest = hum->chest;
|
||||||
hero->weapon = *hum->curr_weapon;
|
hero->weapon = *hum->curr_weapon;
|
||||||
|
hero->energy_shield = hum->energy_shield;
|
||||||
hero->Initialize();
|
hero->Initialize();
|
||||||
#if 1
|
#if 1
|
||||||
uniid_hash_[hero->entity_uniid] = hero;
|
uniid_hash_[hero->entity_uniid] = hero;
|
||||||
|
@ -316,7 +316,7 @@ message MFHeroFull
|
|||||||
optional int32 helmet = 16; //头盔
|
optional int32 helmet = 16; //头盔
|
||||||
optional int32 chest = 17; //防弹衣
|
optional int32 chest = 17; //防弹衣
|
||||||
optional MFWeapon weapon = 18; //武器
|
optional MFWeapon weapon = 18; //武器
|
||||||
|
optional int32 energy_shield = 19; //能量护盾
|
||||||
}
|
}
|
||||||
|
|
||||||
//烟雾-部分
|
//烟雾-部分
|
||||||
@ -485,6 +485,7 @@ message MFExplosion
|
|||||||
optional int32 item_id = 1; //配置表id
|
optional int32 item_id = 1; //配置表id
|
||||||
optional MFVector2D pos = 2; //位置
|
optional MFVector2D pos = 2; //位置
|
||||||
optional int32 player_id = 3; //玩家id
|
optional int32 player_id = 3; //玩家id
|
||||||
|
optional int32 effect = 4; //爆照效果 0:普通爆照 1:核爆炸
|
||||||
}
|
}
|
||||||
|
|
||||||
//烟雾
|
//烟雾
|
||||||
@ -552,6 +553,7 @@ message MFBodyState
|
|||||||
7: 护盾
|
7: 护盾
|
||||||
8: 回血
|
8: 回血
|
||||||
9: 反伤
|
9: 反伤
|
||||||
|
10: 分身
|
||||||
|
|
||||||
*/
|
*/
|
||||||
optional int32 state_type = 1;
|
optional int32 state_type = 1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user