63 lines
1.8 KiB
C++
63 lines
1.8 KiB
C++
#pragma once
|
|
|
|
namespace cs
|
|
{
|
|
class SMGameOver;
|
|
}
|
|
|
|
namespace a8
|
|
{
|
|
class MutableXObject;
|
|
}
|
|
|
|
class Room;
|
|
class Human;
|
|
class Team
|
|
{
|
|
public:
|
|
Room* room = nullptr;
|
|
int team_rank = 0;
|
|
std::map<int, glm::vec3> target_pos;
|
|
int settlement_color = 0;
|
|
bool sending_battlereport = false;
|
|
bool already_report_battle = false;
|
|
|
|
void SetInitTeamMemberNum(int init_num) { init_team_member_num_ = init_num; };
|
|
void SetAutoFill(bool auto_fill) { auto_fill_ = auto_fill; };
|
|
bool IsAutoFill() { return auto_fill_; };
|
|
int GetTeamId() { return team_id_; }
|
|
void SetTeamId(int team_id) { team_id_ = team_id; }
|
|
void TraverseMembers(std::function<bool (Human*)> func);
|
|
size_t GetMemberNum() { return members_.size(); }
|
|
void GetOveredHumans(std::set<Human*>& overed_humans);
|
|
Human* GetOneAliveMember(Human* exclude_hum);
|
|
Human* RandomOneAliveMember(Human* exclude_hum);
|
|
bool HasAliveMember();
|
|
int GetAliveNum();
|
|
void AddMember(Human* member);
|
|
bool IsFull();
|
|
void CombineBornPoint();
|
|
void CombineTeam(Team* b_team);
|
|
bool CanCombine(Human* member);
|
|
void AddCombineMemberNum(int member_num);
|
|
Human* GetMemberByUniId(int member_id);
|
|
int GetInitTeamMemberNum() { return init_team_member_num_; };
|
|
bool HasReviveCoin(Human* member);
|
|
bool IsFreeTeam();
|
|
bool HasPlayer();
|
|
void FillSMGameOver(cs::SMGameOver& msg);
|
|
void SendTeamBattleReport(Human* sender);
|
|
void GenBattleReportData(Human* player, a8::MutableXObject* params);
|
|
void GenBattleUuid();
|
|
void RunAway(Human* hum);
|
|
bool AllIsRunAway();
|
|
|
|
private:
|
|
int team_id_ = 0;
|
|
int init_team_member_num_ = 0;
|
|
int combined_team_member_num_ = 0;
|
|
std::set<Human*> members_;
|
|
Human* first_member_ = nullptr;
|
|
bool auto_fill_ = false;
|
|
};
|