game2002/server/gameserver/frameevent.h
aozhiwei 0efdb6e23c 1
2019-07-12 15:20:47 +08:00

40 lines
1.2 KiB
C++

#pragma once
#include "cs_proto.pb.h"
class Bullet;
class Human;
class Buff;
class Room;
struct FrameEvent
{
public:
Room* room = nullptr;
public:
void AddAirDrop(int appear_time, int box_id, a8::Vec2 box_pos);
void AddEmote(Human* hum, int emote_id);
void AddShot(Human* hum);
void AddBullet(Human* hum, a8::Vec2 born_pos, a8::Vec2 dir, float fly_distance, int hit_time);
void AddExplosion(int item_id, a8::Vec2 bomb_pos, int effect);
void AddSmoke(Bullet* bullet, int item_id, a8::Vec2 pos);
void AddDead(Human* hum);
void AddRevive(Human* hum);
void AddBuff(Human* hum, Buff* buff);
void RemoveBuff(Human* hum, int buff_id);
void Clear();
private:
::google::protobuf::RepeatedPtrField<::cs::MFAirDrop> airdrops_;
std::vector<std::tuple<Human*, ::cs::MFShot>> shots_;
std::vector<std::tuple<Human*, ::cs::MFBullet>> bullets_;
std::vector<::cs::MFExplosion> explosions_;
std::vector<std::tuple<Human*, ::cs::MFSmoke>> smokes_;
std::vector<std::tuple<Human*, ::cs::MFEmote>> emotes_;
std::vector<std::tuple<Human*, ::cs::MFBuffChg>> chged_buffs_;
std::vector<int> revive_objs_;
std::vector<std::tuple<int, int>> dead_objs_;
friend class FrameMaker;
};