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(); }