Exemplo n.º 1
0
        public static void ClientToggleConstructionMenu()
        {
            if (ClientCloseConstructionMenu())
            {
                // just closed the construction menu
                return;
            }

            if (ClientCurrentCharacterHelper.PublicState.CurrentVehicle != null)
            {
                Logger.Important("Construction menu is not accessible while in a vehicle");
                return;
            }

            WindowConstructionMenu.Open(
                onStructureProtoSelected:
                selectedProtoStructure =>
            {
                ClientEnsureConstructionToolIsSelected();
                currentSelectedProtoConstruction = selectedProtoStructure;

                componentObjectPlacementHelper = Client.Scene
                                                 .CreateSceneObject("ConstructionHelper")
                                                 .AddComponent <ClientComponentObjectPlacementHelper>();

                // repeat placement for held button only for walls, floor and farms
                var isRepeatCallbackIfHeld = selectedProtoStructure.IsRepeatPlacement;

                componentObjectPlacementHelper
                .Setup(selectedProtoStructure,
                       isCancelable: true,
                       isRepeatCallbackIfHeld: isRepeatCallbackIfHeld,
                       isDrawConstructionGrid: true,
                       isBlockingInput: true,
                       validateCanPlaceCallback: ClientValidateCanBuild,
                       placeSelectedCallback: ClientConstructionPlaceSelectedCallback,
                       delayRemainsSeconds: 0.4);
            },
                onClosed: OnStructureSelectWindowOpenedOrClosed);

            OnStructureSelectWindowOpenedOrClosed();
        }
        public static void ClientToggleConstructionMenu()
        {
            if (ClientCloseConstructionMenu())
            {
                // just closed the construction menu
                return;
            }

            WindowConstructionMenu.Open(
                onStructureProtoSelected:
                selectedProtoStructure =>
            {
                ClientEnsureConstructionToolIsSelected();
                currentSelectedProtoConstruction = selectedProtoStructure;

                componentObjectPlacementHelper = Client.Scene
                                                 .CreateSceneObject(
                    "ConstructionHelper",
                    Vector2D.Zero)
                                                 .AddComponent <
                    ClientComponentObjectPlacementHelper>();

                // repeat placement for held button only for walls, floor and farms
                var isRepeatCallbackIfHeld = selectedProtoStructure is IProtoObjectWall ||
                                             selectedProtoStructure is IProtoObjectFloor ||
                                             selectedProtoStructure is IProtoObjectFarm;

                componentObjectPlacementHelper
                .Setup(selectedProtoStructure,
                       isCancelable: true,
                       isRepeatCallbackIfHeld: isRepeatCallbackIfHeld,
                       isDrawConstructionGrid: true,
                       isBlockingInput: true,
                       validateCanPlaceCallback: ClientValidateCanBuild,
                       placeSelectedCallback: ClientConstructionPlaceSelectedCallback,
                       delayRemainsSeconds: 0.4);
            },
                onClosed: OnStructureSelectWindowOpenedOrClosed);

            OnStructureSelectWindowOpenedOrClosed();
        }