rename frame_no -> frameno
This commit is contained in:
parent
50424108fa
commit
dab78aad55
@ -20,17 +20,17 @@ AndroidAI::~AndroidAI()
|
||||
void AndroidAI::Update(int delta_time)
|
||||
{
|
||||
Human* hum = (Human*)owner;
|
||||
state_elapsed_time += delta_time;
|
||||
state_elapsed_time_ += delta_time;
|
||||
if (hum->dead) {
|
||||
return;
|
||||
}
|
||||
if (hum->playing_skill) {
|
||||
hum->UpdateSkill();
|
||||
}
|
||||
switch (state) {
|
||||
switch (state_) {
|
||||
case AS_thinking:
|
||||
{
|
||||
if (state_elapsed_time > 1500 + rand() % 3000) {
|
||||
if (state_elapsed_time_ > 1500 + rand() % 3000) {
|
||||
int rnd = rand();
|
||||
if (rnd % 100 < 30) {
|
||||
ChangeToState(AS_moving);
|
||||
@ -42,7 +42,7 @@ void AndroidAI::Update(int delta_time)
|
||||
break;
|
||||
case AS_moving:
|
||||
{
|
||||
if (state_elapsed_time < 1000 + rand() % 2000) {
|
||||
if (state_elapsed_time_ < 1000 + rand() % 2000) {
|
||||
DoMove();
|
||||
} else {
|
||||
int rnd = rand();
|
||||
@ -56,7 +56,7 @@ void AndroidAI::Update(int delta_time)
|
||||
break;
|
||||
case AS_attack:
|
||||
{
|
||||
if (state_elapsed_time < 1000) {
|
||||
if (state_elapsed_time_ < 1000) {
|
||||
DoAttack();
|
||||
} else {
|
||||
int rnd = rand();
|
||||
@ -71,11 +71,38 @@ void AndroidAI::Update(int delta_time)
|
||||
}
|
||||
}
|
||||
|
||||
void AndroidAI::LockEnemy(Human* enemy)
|
||||
{
|
||||
locked_enemy_ = enemy;
|
||||
if (state_ != AS_attack) {
|
||||
ChangeToState(AS_attack);
|
||||
}
|
||||
}
|
||||
|
||||
void AndroidAI::LockEnemy(int target_id)
|
||||
{
|
||||
Human* enemy = HumMaster()->room->GetHumanByUniId(target_id);
|
||||
if (enemy) {
|
||||
LockEnemy(enemy);
|
||||
locked_frameno_ = HumMaster()->room->frameno;
|
||||
}
|
||||
}
|
||||
|
||||
void AndroidAI::UnLockEnemy()
|
||||
{
|
||||
locked_enemy_ = nullptr;
|
||||
}
|
||||
|
||||
Human* AndroidAI::HumMaster()
|
||||
{
|
||||
return (Human*)owner;
|
||||
}
|
||||
|
||||
void AndroidAI::ChangeToState(AndroidState_e to_state)
|
||||
{
|
||||
state = to_state;
|
||||
state_elapsed_time = 0;
|
||||
switch (state) {
|
||||
state_ = to_state;
|
||||
state_elapsed_time_ = 0;
|
||||
switch (state_) {
|
||||
case AS_moving:
|
||||
{
|
||||
Human* hum = (Human*)owner;
|
||||
|
@ -6,22 +6,25 @@ enum AndroidState_e
|
||||
{
|
||||
AS_thinking,
|
||||
AS_moving,
|
||||
AS_attack
|
||||
AS_attack,
|
||||
};
|
||||
|
||||
class Human;
|
||||
class AndroidAI : public AIComponent
|
||||
{
|
||||
public:
|
||||
AndroidState_e state = AS_thinking;
|
||||
int state_elapsed_time = 0;
|
||||
Human* last_hiter = nullptr;
|
||||
|
||||
virtual ~AndroidAI() override;
|
||||
virtual void Update(int delta_time) override;
|
||||
|
||||
private:
|
||||
void LockEnemy(Human* enemy);
|
||||
void LockEnemy(int target_id);
|
||||
void UnLockEnemy();
|
||||
|
||||
private:
|
||||
AndroidState_e state_ = AS_thinking;
|
||||
int state_elapsed_time_ = 0;
|
||||
|
||||
Human* HumMaster();
|
||||
void ChangeToState(AndroidState_e to_state);
|
||||
|
||||
void DoMove();
|
||||
@ -29,4 +32,7 @@ private:
|
||||
|
||||
void Shot(Human* enemy);
|
||||
void UseSkill(Human* enemy);
|
||||
|
||||
Human* locked_enemy_ = nullptr;
|
||||
long long locked_frameno_ = 0;
|
||||
};
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
int Buff::GetLeftTime()
|
||||
{
|
||||
int passed_ms = (owner->room->frame_no - add_frameno) * kFRAME_RATE_MS;
|
||||
int passed_ms = (owner->room->frameno - add_frameno) * kFRAME_RATE_MS;
|
||||
return std::max(GetLastingTime() - passed_ms, 0);
|
||||
}
|
||||
|
||||
|
@ -126,7 +126,7 @@ void Bullet::OnHit(std::set<Entity*>& objects)
|
||||
|
||||
obstacle->health = std::max(0.0f, obstacle->health - finaly_dmg);
|
||||
obstacle->dead = obstacle->health <= 0.01f;
|
||||
obstacle->dead_frameno = room->frame_no;
|
||||
obstacle->dead_frameno = room->frameno;
|
||||
if (obstacle->dead) {
|
||||
if (obstacle->meta->i->damage_dia() > 0.01f &&
|
||||
obstacle->meta->i->damage() > 0.01f) {
|
||||
|
@ -85,7 +85,7 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(const Human* hum)
|
||||
{
|
||||
if (room->BattleStarted()) {
|
||||
int game_left_time = MetaMgr::Instance()->game_duration * 1000 -
|
||||
(room->frame_no - room->battle_start_frameno_) * kFRAME_RATE_MS;
|
||||
(room->frameno - room->battle_start_frameno_) * kFRAME_RATE_MS;
|
||||
game_left_time = std::max(0, game_left_time);
|
||||
msg->set_game_left_time(game_left_time);
|
||||
} else {
|
||||
|
@ -71,7 +71,7 @@ void GameLog::GameEnd(Player* hum)
|
||||
prop->SetVal("map_name", hum->room->map_meta->i->map_name());
|
||||
prop->SetVal("map_tpl_name", hum->room->map_tpl_name);
|
||||
if (!hum->dead) {
|
||||
prop->SetVal("alive_time", hum->room->frame_no * 1000.0f / kSERVER_FRAME_RATE);
|
||||
prop->SetVal("alive_time", hum->room->frameno * 1000.0f / kSERVER_FRAME_RATE);
|
||||
} else {
|
||||
prop->SetVal("alive_time", hum->dead_frameno * 1000.0f / kSERVER_FRAME_RATE);
|
||||
}
|
||||
|
@ -203,7 +203,7 @@ void Human::Shot()
|
||||
if (curr_weapon->ammo <= 0) {
|
||||
AutoLoadingBullet();
|
||||
}
|
||||
last_shot_frameno_ = room->frame_no;
|
||||
last_shot_frameno_ = room->frameno;
|
||||
need_sync_active_player = true;
|
||||
}
|
||||
|
||||
@ -381,7 +381,7 @@ void Human::UpdateSkill()
|
||||
if (skill_meta_) {
|
||||
if (curr_skill_phase < skill_meta_->phases.size()) {
|
||||
MetaData::SkillPhase* phase = &skill_meta_->phases[curr_skill_phase];
|
||||
if (phase->time_offset >= (int)((room->frame_no - last_use_skill_frameno_) * kFRAME_RATE_MS)) {
|
||||
if (phase->time_offset >= (int)((room->frameno - last_use_skill_frameno_) * kFRAME_RATE_MS)) {
|
||||
ProcSkillPhase(phase);
|
||||
++curr_skill_phase;
|
||||
}
|
||||
@ -424,7 +424,7 @@ void Human::StartAction(ActionType_e action_type,
|
||||
return;
|
||||
}
|
||||
this->action_type = action_type;
|
||||
this->action_frameno = room->frame_no;
|
||||
this->action_frameno = room->frameno;
|
||||
this->action_duration = action_duration;
|
||||
this->action_item_id = item_id;
|
||||
this->action_target_id = target_id;
|
||||
@ -462,7 +462,7 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
|
||||
stats.killer_name = killer_name;
|
||||
stats.weapon_id = weapon_id;
|
||||
dead = true;
|
||||
dead_frameno = room->frame_no;
|
||||
dead_frameno = room->frameno;
|
||||
room->xtimer.AddDeadLineTimerAndAttach(MetaMgr::Instance()->revive_time * kSERVER_FRAME_RATE,
|
||||
a8::XParams()
|
||||
.SetSender(this),
|
||||
@ -500,6 +500,7 @@ void Human::DecHP(float dec_hp, int killer_id, const std::string& killer_name, i
|
||||
last_attacker_id = killer_id;
|
||||
last_attacker_name = killer_name;
|
||||
last_attacker_weapon_id = weapon_id;
|
||||
last_attacked_frameno = room->frameno;
|
||||
SyncAroundPlayers();
|
||||
}
|
||||
|
||||
@ -571,7 +572,7 @@ void Human::DoSkill()
|
||||
skill_target_pos = a8::Vec2();
|
||||
skill_param1 = 0.0f;
|
||||
playing_skill = true;
|
||||
last_use_skill_frameno_ = room->frame_no;
|
||||
last_use_skill_frameno_ = room->frameno;
|
||||
Entity* entity = room->GetEntityByUniId(skill_target_id);
|
||||
if (entity && entity->entity_type == kET_Player) {
|
||||
Human* hum = (Human*)entity;
|
||||
@ -723,7 +724,7 @@ void Human::FillMFActivePlayerData(cs::MFActivePlayerData* player_data)
|
||||
if (action_type != kAT_None) {
|
||||
int duration = std::max(0,
|
||||
action_duration -
|
||||
(int)((room->frame_no - action_frameno) * 1.0f / kSERVER_FRAME_RATE) * 1000
|
||||
(int)((room->frameno - action_frameno) * 1.0f / kSERVER_FRAME_RATE) * 1000
|
||||
);
|
||||
player_data->set_action_item_id(action_item_id);
|
||||
player_data->set_action_duration(duration);
|
||||
@ -755,7 +756,7 @@ void Human::FillMFGasData(cs::MFGasData* gas_data)
|
||||
gas_data->set_mode(room->gas_data.gas_mode);
|
||||
if (room->gas_data.gas_mode == kGasInactive) {
|
||||
long long duration = MetaMgr::Instance()->gas_inactive_time * kSERVER_FRAME_RATE -
|
||||
(room->frame_no - room->gas_data.gas_start_frameno);
|
||||
(room->frameno - room->gas_data.gas_start_frameno);
|
||||
gas_data->set_duration(std::max(duration * 50, (long long)1000) / 1000);
|
||||
} else {
|
||||
#if 0
|
||||
@ -763,7 +764,7 @@ void Human::FillMFGasData(cs::MFGasData* gas_data)
|
||||
gas_data->set_duration(0);
|
||||
} else {
|
||||
long long duration = room->gas_data.old_area_meta->i->wait_time() * 20 -
|
||||
(room->frame_no - room->gas_data.gas_start_frameno);
|
||||
(room->frameno - room->gas_data.gas_start_frameno);
|
||||
gas_data->set_duration(std::max(duration * 50, (long long)1000) / 1000);
|
||||
}
|
||||
#endif
|
||||
@ -967,7 +968,7 @@ void Human::UpdateAction()
|
||||
{
|
||||
int duration = std::max(0,
|
||||
action_duration -
|
||||
(int)((room->frame_no - action_frameno) * 1.0f / kSERVER_FRAME_RATE) * 1000
|
||||
(int)((room->frameno - action_frameno) * 1.0f / kSERVER_FRAME_RATE) * 1000
|
||||
);
|
||||
if (duration <= 0) {
|
||||
switch (action_type) {
|
||||
@ -1076,7 +1077,7 @@ int Human::GetSkillLeftTime()
|
||||
if (last_use_skill_frameno_ == 0) {
|
||||
return 0;
|
||||
} else {
|
||||
int passed_time = (room->frame_no - last_use_skill_frameno_) * kFRAME_RATE_MS;
|
||||
int passed_time = (room->frameno - last_use_skill_frameno_) * kFRAME_RATE_MS;
|
||||
int skill_left_time = std::max(0, skill_meta_->i->skill_cd() * 1000 - passed_time);
|
||||
return skill_left_time;
|
||||
}
|
||||
@ -1149,7 +1150,7 @@ void Human::AddBuff(MetaData::Buff* buff_meta)
|
||||
buff->owner = this;
|
||||
buff->meta = buff_meta;
|
||||
//buff->skill_meta
|
||||
buff->add_frameno = room->frame_no;
|
||||
buff->add_frameno = room->frameno;
|
||||
buff->xtimer_attacher.xtimer = &room->xtimer;
|
||||
buff_effect_[buff->meta->i->buff_effect()] = buff;
|
||||
room->frame_event.AddBuff(this, buff);
|
||||
@ -1497,7 +1498,7 @@ void Human::_UpdateMove(int speed)
|
||||
void Human::_UpdateAssaultMove()
|
||||
{
|
||||
Buff* buff = GetBuffByEffectId(kBET_Assault);
|
||||
if (!buff || (room->frame_no - buff->add_frameno) * kFRAME_RATE_MS < buff->meta->param1) {
|
||||
if (!buff || (room->frameno - buff->add_frameno) * kFRAME_RATE_MS < buff->meta->param1) {
|
||||
return;
|
||||
}
|
||||
bool move_end = false;
|
||||
|
@ -43,6 +43,7 @@ class Human : public Entity
|
||||
int last_attacker_id = 0;
|
||||
std::string last_attacker_name;
|
||||
int last_attacker_weapon_id = 0;
|
||||
long long last_attacked_frameno = 0;
|
||||
|
||||
a8::Vec2 move_dir;
|
||||
a8::Vec2 attack_dir;
|
||||
|
@ -113,7 +113,7 @@ void Obstacle::FillMFObjectFull(cs::MFObjectFull* full_data)
|
||||
p->set_obstacle_id(meta->i->thing_id());
|
||||
p->set_health(health);
|
||||
p->set_dead(dead);
|
||||
p->set_dead_at_thisframe(dead ? dead_frameno <= room->frame_no : false);
|
||||
p->set_dead_at_thisframe(dead ? dead_frameno <= room->frameno : false);
|
||||
if (master) {
|
||||
p->set_master_id(master->entity_uniid);
|
||||
}
|
||||
@ -227,7 +227,7 @@ void Obstacle::Explosion()
|
||||
|
||||
obstacle->health = std::max(0.0f, obstacle->health - finaly_dmg);
|
||||
obstacle->dead = obstacle->health <= 0.01f;
|
||||
obstacle->dead_frameno = room->frame_no;
|
||||
obstacle->dead_frameno = room->frameno;
|
||||
if (obstacle->dead) {
|
||||
room->ScatterDrop(obstacle->pos, obstacle->meta->i->drop());
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ void Player::Update(int delta_time)
|
||||
UpdateMove();
|
||||
}
|
||||
}
|
||||
if (room->frame_no % 2 == 0) {
|
||||
if (room->frameno % 2 == 0) {
|
||||
if (shot_start || shot_hold) {
|
||||
UpdateShot();
|
||||
}
|
||||
@ -142,7 +142,7 @@ void Player::UpdateShot()
|
||||
++series_shot_frames;
|
||||
if (last_shot_frameno_ == 0 ||
|
||||
(
|
||||
(room->frame_no - last_shot_frameno_) * (1000 / kSERVER_FRAME_RATE)) >=
|
||||
(room->frameno - last_shot_frameno_) * (1000 / kSERVER_FRAME_RATE)) >=
|
||||
curr_weapon->meta->i->fire_rate()
|
||||
) {
|
||||
Shot();
|
||||
@ -564,7 +564,7 @@ void Player::_CMLeave(f8::MsgHdr& hdr, const cs::CMLeave& msg)
|
||||
BeKill(entity_uniid, name, kVW_Spectate);
|
||||
}
|
||||
leave_ = true;
|
||||
leave_frameno_ = room->frame_no;
|
||||
leave_frameno_ = room->frameno;
|
||||
}
|
||||
cs::SMLeave respmsg;
|
||||
SendNotifyMsg(respmsg);
|
||||
|
@ -26,7 +26,7 @@
|
||||
static long long RoomXGetTickCount(void* context)
|
||||
{
|
||||
Room* room = (Room*)context;
|
||||
return room->frame_no;
|
||||
return room->frameno;
|
||||
}
|
||||
|
||||
Room::~Room()
|
||||
@ -90,19 +90,19 @@ void Room::UnInit()
|
||||
void Room::Update(int delta_time)
|
||||
{
|
||||
xtimer.Update();
|
||||
if (game_over && frame_no - game_over_frameno > kSERVER_FRAME_RATE * 20) {
|
||||
if (game_over && frameno - game_over_frameno > kSERVER_FRAME_RATE * 20) {
|
||||
return;
|
||||
}
|
||||
|
||||
elapsed_time_ += delta_time;
|
||||
while (elapsed_time_ >= 50) {
|
||||
if (frame_no % 2 == 0) {
|
||||
if (frameno % 2 == 0) {
|
||||
UpdateGas();
|
||||
}
|
||||
for (auto& pair : moveable_hash_) {
|
||||
if (pair.second->entity_type == kET_Player &&
|
||||
pair.second->updated_times <= 0) {
|
||||
if (frame_no % 2 == 0) {
|
||||
if (frameno % 2 == 0) {
|
||||
pair.second->Update(50);
|
||||
pair.second->updated_times++;
|
||||
}
|
||||
@ -111,13 +111,13 @@ void Room::Update(int delta_time)
|
||||
pair.second->updated_times++;
|
||||
}
|
||||
}
|
||||
if (frame_no % 2 == 0) {
|
||||
if (frameno % 2 == 0) {
|
||||
for (auto& pair : human_hash_) {
|
||||
pair.second->SendUpdateMsg();
|
||||
}
|
||||
frame_event.Clear();
|
||||
}
|
||||
++frame_no;
|
||||
++frameno;
|
||||
elapsed_time_ -= 50;
|
||||
}
|
||||
}
|
||||
@ -179,7 +179,7 @@ void Room::AddPlayer(Player* hum)
|
||||
hum->move_dir = hum->attack_dir;
|
||||
}
|
||||
hum->room = this;
|
||||
hum->join_frameno = frame_no;
|
||||
hum->join_frameno = frameno;
|
||||
hum->Initialize();
|
||||
born_point_human_hash_[hum->born_point] = hum;
|
||||
uniid_hash_[hum->entity_uniid] = hum;
|
||||
@ -814,17 +814,17 @@ void Room::UpdateGas()
|
||||
switch (gas_data.gas_mode) {
|
||||
case kGasInactive:
|
||||
{
|
||||
if (frame_no - gas_data.gas_start_frameno >=
|
||||
if (frameno - gas_data.gas_start_frameno >=
|
||||
MetaMgr::Instance()->gas_inactive_time * kSERVER_FRAME_RATE) {
|
||||
gas_data.gas_mode = kGasStarted;
|
||||
gas_data.gas_start_frameno = frame_no;
|
||||
gas_data.gas_start_frameno = frameno;
|
||||
if (human_hash_.size() < kROOM_MAX_PLAYER_NUM) {
|
||||
CreateAndroid(kROOM_MAX_PLAYER_NUM - human_hash_.size());
|
||||
NotifyUiUpdate();
|
||||
}
|
||||
NotifyWxVoip();
|
||||
RoomMgr::Instance()->ActiveRoom(room_uuid);
|
||||
battle_start_frameno_ = frame_no;
|
||||
battle_start_frameno_ = frameno;
|
||||
battle_report_timer_ = xtimer.AddDeadLineTimerAndAttach(kSERVER_FRAME_RATE * MetaMgr::Instance()->game_duration,
|
||||
a8::XParams()
|
||||
.SetSender(this),
|
||||
@ -1061,7 +1061,7 @@ void Room::BattleReport()
|
||||
}
|
||||
}
|
||||
game_over = true;
|
||||
game_over_frameno = frame_no;
|
||||
game_over_frameno = frameno;
|
||||
RoomMgr::Instance()->AddOverRoom(room_uuid);
|
||||
}
|
||||
|
||||
|
@ -35,7 +35,7 @@ public:
|
||||
int map_height = 0;
|
||||
FrameEvent frame_event;
|
||||
FrameMaker frame_maker;
|
||||
long long frame_no = 0;
|
||||
long long frameno = 0;
|
||||
GasData gas_data;
|
||||
bool game_over = false;
|
||||
long long game_over_frameno = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user