添加掉落动画处理
This commit is contained in:
parent
537230305a
commit
ecb9f1d55b
@ -43,8 +43,12 @@ void Loot::FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data)
|
||||
cs::MFLootFull* p = full_data->mutable_union_obj_5();
|
||||
p->set_obj_uniid(GetEntityUniId());
|
||||
TypeConvert::ToPb(GetPos(), p->mutable_pos());
|
||||
TypeConvert::ToPb(born_pos, p->mutable_born_pos());
|
||||
|
||||
p->set_item_id(item_id);
|
||||
p->set_count(count);
|
||||
p->set_item_level(item_level);
|
||||
if (show_anim && room->GetFrameNo() <= create_frame_no + 1) {
|
||||
p->set_show_anim(true);
|
||||
}
|
||||
}
|
||||
|
@ -21,6 +21,9 @@ class Loot : public RoomEntity
|
||||
int bullet_num = 0;
|
||||
float param1 = 0.0f;
|
||||
float param2 = 0.0f;
|
||||
a8::Vec2 born_pos;
|
||||
bool show_anim = false;
|
||||
long long create_frame_no = 0;
|
||||
|
||||
virtual ~Loot() override;
|
||||
virtual void Initialize() override;
|
||||
|
@ -442,14 +442,21 @@ void Room::ScatterDrop(a8::Vec2 center, int drop_id)
|
||||
for (auto& item : drop_items) {
|
||||
a8::Vec2 dir = a8::Vec2::UP;
|
||||
dir.Rotate(a8::RandAngle());
|
||||
DropItem(center + dir * (5 + rand() % 50),
|
||||
std::get<0>(item), std::get<1>(item),
|
||||
std::get<1>(item));
|
||||
DropItemEx(center,
|
||||
center + dir * (5 + rand() % 50),
|
||||
std::get<0>(item), std::get<1>(item),
|
||||
std::get<1>(item),
|
||||
true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Room::DropItem(a8::Vec2 pos, int item_id, int item_count, int item_lv)
|
||||
{
|
||||
DropItemEx(pos, pos, item_id, item_count, item_lv, false);
|
||||
}
|
||||
|
||||
void Room::DropItemEx(a8::Vec2 born_pos, a8::Vec2 pos, int item_id, int item_count, int item_lv, bool show_anim)
|
||||
{
|
||||
MetaData::Equip* equip_meta = MetaMgr::Instance()->GetEquip(item_id);
|
||||
if (equip_meta && equip_meta->i->group_num() > 0 && item_count > 0) {
|
||||
@ -464,7 +471,7 @@ void Room::DropItem(a8::Vec2 pos, int item_id, int item_count, int item_lv)
|
||||
dir.Rotate(a8::RandAngle());
|
||||
pos = pos + dir * (25 + rand() % 50);
|
||||
}
|
||||
CreateLoot(item_id, pos, drop_num, item_lv);
|
||||
CreateLootEx(item_id, born_pos, pos, drop_num, item_lv, show_anim);
|
||||
total_count -= drop_num;
|
||||
}
|
||||
}
|
||||
@ -484,6 +491,11 @@ RoomObstacle* Room::CreateObstacle(int id, float x, float y)
|
||||
}
|
||||
|
||||
int Room::CreateLoot(int equip_id, a8::Vec2 pos, int count, int equip_lv)
|
||||
{
|
||||
return CreateLootEx(equip_id, pos, pos, count, equip_lv, false);
|
||||
}
|
||||
|
||||
int Room::CreateLootEx(int equip_id, a8::Vec2 born_pos, a8::Vec2 pos, int count, int equip_lv, bool show_anim)
|
||||
{
|
||||
MetaData::Equip* equip_meta = MetaMgr::Instance()->GetEquip(equip_id);
|
||||
if (equip_meta) {
|
||||
@ -491,6 +503,9 @@ int Room::CreateLoot(int equip_id, a8::Vec2 pos, int count, int equip_lv)
|
||||
entity->room = this;
|
||||
entity->meta = equip_meta;
|
||||
entity->SetPos(pos);
|
||||
entity->born_pos = born_pos;
|
||||
entity->show_anim = show_anim;
|
||||
entity->create_frame_no = GetFrameNo();
|
||||
#if 1
|
||||
{
|
||||
if (entity->GetX() >= map_meta_->i->map_width()) {
|
||||
|
@ -100,8 +100,10 @@ public:
|
||||
|
||||
void ScatterDrop(a8::Vec2 center, int drop_id);
|
||||
void DropItem(a8::Vec2 pos, int item_id, int item_count, int item_lv);
|
||||
void DropItemEx(a8::Vec2 born_pos, a8::Vec2 pos, int item_id, int item_count, int item_lv, bool show_anim);
|
||||
|
||||
int CreateLoot(int equip_id, a8::Vec2 pos, int count, int equip_lv);
|
||||
int CreateLootEx(int equip_id, a8::Vec2 born_pos, a8::Vec2 pos, int count, int equip_lv, bool show_anim);
|
||||
void CreateBullet(Creature* sender,
|
||||
MetaData::Equip* weapon_meta,
|
||||
MetaData::EquipUpgrade* weapon_upgrade_meta,
|
||||
|
@ -319,7 +319,7 @@ message MFLootFull
|
||||
optional int32 obj_uniid = 1; //唯一id
|
||||
optional MFVec2 pos = 2; //位置
|
||||
optional MFVec2 born_pos = 3; //出生位置
|
||||
optional bool drop_at_thisframe = 4; //是否在这帧掉落
|
||||
optional bool show_anim = 4; //是否显示动画
|
||||
|
||||
optional int32 item_id = 6; //道具id
|
||||
optional int32 count = 7; //数量
|
||||
@ -842,31 +842,32 @@ message CMMove
|
||||
{
|
||||
optional int32 seq = 1; //序号
|
||||
|
||||
optional MFVec2 move_dir = 24; //移动-方向
|
||||
optional MFVec2 attack_dir = 20; //攻击方向(朝向)
|
||||
optional MFVec2 move_dir = 2; //移动-方向
|
||||
optional MFVec2 attack_dir = 3; //攻击方向(朝向)
|
||||
|
||||
optional bool shot_start = 6; //射击-单发
|
||||
optional bool shot_hold = 7; //射击-连发
|
||||
optional bool reload = 8; //装弹
|
||||
optional float fly_distance = 12; //子弹飞行距离(只有手雷和烟雾弹时这个字段才有意义)
|
||||
optional bool shot_start = 4; //射击-单发
|
||||
optional bool shot_hold = 5; //射击-连发
|
||||
optional bool reload = 6; //装弹
|
||||
optional float fly_distance = 7; //子弹飞行距离(只有手雷和烟雾弹时这个字段才有意义)
|
||||
|
||||
optional int32 select_weapon = 10; //切换武器(没切换是不用发)
|
||||
optional int32 drop_weapon = 11; //丢弃武器
|
||||
optional int32 select_weapon = 8; //切换武器(没切换是不用发)
|
||||
optional int32 drop_weapon = 9; //丢弃武器
|
||||
|
||||
optional bool cancel_action = 26; //取消当前操作(比如取消使用道具装弹等)
|
||||
optional int32 use_item_idx = 22; //使用道具(对应库存索引0-16)
|
||||
optional int32 use_item_id = 4; //使用道具 (道具id目前只有伪装)
|
||||
optional int32 use_scope = 25; //使用倍镜 0-4
|
||||
optional bool cancel_action = 10; //取消当前操作(比如取消使用道具装弹等)
|
||||
optional int32 use_item_idx = 11; //使用道具(对应库存索引0-16)
|
||||
optional int32 use_item_id = 12; //使用道具 (道具id目前只有伪装)
|
||||
optional int32 use_scope = 13; //使用倍镜 0-4
|
||||
|
||||
optional bool interaction = 9; //是否有交互
|
||||
repeated int32 interaction_objids = 23; //交互的对象id列表
|
||||
optional bool aiming = 2; //是否瞄准中
|
||||
optional bool interaction = 14; //是否有交互
|
||||
repeated int32 interaction_objids = 15; //交互的对象id列表
|
||||
optional bool aiming = 16; //是否瞄准中
|
||||
|
||||
optional bool use_skill = 29; //使用技能
|
||||
optional int32 skill_id = 37; //技能id
|
||||
optional int32 skill_target_id = 21; //技能目标(单体攻击)
|
||||
optional MFVec2 skill_dir = 34; //技能方向
|
||||
optional float skill_param1 = 35; //辅助参数
|
||||
optional bool use_skill = 17; //使用技能
|
||||
optional int32 skill_id = 18; //技能id
|
||||
optional int32 skill_target_id = 19; //技能目标(单体攻击)
|
||||
optional MFVec2 skill_dir = 20; //技能方向
|
||||
optional float skill_distance = 21; //技能目标距离
|
||||
optional float skill_param1 = 22; //辅助参数
|
||||
|
||||
optional bool spectate = 30; //自杀
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user