#include "precompile.h" #include "android.h" #include "metamgr.h" #include "android.ai.h" #include "zombiemode.ai.h" #include "room.h" #include "app.h" Android::Android():Human() { #if 0 ++PerfMonitor::Instance()->entity_num[ET_Android]; #endif } Android::~Android() { if (ai) { A8_SAFE_DELETE(ai); } #if 0 --PerfMonitor::Instance()->entity_num[ET_Android]; #endif } void Android::Initialize() { if (room->GetRoomMode() == kZombieMode) { ai = new ZombieModeAI; ai->owner = this; ai->SetAiLevel(8); ai->SetAiMode(kHumanAiMode); } else { ai = new AndroidNewAI; ai->owner = this; } Human::Initialize(); RandSkin(); GiveEquip(); RecalcBaseAttr(); } void Android::Update(int delta_time) { if (UpdatedTimes() <= 0) { if (room->GetFrameNo() % 2 != 0) { return; } } InternalUpdate(delta_time); ++updated_times_; } void Android::InternalUpdate(int delta_time) { if (a8::HasBitFlag(status, HS_Disable)) { return; } if (action_type != AT_None) { UpdateAction(); } ai->Update(delta_time); } void Android::GiveEquip() { MetaData::Equip* weapon_meta = MetaMgr::Instance()->GetEquip (room->GetRoomMode() == kZombieMode ? robot_meta->i->zbmode_weapon_id() : robot_meta->i->weapon_id()); if (weapon_meta) { weapons[GUN_SLOT1].weapon_idx = GUN_SLOT1; weapons[GUN_SLOT1].weapon_id = weapon_meta->i->id(); weapons[GUN_SLOT1].weapon_lv = room->GetRoomMode() == kZombieMode ? robot_meta->i->zbmode_weapon_lv() : robot_meta->i->weapon_lv(); weapons[GUN_SLOT1].ammo = 0; weapons[GUN_SLOT1].meta = weapon_meta; weapons[GUN_SLOT1].Recalc(); curr_weapon = &weapons[GUN_SLOT1]; } } void Android::SetAiLevel(int ai_level) { if (ai) { ai->SetAiLevel(ai_level); } }