Пример #1
0
        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);
        }
Пример #2
0
        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;
        }
Пример #3
0
        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;
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
 protected override void ServerInitialize(ServerInitializeData data)
 {
     base.ServerInitialize(data);
     WorldObjectOwnersSystem.ServerInitialize(data.GameObject);
     TradingStationsSystem.ServerInitialize(data.GameObject);
 }