#pragma once #include "weakptr.h" class Bullet; class Human; class Buff; class Effect; class Room; class Creature; struct FrameEvent { public: Room* room = nullptr; void AddAirDrop(int appear_time, int box_id, const glm::vec3& box_pos); void AddAirRaid(int appear_time, const glm::vec3& raid_pos, float raid_rad, int continue_time); void AddEmote(CreatureWeakPtr& sender, int emote_id); void AddShot(CreatureWeakPtr& sender); void AddBullet(int bullet_uniid, CreatureWeakPtr& sender, const mt::Equip* weapon_meta, int weapon_lv, const glm::vec3& born_pos, const glm::vec3& dir, float fly_distance, int trace_target_id, int hand, std::shared_ptr> reporter_list); void RemoveBullet(glm::vec3 pos, int bullet_uniid); void AddExplosion(Bullet* bullet, int item_id, Position bomb_pos); void AddSmoke(Bullet* bullet, int item_id, glm::vec3 pos, float time_addition); void AddPlaySkill(CreatureWeakPtr& sender, int skill_id); void AddExplosionEx(CreatureWeakPtr& sender, int item_id, Position bomb_pos, int effect, int bullet_uniid); void AddBulletNumChg(CreatureWeakPtr& sender); void AddHpChg(CreatureWeakPtr& sender); void AddWeaponAmmoChg(CreatureWeakPtr& sender); void AddBuff(CreatureWeakPtr& sender, Buff* buff); void RemoveBuff(CreatureWeakPtr& sender, Buff* buff); void AddEffect(CreatureWeakPtr& sender, Effect* effect); void RemoveEffect(CreatureWeakPtr& sender, Effect* effect); void AddSkillCdChg(CreatureWeakPtr sender, int skill_id, int left_time); void AddSkillCurrTimesChg(CreatureWeakPtr sender, int skill_id, int curr_times); void AddItemChg(CreatureWeakPtr& sender, int item_id, int item_num); void AddDead(CreatureWeakPtr& sender, int revive_time); void AddRevive(CreatureWeakPtr& sender); void AddCarChg(CreatureWeakPtr& sender); void AddPropChg(CreatureWeakPtr& sender, int type, int subtype, float value, bool only_self = false); void AddPropChgEx(CreatureWeakPtr& sender, int type, int subtype, float value, float value2, float value3, bool only_self = false); void Clear(); };