I want to make this USTRUCT replicatable.
How can I replace the
std::vector<std::pair<WARRIOR_TYPES,int32>>
in UE4 to make it replicatable?
TArray<TSet<>> //or// TArray<TMap<>>
WARRIOR_TYPE [key] is an enum and num [values] is an int32.
USTRUCT(BlueprintType)
struct FWarriorUnit{
GENERATED_USTRUCT_BODY()
//TArray<TMap<> warriors;
std::vector<std::pair<WARRIOR_TYPES,int32>> warriors;
FORCEINLINE int32 getNumWarriorsByType(WARRIOR_TYPES type){
for (int i = 0; i < this->warriors.size(); i++){
//assumes that there is only one element in warriors for every WARRIOR_TYPE
if (warriors[i].first == type) return warriors[i].second;
}
return 0;
}
FORCEINLINE void addWarrios(WARRIOR_TYPES type, int num){
for (int i = 0; i < this->warriors.size(); i++){
if (warriors[i].first == type){
warriors[i].second += num;
//assumes that there is only one element in warriors for every WARRIOR_TYPE
return;
}
}
warriors.push_back(std::pair<WARRIOR_TYPES, int32>(type, num));
}
FORCEINLINE void removeWarriors(WARRIOR_TYPES type, int num){
for (int i = 0; i < this->warriors.size(); i++){
if (warriors[i].first == type){
warriors[i].second -= num;
if (warriors[i].second < 0) warriors[i].second = 0;
//assumes that there is only one element in warriors for every WARRIOR_TYPE
return;
}
}
}
};