mirror of
https://github.com/OpenFusionProject/OpenFusion.git
synced 2025-11-17 15:30:06 +00:00
[refactor] Refactor groups
This commit is contained in:
@@ -1,17 +1,36 @@
|
||||
#pragma once
|
||||
|
||||
#include "Player.hpp"
|
||||
#include "core/Core.hpp"
|
||||
#include "servers/CNShardServer.hpp"
|
||||
#include "Entities.hpp"
|
||||
|
||||
#include <map>
|
||||
#include <list>
|
||||
|
||||
struct Player;
|
||||
enum EntityKind;
|
||||
|
||||
struct Group {
|
||||
std::vector<EntityRef> members;
|
||||
int32_t conditionBitFlag;
|
||||
|
||||
auto operator[](EntityKind kind) {
|
||||
std::vector<EntityRef> filtered;
|
||||
std::copy_if(members.begin(), members.end(), std::back_inserter(filtered), [kind](EntityRef e) {
|
||||
return e.kind == kind;
|
||||
});
|
||||
return filtered;
|
||||
}
|
||||
};
|
||||
|
||||
namespace Groups {
|
||||
void init();
|
||||
|
||||
void sendToGroup(Player* plr, void* buf, uint32_t type, size_t size);
|
||||
void sendToGroup(Group* group, void* buf, uint32_t type, size_t size);
|
||||
void groupTickInfo(Player* plr);
|
||||
void groupKickPlayer(Player* plr);
|
||||
int getGroupFlags(Player* plr);
|
||||
void groupKick(Player* plr);
|
||||
|
||||
void addToGroup(EntityRef member, Group* group);
|
||||
void removeFromGroup(EntityRef member, Group* group);
|
||||
void disbandGroup(Group* group);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user