Browse Source
This patch changes AcediaCore to only inject `BroadcastEventsObserver` when its events are actually needed. Other changes are making this change produce a log entry and adding a relevant `SideEffect` that describes this change.pull/8/head
Anton Tarasenko
2 years ago
6 changed files with 136 additions and 15 deletions
@ -0,0 +1,65 @@ |
|||||||
|
/** |
||||||
|
* Object representing a side effect introduced into the game/server. |
||||||
|
* Side effects in Acedia refer to changes that aren't a part of mod's main |
||||||
|
* functionality, but rather something necessary to make that functionality |
||||||
|
* possible that might also affect how other mods work. |
||||||
|
* This is a simple data container that is meant to describe relevant |
||||||
|
* changes to the human user. |
||||||
|
* 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 BroadcastSideEffect extends SideEffect |
||||||
|
dependson(BroadcastAPI); |
||||||
|
|
||||||
|
public final function Initialize(BroadcastAPI.InjectionLevel usedInjectionLevel) |
||||||
|
{ |
||||||
|
sideEffectName = |
||||||
|
_.text.FromString("AcediaCore's `BroadcastHandler` injected"); |
||||||
|
sideEffectDescription = |
||||||
|
_.text.FromString("Handling text and localized messages between server" |
||||||
|
@ "and clients requires AcediaCore to add its own `BroadcastHandler`" |
||||||
|
@ "into their linked list." |
||||||
|
@ "This is normal, since `BroadcastHandler` class was designed to allow" |
||||||
|
@ "mods to do that, however, for full functionality Acedia requires to" |
||||||
|
@ "inject it as the very first element (`BHIJ_Root` level injection)," |
||||||
|
@ "since some of the events become otherwise inaccessible." |
||||||
|
@ "This can result in incompatibility with other mods that are trying" |
||||||
|
@ "to do the same." |
||||||
|
@ "For that reason AcediaCore can also inject its `BroadcastHandler` as" |
||||||
|
@ "`BHIJ_Registered`."); |
||||||
|
sideEffectPackage = _.text.FromString("AcediaCore"); |
||||||
|
sideEffectSource = _.text.FromString("UnrealAPI"); |
||||||
|
if (usedInjectionLevel == BHIJ_Root) |
||||||
|
{ |
||||||
|
sideEffectStatus = |
||||||
|
_.text.FromFormattedString("{$TextPositive BHIJ_Root}"); |
||||||
|
} |
||||||
|
else if (usedInjectionLevel == BHIJ_Registered) |
||||||
|
{ |
||||||
|
sideEffectStatus = |
||||||
|
_.text.FromFormattedString("{$TextNetutral BHIJ_Registered}"); |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
sideEffectStatus = |
||||||
|
_.text.FromFormattedString("{$TextNegative BHIJ_None (???)}"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
defaultproperties |
||||||
|
{ |
||||||
|
} |
Loading…
Reference in new issue