Change to support new AcediaCore changes
This commit is contained in:
parent
7721b520f5
commit
0bb7f89040
@ -2,7 +2,7 @@
|
|||||||
* Main and only Acedia mutator used for loading Acedia packages
|
* Main and only Acedia mutator used for loading Acedia packages
|
||||||
* and providing access to mutator events' calls.
|
* and providing access to mutator events' calls.
|
||||||
* Name is chosen to make config files more readable.
|
* Name is chosen to make config files more readable.
|
||||||
* Copyright 2020-2021 Anton Tarasenko
|
* Copyright 2020-2022 Anton Tarasenko
|
||||||
*------------------------------------------------------------------------------
|
*------------------------------------------------------------------------------
|
||||||
* This file is part of Acedia.
|
* This file is part of Acedia.
|
||||||
*
|
*
|
||||||
@ -30,8 +30,12 @@ class Packages extends Mutator
|
|||||||
var private Packages selfReference;
|
var private Packages selfReference;
|
||||||
|
|
||||||
// Acedia's reference to a `Global` object.
|
// Acedia's reference to a `Global` object.
|
||||||
var private Global _;
|
var private Global _;
|
||||||
|
var private ServerGlobal _server;
|
||||||
|
var private ClientGlobal _client;
|
||||||
|
|
||||||
|
// Load Acedia on the client as well?
|
||||||
|
var private config bool clientside;
|
||||||
// Array of predefined services that must be started along with Acedia mutator.
|
// Array of predefined services that must be started along with Acedia mutator.
|
||||||
var private config array<string> package;
|
var private config array<string> package;
|
||||||
// Set to `true` to activate Acedia's game modes system
|
// Set to `true` to activate Acedia's game modes system
|
||||||
@ -58,12 +62,38 @@ static public final function Packages GetInstance()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// "Constructor"
|
// "Constructor"
|
||||||
event PreBeginPlay()
|
simulated function PreBeginPlay()
|
||||||
|
{
|
||||||
|
if (level.netMode == NM_DedicatedServer) {
|
||||||
|
InitializeServer();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
InitializeClient();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private simulated function InitializeClient()
|
||||||
|
{
|
||||||
|
// Enforce one copy rule and remember a reference to that copy
|
||||||
|
if (default.selfReference != none)
|
||||||
|
{
|
||||||
|
Destroy();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
default.selfReference = self;
|
||||||
|
class'ClientLevelCore'.static.CreateLevelCore(self);
|
||||||
|
_ = class'Global'.static.GetInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
private function InitializeServer()
|
||||||
{
|
{
|
||||||
local int i;
|
local int i;
|
||||||
local LevelCore serverCore;
|
local LevelCore serverCore;
|
||||||
local GameMode currentGameMode;
|
local GameMode currentGameMode;
|
||||||
local array<FeatureConfigPair> availableFeatures;
|
local array<FeatureConfigPair> availableFeatures;
|
||||||
|
if (clientside) {
|
||||||
|
AddToPackageMap("Acedia");
|
||||||
|
}
|
||||||
CheckForGarbage();
|
CheckForGarbage();
|
||||||
// Enforce one copy rule and remember a reference to that copy
|
// Enforce one copy rule and remember a reference to that copy
|
||||||
if (default.selfReference != none)
|
if (default.selfReference != none)
|
||||||
@ -74,12 +104,14 @@ event PreBeginPlay()
|
|||||||
default.selfReference = self;
|
default.selfReference = self;
|
||||||
// Launch and setup core Acedia
|
// Launch and setup core Acedia
|
||||||
serverCore = class'ServerLevelCore'.static.CreateLevelCore(self);
|
serverCore = class'ServerLevelCore'.static.CreateLevelCore(self);
|
||||||
_ = class'Global'.static.GetInstance();
|
_ = class'Global'.static.GetInstance();
|
||||||
|
_server = class'ServerGlobal'.static.GetInstance();
|
||||||
|
_client = class'ClientGlobal'.static.GetInstance();
|
||||||
for (i = 0; i < package.length; i += 1) {
|
for (i = 0; i < package.length; i += 1) {
|
||||||
_.environment.RegisterPackage_S(package[i]);
|
_.environment.RegisterPackage_S(package[i]);
|
||||||
}
|
}
|
||||||
if (serverCore != none) {
|
if (serverCore != none) {
|
||||||
_.ConnectServerLevelCore();
|
_server.ConnectServerLevelCore();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -248,9 +280,10 @@ function ModifyLogin(out string portal, out string options)
|
|||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
|
clientside = false
|
||||||
useGameModes = false
|
useGameModes = false
|
||||||
// This is a server-only mutator
|
// This is a server-only mutator
|
||||||
remoteRole = ROLE_None
|
remoteRole = ROLE_SimulatedProxy
|
||||||
bAlwaysRelevant = true
|
bAlwaysRelevant = true
|
||||||
// Mutator description
|
// Mutator description
|
||||||
GroupName = "Package loader"
|
GroupName = "Package loader"
|
||||||
|
@ -223,8 +223,10 @@ public final function PrepareForServerTravel()
|
|||||||
if (string(_.unreal.GetGameType().class) ~= nextGameClassName) {
|
if (string(_.unreal.GetGameType().class) ~= nextGameClassName) {
|
||||||
nextGameClass = _.unreal.GetGameType().class;
|
nextGameClass = _.unreal.GetGameType().class;
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
nextGameClass = class<GameInfo>(_.memory.LoadClassS(nextGameClassName));
|
{
|
||||||
|
nextGameClass =
|
||||||
|
class<GameInfo>(_.memory.LoadClass_S(nextGameClassName));
|
||||||
}
|
}
|
||||||
default.isServerTraveling = true;
|
default.isServerTraveling = true;
|
||||||
default.targetGameMode = availableGameModes[pickedVHConfig].ToString();
|
default.targetGameMode = availableGameModes[pickedVHConfig].ToString();
|
||||||
|
Reference in New Issue
Block a user