Add portable RV homes and decor prototype
This commit is contained in:
parent
81decf2b71
commit
fe099f47dd
56 changed files with 5459 additions and 112 deletions
|
|
@ -4,6 +4,7 @@ extends Control
|
|||
const INPUT_OWNER: StringName = &"player_storage"
|
||||
|
||||
signal menu_visibility_changed(is_open: bool)
|
||||
signal decorate_requested
|
||||
|
||||
var _player: Player
|
||||
var _fishing_spot: FishingSpot
|
||||
|
|
@ -14,6 +15,9 @@ var _storage_grid: GeneralInventoryGrid
|
|||
var _inventory_count: Label
|
||||
var _storage_count: Label
|
||||
var _feedback: Label
|
||||
var _title: Label
|
||||
var _decorate_button: Button
|
||||
var _home_access: bool = false
|
||||
var _prior_movement_enabled: bool = true
|
||||
var _prior_camera_enabled: bool = true
|
||||
var _prior_mouse_mode: Input.MouseMode = Input.MOUSE_MODE_VISIBLE
|
||||
|
|
@ -75,15 +79,34 @@ func set_world_interaction(interaction: PlayerStorageInteraction) -> void:
|
|||
|
||||
|
||||
func open_storage() -> bool:
|
||||
return _open_storage(false)
|
||||
|
||||
|
||||
func open_storage_from_home(allow_decorating: bool = true) -> bool:
|
||||
return _open_storage(true, allow_decorating)
|
||||
|
||||
|
||||
func _open_storage(
|
||||
home_access: bool,
|
||||
allow_decorating: bool = false,
|
||||
) -> bool:
|
||||
if (
|
||||
visible
|
||||
or _player == null
|
||||
or _interaction == null
|
||||
or not _interaction.is_local_player_in_range()
|
||||
or _fishing_spot == null
|
||||
or not _fishing_spot.can_open_fishing_shop()
|
||||
or (
|
||||
not home_access
|
||||
and (
|
||||
_interaction == null
|
||||
or not _interaction.is_local_player_in_range()
|
||||
)
|
||||
)
|
||||
):
|
||||
return false
|
||||
_home_access = home_access
|
||||
_title.text = "RV storage" if home_access else "private storage"
|
||||
_decorate_button.visible = home_access and allow_decorating
|
||||
_prior_movement_enabled = _player.is_movement_enabled()
|
||||
_prior_camera_enabled = _player.is_camera_input_enabled()
|
||||
_prior_mouse_mode = Input.mouse_mode
|
||||
|
|
@ -112,10 +135,13 @@ func close_storage(restore_controls: bool = true) -> void:
|
|||
_player.set_movement_enabled(_prior_movement_enabled)
|
||||
_player.set_camera_input_enabled(_prior_camera_enabled)
|
||||
Input.mouse_mode = _prior_mouse_mode
|
||||
_home_access = false
|
||||
menu_visibility_changed.emit(false)
|
||||
|
||||
|
||||
func close_for_range_exit() -> void:
|
||||
if _home_access:
|
||||
return
|
||||
close_storage()
|
||||
|
||||
|
||||
|
|
@ -248,12 +274,20 @@ func _build_ui() -> void:
|
|||
|
||||
var header := HBoxContainer.new()
|
||||
layout.add_child(header)
|
||||
var title := Label.new()
|
||||
title.text = "private storage"
|
||||
title.add_theme_font_size_override("font_size", 32)
|
||||
title.add_theme_color_override("font_color", UtilityPageStyle.OCEAN_TEXT_PRIMARY)
|
||||
title.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
header.add_child(title)
|
||||
_title = Label.new()
|
||||
_title.text = "private storage"
|
||||
_title.add_theme_font_size_override("font_size", 32)
|
||||
_title.add_theme_color_override("font_color", UtilityPageStyle.OCEAN_TEXT_PRIMARY)
|
||||
_title.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
header.add_child(_title)
|
||||
_decorate_button = Button.new()
|
||||
_decorate_button.text = "decorate RV"
|
||||
_decorate_button.tooltip_text = "Place decor inside your RV"
|
||||
_decorate_button.custom_minimum_size = Vector2(160.0, 48.0)
|
||||
UtilityPageStyle.apply_ocean_button(_decorate_button)
|
||||
_decorate_button.hide()
|
||||
_decorate_button.pressed.connect(_request_decorating)
|
||||
header.add_child(_decorate_button)
|
||||
var close := Button.new()
|
||||
close.text = "×"
|
||||
close.tooltip_text = "Close storage"
|
||||
|
|
@ -285,6 +319,13 @@ func _build_ui() -> void:
|
|||
layout.add_child(_feedback)
|
||||
|
||||
|
||||
func _request_decorating() -> void:
|
||||
if not _home_access:
|
||||
return
|
||||
close_storage()
|
||||
decorate_requested.emit()
|
||||
|
||||
|
||||
func _build_column(parent: HBoxContainer, title_text: String) -> Dictionary:
|
||||
var panel := PanelContainer.new()
|
||||
panel.custom_minimum_size = Vector2(550.0, 0.0)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue