コード例 #1
0
        public override void SharedCreatePhysicsConstructionBlueprint(IPhysicsBody physicsBody)
        {
            var worldObject      = (IStaticWorldObject)physicsBody.AssociatedWorldObject;
            var isHorizontalDoor = DoorHelper.IsHorizontalDoorNeeded(worldObject.OccupiedTile, checkExistingDoor: true);

            SharedCreateDoorPhysics(physicsBody, isHorizontalDoor, isOpened: true);
        }
コード例 #2
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);
        }
コード例 #3
0
        public override void ClientSetupBlueprint(Tile tile, IClientBlueprint blueprint)
        {
            var renderer         = blueprint.SpriteRenderer;
            var isHorizontalDoor = DoorHelper.IsHorizontalDoorNeeded(tile, checkExistingDoor: true);

            renderer.PositionOffset = (0,
                                       isHorizontalDoor
                                           ? DrawWorldOffsetYHorizontalDoor
                                           : DrawWorldOffsetYVerticalDoor);

            renderer.TextureResource = isHorizontalDoor
                                           ? this.lazyHorizontalDoorBlueprintTexture.Value
                                           : this.lazyVerticalDoorBlueprintTexture.Value;
        }
コード例 #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);
            }
        }