1
This commit is contained in:
parent
e8ae2042fa
commit
eb7c60e2ce
@ -487,7 +487,13 @@ void Human::Shot(a8::Vec2& target_dir, bool& shot_ok)
|
|||||||
}
|
}
|
||||||
bullet_dir.Rotate(bullet_angle / 180.0f);
|
bullet_dir.Rotate(bullet_angle / 180.0f);
|
||||||
room->frame_event.AddBullet(this, bullet_born_pos, bullet_dir, fly_distance);
|
room->frame_event.AddBullet(this, bullet_born_pos, bullet_dir, fly_distance);
|
||||||
room->CreateBullet(this, curr_weapon, bullet_born_pos, bullet_dir, fly_distance);
|
room->CreateBullet(this,
|
||||||
|
curr_weapon->meta,
|
||||||
|
curr_weapon->GetUpgradeMeta(),
|
||||||
|
curr_weapon->bullet_meta,
|
||||||
|
bullet_born_pos,
|
||||||
|
bullet_dir,
|
||||||
|
fly_distance);
|
||||||
}
|
}
|
||||||
--curr_weapon->ammo;
|
--curr_weapon->ammo;
|
||||||
int slot_id = curr_weapon->meta->i->_inventory_slot();
|
int slot_id = curr_weapon->meta->i->_inventory_slot();
|
||||||
@ -581,7 +587,14 @@ void Human::TankShot(a8::Vec2& target_dir)
|
|||||||
bullet_dir.Rotate(bullet_angle / 180.0f);
|
bullet_dir.Rotate(bullet_angle / 180.0f);
|
||||||
room->frame_event.AddBullet(this, bullet_born_pos, bullet_dir, fly_distance);
|
room->frame_event.AddBullet(this, bullet_born_pos, bullet_dir, fly_distance);
|
||||||
if (room->BattleStarted()) {
|
if (room->BattleStarted()) {
|
||||||
room->CreateBullet(this, &tank_weapon, bullet_born_pos, bullet_dir, fly_distance, true);
|
room->CreateBullet(this,
|
||||||
|
tank_weapon.meta,
|
||||||
|
tank_weapon.GetUpgradeMeta(),
|
||||||
|
tank_weapon.bullet_meta,
|
||||||
|
bullet_born_pos,
|
||||||
|
bullet_dir,
|
||||||
|
fly_distance,
|
||||||
|
true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
--tank_weapon.ammo;
|
--tank_weapon.ammo;
|
||||||
|
@ -383,7 +383,13 @@ void Player::Shot()
|
|||||||
}
|
}
|
||||||
room->frame_event.AddBullet(this, bullet_born_pos, bullet_dir, fly_distance);
|
room->frame_event.AddBullet(this, bullet_born_pos, bullet_dir, fly_distance);
|
||||||
if (room->BattleStarted()) {
|
if (room->BattleStarted()) {
|
||||||
room->CreateBullet(this, curr_weapon, bullet_born_pos, bullet_dir, fly_distance);
|
room->CreateBullet(this,
|
||||||
|
curr_weapon->meta,
|
||||||
|
curr_weapon->GetUpgradeMeta(),
|
||||||
|
curr_weapon->bullet_meta,
|
||||||
|
bullet_born_pos,
|
||||||
|
bullet_dir,
|
||||||
|
fly_distance);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -483,16 +483,22 @@ int Room::CreateLoot(int equip_id, a8::Vec2 pos, int count, int equip_lv)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Room::CreateBullet(Human* hum, Weapon* weapon,
|
void Room::CreateBullet(Human* hum,
|
||||||
a8::Vec2 pos, a8::Vec2 dir, float fly_distance, bool is_tank_skin)
|
MetaData::Equip* weapon_meta,
|
||||||
|
MetaData::EquipUpgrade* weapon_upgrade_meta,
|
||||||
|
MetaData::Equip* bullet_meta,
|
||||||
|
a8::Vec2 pos,
|
||||||
|
a8::Vec2 dir,
|
||||||
|
float fly_distance,
|
||||||
|
bool is_tank_skin)
|
||||||
{
|
{
|
||||||
if (grid_service->CanAdd(pos.x, pos.y)) {
|
if (grid_service->CanAdd(pos.x, pos.y)) {
|
||||||
Bullet* bullet = EntityFactory::Instance()->MakeBullet(AllocUniid());
|
Bullet* bullet = EntityFactory::Instance()->MakeBullet(AllocUniid());
|
||||||
bullet->player = hum;
|
bullet->player = hum;
|
||||||
bullet->room = this;
|
bullet->room = this;
|
||||||
bullet->gun_meta = weapon->meta;
|
bullet->gun_meta = weapon_meta;
|
||||||
bullet->gun_upgrade_meta = weapon->GetUpgradeMeta();
|
bullet->gun_upgrade_meta = weapon_upgrade_meta;
|
||||||
bullet->meta = MetaMgr::Instance()->GetEquip(weapon->meta->i->use_bullet());
|
bullet->meta = bullet_meta;
|
||||||
bullet->SetPos(pos);
|
bullet->SetPos(pos);
|
||||||
bullet->dir = dir;
|
bullet->dir = dir;
|
||||||
bullet->born_pos = pos;
|
bullet->born_pos = pos;
|
||||||
|
@ -89,8 +89,14 @@ public:
|
|||||||
void DropItem(a8::Vec2 pos, int item_id, int item_count, int item_lv);
|
void DropItem(a8::Vec2 pos, int item_id, int item_count, int item_lv);
|
||||||
|
|
||||||
int CreateLoot(int equip_id, a8::Vec2 pos, int count, int equip_lv);
|
int CreateLoot(int equip_id, a8::Vec2 pos, int count, int equip_lv);
|
||||||
void CreateBullet(Human* hum, Weapon* weapon,
|
void CreateBullet(Human* hum,
|
||||||
a8::Vec2 pos, a8::Vec2 dir, float fly_distance, bool is_tank_skin = false);
|
MetaData::Equip* weapon_meta,
|
||||||
|
MetaData::EquipUpgrade* weapon_upgrade_meta,
|
||||||
|
MetaData::Equip* bullet_meta,
|
||||||
|
a8::Vec2 pos,
|
||||||
|
a8::Vec2 dir,
|
||||||
|
float fly_distance,
|
||||||
|
bool is_tank_skin = false);
|
||||||
|
|
||||||
void OnHumanDie(Human* hum);
|
void OnHumanDie(Human* hum);
|
||||||
void OnHumanRevive(Human* hum);
|
void OnHumanRevive(Human* hum);
|
||||||
|
@ -14,6 +14,7 @@ void Weapon::ToPB(cs::MFWeapon* pb_obj)
|
|||||||
void Weapon::Recalc()
|
void Weapon::Recalc()
|
||||||
{
|
{
|
||||||
upgrade_meta = MetaMgr::Instance()->GetEquipUpgrade(weapon_id);
|
upgrade_meta = MetaMgr::Instance()->GetEquipUpgrade(weapon_id);
|
||||||
|
bullet_meta = MetaMgr::Instance()->GetEquip(meta->i->use_bullet());
|
||||||
}
|
}
|
||||||
|
|
||||||
int Weapon::GetClipVolume()
|
int Weapon::GetClipVolume()
|
||||||
|
@ -38,6 +38,7 @@ struct Weapon
|
|||||||
int weapon_lv = 0;
|
int weapon_lv = 0;
|
||||||
int ammo = 0;
|
int ammo = 0;
|
||||||
MetaData::Equip* meta = nullptr;
|
MetaData::Equip* meta = nullptr;
|
||||||
|
MetaData::Equip* bullet_meta = nullptr;
|
||||||
|
|
||||||
void ToPB(cs::MFWeapon* pb_obj);
|
void ToPB(cs::MFWeapon* pb_obj);
|
||||||
void Recalc();
|
void Recalc();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user