protected override void ServerInitialize(ServerInitializeData data) { base.ServerInitialize(data); var worldObject = data.GameObject; WorldObjectOwnersSystem.ServerInitialize(worldObject); if (!data.IsFirstTimeInit) { return; } var publicState = data.PublicState; var privateState = data.PrivateState; privateState.AccessMode = WorldObjectAccessMode.OpensToObjectOwnersOrAreaOwners; // refresh door type publicState.IsHorizontalDoor = DoorHelper.IsHorizontalDoorNeeded(worldObject.OccupiedTile, checkExistingDoor: false); publicState.IsOpened = true; // refresh nearby door types (horizontal/vertical) DoorHelper.RefreshNeighborDoorType(worldObject.OccupiedTile); SharedWallConstructionRefreshHelper.SharedRefreshNeighborObjects( data.GameObject.OccupiedTile, isDestroy: false); }
protected override void ServerInitialize(ServerInitializeData data) { base.ServerInitialize(data); var worldObject = data.GameObject; var privateState = data.PrivateState; if (data.IsFirstTimeInit) { privateState.AccessMode = WorldObjectAccessMode.OpensToObjectOwnersOrAreaOwners; } WorldObjectOwnersSystem.ServerInitialize(worldObject); var itemsContainer = privateState.ItemsContainer; if (itemsContainer != null) { // container already created - update slots count Server.Items.SetSlotsCount(itemsContainer, slotsCount: this.ItemsSlotsCount); return; } itemsContainer = Server.Items.CreateContainer( owner: worldObject, itemsContainerType: this.ItemsContainerType, slotsCount: this.ItemsSlotsCount); privateState.ItemsContainer = itemsContainer; }
protected override void ServerInitialize(ServerInitializeData data) { base.ServerInitialize(data); var worldObject = data.GameObject; var privateState = data.PrivateState; if (data.IsFirstTimeInit) { privateState.DirectAccessMode = this.HasOwnersList ? WorldObjectDirectAccessMode.OpensToObjectOwnersOrAreaOwners : WorldObjectDirectAccessMode.OpensToEveryone; privateState.FactionAccessMode = WorldObjectFactionAccessModes.AllFactionMembers; } else if (!this.HasOwnersList) { privateState.DirectAccessMode = WorldObjectDirectAccessMode.OpensToEveryone; } WorldObjectOwnersSystem.ServerInitialize(worldObject); var itemsContainer = privateState.ItemsContainer; if (itemsContainer is not null) { // container already created - update slots count Server.Items.SetSlotsCount(itemsContainer, slotsCount: this.ItemsSlotsCount); return; } itemsContainer = Server.Items.CreateContainer( owner: worldObject, itemsContainerType: this.ItemsContainerType, slotsCount: this.ItemsSlotsCount); privateState.ItemsContainer = itemsContainer; }
protected override void ServerInitialize(ServerInitializeData data) { base.ServerInitialize(data); var worldObject = data.GameObject; var privateState = data.PrivateState; WorldObjectOwnersSystem.ServerInitialize(worldObject); if (!data.IsFirstTimeInit) { if (!this.HasOwnersList) { privateState.AccessMode = WorldObjectAccessMode.OpensToEveryone; } return; } var publicState = data.PublicState; privateState.AccessMode = this.HasOwnersList ? WorldObjectAccessMode.OpensToObjectOwnersOrAreaOwners : WorldObjectAccessMode.OpensToEveryone; // refresh door type publicState.IsHorizontalDoor = this.IsHorizontalDoorOnly ?? DoorHelper.IsHorizontalDoorNeeded(worldObject.OccupiedTile, checkExistingDoor: false); publicState.IsOpened = true; foreach (var occupiedTile in worldObject.OccupiedTiles) { SharedWallConstructionRefreshHelper.SharedRefreshNeighborObjects(occupiedTile, isDestroy: false); } }
protected override void ServerInitialize(ServerInitializeData data) { base.ServerInitialize(data); WorldObjectOwnersSystem.ServerInitialize(data.GameObject); TradingStationsSystem.ServerInitialize(data.GameObject); }