rename frame_no -> frameno

This commit is contained in:
aozhiwei 2019-07-22 11:12:05 +08:00
parent 50424108fa
commit dab78aad55
12 changed files with 82 additions and 47 deletions

View File

@ -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;

View File

@ -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;
};

View File

@ -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);
}

View File

@ -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) {

View File

@ -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 {

View File

@ -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);
}

View File

@ -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;

View File

@ -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;

View File

@ -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());
}

View File

@ -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);

View File

@ -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);
}

View File

@ -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;