132 lines
4.9 KiB
Ucode
132 lines
4.9 KiB
Ucode
/**
|
|
* Author: dkanus
|
|
* Home repo: https://www.insultplayers.ru/git/AcediaFramework/AcediaCore
|
|
* License: GPL
|
|
* Copyright 2021-2023 Anton Tarasenko
|
|
*------------------------------------------------------------------------------
|
|
* This file is part of Acedia.
|
|
*
|
|
* Acedia is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* Acedia is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with Acedia. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
class VotingPermissions extends AcediaConfig
|
|
perobjectconfig
|
|
config(AcediaCommands);
|
|
|
|
/// Determines the duration of the voting period, specified in seconds.
|
|
/// Zero or negative values mean unlimited voting period.
|
|
var public config float votingTime;
|
|
|
|
/// Determines whether spectators are allowed to vote.
|
|
var public config bool allowSpectatorVoting;
|
|
/// Determines how draw will be interpreted.
|
|
/// `true` means draw counts as a vote's success, `false` means draw counts as a vote's failure.
|
|
var public config bool drawEqualsSuccess;
|
|
/// Specifies which group(s) of players are allowed to see who makes what vote.
|
|
var public config array<string> allowedToVoteGroup;
|
|
/// Specifies which group(s) of players are allowed to see who makes what vote.
|
|
var public config array<string> allowedToSeeVotesGroup;
|
|
/// Specifies which group(s) of players are allowed to forcibly end voting.
|
|
var public config array<string> allowedToForceGroup;
|
|
|
|
protected function HashTable ToData() {
|
|
local int i;
|
|
local HashTable data;
|
|
local ArrayList arrayOfTexts;
|
|
|
|
data = __().collections.EmptyHashTable();
|
|
data.SetFloat(P("votingTime"), votingTime);
|
|
data.SetBool(P("allowSpectatorVoting"), allowSpectatorVoting);
|
|
data.SetBool(P("drawEqualsSuccess"), drawEqualsSuccess);
|
|
|
|
arrayOfTexts = _.collections.EmptyArrayList();
|
|
for (i = 0; i < allowedToVoteGroup.length; i += 1) {
|
|
arrayOfTexts.AddString(allowedToVoteGroup[i]);
|
|
}
|
|
data.SetItem(P("allowedToVoteGroup"), arrayOfTexts);
|
|
_.memory.Free(arrayOfTexts);
|
|
|
|
arrayOfTexts = _.collections.EmptyArrayList();
|
|
for (i = 0; i < allowedToSeeVotesGroup.length; i += 1) {
|
|
arrayOfTexts.AddString(allowedToSeeVotesGroup[i]);
|
|
}
|
|
data.SetItem(P("allowedToSeeVotesGroup"), arrayOfTexts);
|
|
_.memory.Free(arrayOfTexts);
|
|
|
|
arrayOfTexts = _.collections.EmptyArrayList();
|
|
for (i = 0; i < allowedToForceGroup.length; i += 1) {
|
|
arrayOfTexts.AddString(allowedToForceGroup[i]);
|
|
}
|
|
data.SetItem(P("allowedToForceGroup"), arrayOfTexts);
|
|
_.memory.Free(arrayOfTexts);
|
|
return data;
|
|
}
|
|
|
|
protected function FromData(HashTable source) {
|
|
local int i;
|
|
local ArrayList arrayOfTexts;
|
|
|
|
if (source == none) {
|
|
return;
|
|
}
|
|
votingTime = source.GetFloat(P("votingTime"), 30.0);
|
|
allowSpectatorVoting = source.GetBool(P("allowSpectatorVoting"), false);
|
|
drawEqualsSuccess = source.GetBool(P("drawEqualsSuccess"), false);
|
|
|
|
allowedToVoteGroup.length = 0;
|
|
arrayOfTexts = source.GetArrayList(P("allowedToVoteGroup"));
|
|
for (i = 0; i < arrayOfTexts.GetLength(); i += 1) {
|
|
allowedToVoteGroup[allowedToVoteGroup.length] = arrayOfTexts.GetString(i);
|
|
}
|
|
|
|
allowedToSeeVotesGroup.length = 0;
|
|
arrayOfTexts = source.GetArrayList(P("allowedToSeeVotesGroup"));
|
|
for (i = 0; i < arrayOfTexts.GetLength(); i += 1) {
|
|
allowedToSeeVotesGroup[allowedToSeeVotesGroup.length] = arrayOfTexts.GetString(i);
|
|
}
|
|
_.memory.Free(arrayOfTexts);
|
|
|
|
allowedToForceGroup.length = 0;
|
|
arrayOfTexts = source.GetArrayList(P("allowedToForceGroup"));
|
|
for (i = 0; i < arrayOfTexts.GetLength(); i += 1) {
|
|
allowedToForceGroup[allowedToForceGroup.length] = arrayOfTexts.GetString(i);
|
|
}
|
|
_.memory.Free(arrayOfTexts);
|
|
}
|
|
|
|
protected function DefaultIt() {
|
|
votingTime = 30.0;
|
|
drawEqualsSuccess = false;
|
|
allowSpectatorVoting = false;
|
|
|
|
allowedToVoteGroup.length = 0;
|
|
allowedToSeeVotesGroup.length = 0;
|
|
allowedToForceGroup.length = 0;
|
|
|
|
allowedToVoteGroup[0] = "all";
|
|
allowedToSeeVotesGroup[0] = "all";
|
|
allowedToForceGroup[0] = "admin";
|
|
allowedToForceGroup[1] = "moderator";
|
|
}
|
|
|
|
defaultproperties {
|
|
configName = "AcediaCommands"
|
|
supportsDataConversion = true
|
|
votingTime = 30.0
|
|
drawEqualsSuccess = false
|
|
allowSpectatorVoting = false
|
|
allowedToVoteGroup(0) = "all"
|
|
allowedToSeeVotesGroup(0) = "all"
|
|
allowedToForceGroup(0) = "admin"
|
|
allowedToForceGroup(1) = "moderator"
|
|
} |