private static void ServerLoadSystem() { const string key = nameof(LandClaimAreaManager); if (Server.Database.TryGet(key, key, out ILogicObject savedManager)) { Server.World.DestroyObject(savedManager); } serverLandClaimManagerInstance = Server.World.CreateLogicObject <LandClaimAreaManager>(); var publicState = LandClaimAreaManager.GetPublicState(serverLandClaimManagerInstance); publicState.LandClaimAreas = new NetworkSyncList <ILogicObject>(); Server.Database.Set(key, key, serverLandClaimManagerInstance); sharedLandClaimAreas = LandClaimAreaManager.GetPublicState(serverLandClaimManagerInstance) .LandClaimAreas; foreach (var area in sharedLandClaimAreas) { var areaPrivateState = LandClaimArea.GetPrivateState(area); var areaPublicState = LandClaimArea.GetPublicState(area); areaPublicState.SetupAreaProperties(areaPrivateState); } }
public override void ClientInitialize() { Client.Characters.CurrentPlayerCharacterChanged += ClientTryRequestAreasAsync; ClientTryRequestAreasAsync(); async void ClientTryRequestAreasAsync() { if (Api.Client.Characters.CurrentPlayerCharacter == null) { return; } Logger.Important("Land claim areas requested from server"); var landClaimManagerInstance = await Instance.CallServer( _ => _.ServerRemote_AcquireLandClaimManager()); var areas = LandClaimAreaManager.GetPublicState(landClaimManagerInstance) .LandClaimAreas; Logger.Important($"Land claim areas received from server: {areas.Count} areas total"); ClientLandClaimAreaManager.SetAreas(areas); sharedLandClaimAreas = areas; } }