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