Anton Tarasenko
2 years ago
3 changed files with 338 additions and 150 deletions
@ -0,0 +1,224 @@
|
||||
/** |
||||
* Announcer for `ACommandFeature`. |
||||
* Copyright 2022 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 ACommandFeature_Announcer extends CommandAnnouncer; |
||||
|
||||
var private AnnouncementVariations enabledFeature, disabledFeature; |
||||
var private AnnouncementVariations swappedConfig; |
||||
var private AnnouncementVariations failedToLoadFeatureClass; |
||||
var private AnnouncementVariations failedNoConfigProvided, failedConfigMissing; |
||||
var private AnnouncementVariations failedCannotEnableFeature; |
||||
var private AnnouncementVariations failedNoConfigClass; |
||||
var private AnnouncementVariations failedAlreadyEnabled, failedAlreadyDisabled; |
||||
|
||||
protected function Finalizer() |
||||
{ |
||||
FreeVariations(enabledFeature); |
||||
FreeVariations(disabledFeature); |
||||
FreeVariations(swappedConfig); |
||||
FreeVariations(failedToLoadFeatureClass); |
||||
FreeVariations(failedNoConfigProvided); |
||||
FreeVariations(failedConfigMissing); |
||||
FreeVariations(failedCannotEnableFeature); |
||||
FreeVariations(failedNoConfigClass); |
||||
FreeVariations(failedAlreadyEnabled); |
||||
FreeVariations(failedAlreadyDisabled); |
||||
super.Finalizer(); |
||||
} |
||||
|
||||
public final function AnnounceEnabledFeature( |
||||
class<Feature> featureClass, |
||||
BaseText configName) |
||||
{ |
||||
local int i; |
||||
local array<TextTemplate> templates; |
||||
|
||||
if (!enabledFeature.initialized) |
||||
{ |
||||
enabledFeature.initialized = true; |
||||
enabledFeature.toSelfReport = _.text.MakeTemplate_S( |
||||
"Feature {$TextEmphasis `%1`} {$TextPositive enabled} with config" |
||||
@ "\"%2\""); |
||||
enabledFeature.toSelfPublic = _.text.MakeTemplate_S( |
||||
"%%instigator%% {$TextPositive enabled} feature" |
||||
@ "{$TextEmphasis `%1`} with config \"%2\""); |
||||
} |
||||
templates = MakeArray(enabledFeature); |
||||
for (i = 0; i < templates.length; i += 1) { |
||||
templates[i].Reset().ArgClass(featureClass).Arg(configName); |
||||
} |
||||
MakeAnnouncement(enabledFeature); |
||||
} |
||||
|
||||
public final function AnnounceDisabledFeature(class<Feature> featureClass) |
||||
{ |
||||
local int i; |
||||
local array<TextTemplate> templates; |
||||
|
||||
if (!disabledFeature.initialized) |
||||
{ |
||||
disabledFeature.initialized = true; |
||||
disabledFeature.toSelfReport = _.text.MakeTemplate_S( |
||||
"Feature {$TextEmphasis `%1`} {$TextNegative disabled}"); |
||||
disabledFeature.toSelfPublic = _.text.MakeTemplate_S( |
||||
"%%instigator%% {$TextNegative disabled} feature" |
||||
@ "{$TextEmphasis `%1`}"); |
||||
} |
||||
templates = MakeArray(disabledFeature); |
||||
for (i = 0; i < templates.length; i += 1) { |
||||
templates[i].Reset().ArgClass(featureClass); |
||||
} |
||||
MakeAnnouncement(disabledFeature); |
||||
} |
||||
|
||||
public final function AnnounceSwappedConfig( |
||||
class<Feature> featureClass, |
||||
BaseText oldConfig, |
||||
BaseText newConfig) |
||||
{ |
||||
local int i; |
||||
local array<TextTemplate> templates; |
||||
|
||||
if (!swappedConfig.initialized) |
||||
{ |
||||
swappedConfig.initialized = true; |
||||
swappedConfig.toSelfReport = _.text.MakeTemplate_S( |
||||
"Config for feature {$TextEmphasis `%1`} {$TextNeutral swapped}" |
||||
@ "from \"%2\" to \"%3\""); |
||||
swappedConfig.toSelfPublic = _.text.MakeTemplate_S( |
||||
"%%instigator%% {$TextNeutral swapped} config for feature" |
||||
@ "{$TextEmphasis `%1`} from \"%2\" to \"%3\""); |
||||
} |
||||
templates = MakeArray(swappedConfig); |
||||
for (i = 0; i < templates.length; i += 1) |
||||
{ |
||||
templates[i] |
||||
.Reset() |
||||
.ArgClass(featureClass) |
||||
.Arg(oldConfig) |
||||
.Arg(newConfig); |
||||
} |
||||
MakeAnnouncement(swappedConfig); |
||||
} |
||||
|
||||
public final function AnnounceFailedToLoadFeatureClass(BaseText failedClassName) |
||||
{ |
||||
if (!failedToLoadFeatureClass.initialized) |
||||
{ |
||||
failedToLoadFeatureClass.initialized = true; |
||||
failedToLoadFeatureClass.toSelfReport = _.text.MakeTemplate_S( |
||||
"{$TextFailure Failed} to load feature class {$TextEmphasis `%1`}"); |
||||
} |
||||
failedToLoadFeatureClass.toSelfReport.Reset().Arg(failedClassName); |
||||
MakeAnnouncement(failedToLoadFeatureClass); |
||||
} |
||||
|
||||
public final function AnnounceFailedNoConfigProvided( |
||||
class<Feature> featureClass) |
||||
{ |
||||
if (!failedNoConfigProvided.initialized) |
||||
{ |
||||
failedNoConfigProvided.initialized = true; |
||||
failedNoConfigProvided.toSelfReport = _.text.MakeTemplate_S( |
||||
"{$TextFailue No config specified} and {$TextFailure no" |
||||
@ "auto-enabled config} exists for feature {$TextEmphasis `%1`}"); |
||||
} |
||||
failedNoConfigProvided.toSelfReport.Reset().ArgClass(featureClass); |
||||
MakeAnnouncement(failedNoConfigProvided); |
||||
} |
||||
|
||||
public final function AnnounceFailedConfigMissing(BaseText config) |
||||
{ |
||||
if (!failedConfigMissing.initialized) |
||||
{ |
||||
failedConfigMissing.initialized = true; |
||||
failedConfigMissing.toSelfReport = _.text.MakeTemplate_S( |
||||
"Specified config \"%1\" {$TextFailue doesn't exist}"); |
||||
} |
||||
failedConfigMissing.toSelfReport.Reset().Arg(config); |
||||
MakeAnnouncement(failedConfigMissing); |
||||
} |
||||
|
||||
public final function AnnounceFailedCannotEnableFeature( |
||||
class<Feature> featureClass, |
||||
BaseText config) |
||||
{ |
||||
if (!failedCannotEnableFeature.initialized) |
||||
{ |
||||
failedCannotEnableFeature.initialized = true; |
||||
failedCannotEnableFeature.toSelfReport = _.text.MakeTemplate_S( |
||||
"Something went {$TextFailure wrong}, {$TextFailure failed} to" |
||||
@ "enable feature {$TextEmphasis `%1`} with config \"%2\""); |
||||
} |
||||
failedCannotEnableFeature.toSelfReport |
||||
.Reset() |
||||
.ArgClass(featureClass) |
||||
.Arg(config); |
||||
MakeAnnouncement(failedCannotEnableFeature); |
||||
} |
||||
|
||||
public final function AnnounceFailedNoConfigClass( |
||||
class<Feature> featureClass) |
||||
{ |
||||
if (!failedNoConfigClass.initialized) |
||||
{ |
||||
failedNoConfigClass.initialized = true; |
||||
failedNoConfigClass.toSelfReport = _.text.MakeTemplate_S( |
||||
"Feature {$TextEmphasis `%1`} {$TextFailure does not have config" |
||||
@ "class}! This is most likely caused by its faulty" |
||||
@ "implementation"); |
||||
} |
||||
failedNoConfigClass.toSelfReport.Reset().ArgClass(featureClass); |
||||
MakeAnnouncement(failedNoConfigClass); |
||||
} |
||||
|
||||
public final function AnnounceFailedAlreadyDisabled( |
||||
class<Feature> featureClass) |
||||
{ |
||||
if (!failedAlreadyDisabled.initialized) |
||||
{ |
||||
failedAlreadyDisabled.initialized = true; |
||||
failedAlreadyDisabled.toSelfReport = _.text.MakeTemplate_S( |
||||
"Feature {$TextEmphasis `%1`} is already {$TextNegative disabled}"); |
||||
} |
||||
failedAlreadyDisabled.toSelfReport.Reset().ArgClass(featureClass); |
||||
MakeAnnouncement(failedAlreadyDisabled); |
||||
} |
||||
|
||||
public final function AnnounceFailedAlreadyEnabled( |
||||
class<Feature> featureClass, |
||||
BaseText config) |
||||
{ |
||||
if (!failedAlreadyEnabled.initialized) |
||||
{ |
||||
failedAlreadyEnabled.initialized = true; |
||||
failedAlreadyEnabled.toSelfReport = _.text.MakeTemplate_S( |
||||
"Feature {$TextEmphasis `%1`} is already {$TextNegative enabled}" |
||||
@ "with specified config \"%2\""); |
||||
} |
||||
failedAlreadyEnabled.toSelfReport |
||||
.Reset() |
||||
.ArgClass(featureClass) |
||||
.Arg(config); |
||||
MakeAnnouncement(failedAlreadyEnabled); |
||||
} |
||||
|
||||
defaultproperties |
||||
{ |
||||
} |
Loading…
Reference in new issue