Add prompts
This commit is contained in:
		
							parent
							
								
									5331087313
								
							
						
					
					
						commit
						fea4df8284
					
				| @ -2,7 +2,7 @@ | |||||||
| 
 | 
 | ||||||
| [ext_resource type="Script" path="res://scripts/Hud.cs" id="1_hvqpl"] | [ext_resource type="Script" path="res://scripts/Hud.cs" id="1_hvqpl"] | ||||||
| 
 | 
 | ||||||
| [node name="HUD" type="Control" node_paths=PackedStringArray("HoverText", "CameraHeightContainer", "CameraHeightSlider")] | [node name="HUD" type="Control" node_paths=PackedStringArray("HoverText", "CameraHeightContainer", "CameraHeightSlider", "CornerPrompt")] | ||||||
| layout_mode = 3 | layout_mode = 3 | ||||||
| anchors_preset = 15 | anchors_preset = 15 | ||||||
| anchor_right = 1.0 | anchor_right = 1.0 | ||||||
| @ -14,6 +14,7 @@ script = ExtResource("1_hvqpl") | |||||||
| HoverText = NodePath("CenterContainer2/HoverText") | HoverText = NodePath("CenterContainer2/HoverText") | ||||||
| CameraHeightContainer = NodePath("CameraHeightContainer") | CameraHeightContainer = NodePath("CameraHeightContainer") | ||||||
| CameraHeightSlider = NodePath("CameraHeightContainer/CameraHeightSlider") | CameraHeightSlider = NodePath("CameraHeightContainer/CameraHeightSlider") | ||||||
|  | CornerPrompt = NodePath("TableRecallPrompt") | ||||||
| 
 | 
 | ||||||
| [node name="CenterContainer" type="CenterContainer" parent="."] | [node name="CenterContainer" type="CenterContainer" parent="."] | ||||||
| layout_mode = 1 | layout_mode = 1 | ||||||
| @ -56,23 +57,25 @@ horizontal_alignment = 1 | |||||||
| 
 | 
 | ||||||
| [node name="CenterContainer2" type="CenterContainer" parent="."] | [node name="CenterContainer2" type="CenterContainer" parent="."] | ||||||
| layout_mode = 1 | layout_mode = 1 | ||||||
| anchors_preset = 7 | anchors_preset = 12 | ||||||
| anchor_left = 0.5 |  | ||||||
| anchor_top = 1.0 | anchor_top = 1.0 | ||||||
| anchor_right = 0.5 | anchor_right = 1.0 | ||||||
| anchor_bottom = 1.0 | anchor_bottom = 1.0 | ||||||
| offset_left = -94.0 | offset_top = -134.0 | ||||||
| offset_top = -118.59 |  | ||||||
| offset_right = 95.0 |  | ||||||
| offset_bottom = -73.59 |  | ||||||
| grow_horizontal = 2 | grow_horizontal = 2 | ||||||
| grow_vertical = 0 | grow_vertical = 0 | ||||||
| 
 | 
 | ||||||
| [node name="HoverText" type="RichTextLabel" parent="CenterContainer2"] | [node name="HoverText" type="Label" parent="CenterContainer2"] | ||||||
| layout_mode = 2 | layout_mode = 2 | ||||||
| theme_override_font_sizes/normal_font_size = 32 | theme_override_font_sizes/font_size = 24 | ||||||
| bbcode_enabled = true |  | ||||||
| text = "[Hover Text]" | text = "[Hover Text]" | ||||||
| fit_content = true | horizontal_alignment = 1 | ||||||
| scroll_active = false | 
 | ||||||
| autowrap_mode = 0 | [node name="TableRecallPrompt" type="Label" parent="."] | ||||||
|  | layout_mode = 1 | ||||||
|  | offset_left = 34.0 | ||||||
|  | offset_top = 22.0 | ||||||
|  | offset_right = 314.0 | ||||||
|  | offset_bottom = 67.0 | ||||||
|  | theme_override_font_sizes/font_size = 24 | ||||||
|  | text = "[Table Recall Text]" | ||||||
|  | |||||||
| @ -26,6 +26,7 @@ namespace Gmtk24 { | |||||||
|             Name = "BuildingBlock"; |             Name = "BuildingBlock"; | ||||||
|             FreezeMode = FreezeModeEnum.Kinematic; |             FreezeMode = FreezeModeEnum.Kinematic; | ||||||
|             CanSleep = false; |             CanSleep = false; | ||||||
|  |             InteractName = "Pick Up"; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         public override void _Ready() { |         public override void _Ready() { | ||||||
|  | |||||||
| @ -1,4 +1,6 @@ | |||||||
| using Godot; | using Godot; | ||||||
|  | using Godot.Collections; | ||||||
|  | using System.Linq; | ||||||
| using System.Text; | using System.Text; | ||||||
| 
 | 
 | ||||||
| namespace Gmtk24 { | namespace Gmtk24 { | ||||||
| @ -6,16 +8,20 @@ namespace Gmtk24 { | |||||||
|         [Export] |         [Export] | ||||||
|         public Player Player; |         public Player Player; | ||||||
|         [Export] |         [Export] | ||||||
|         public RichTextLabel HoverText; |         public Label HoverText; | ||||||
|         [Export] |         [Export] | ||||||
|         public bool InteractionPaused = false; |         public bool InteractionPaused = false; | ||||||
|         [Export] |         [Export] | ||||||
|         public Container CameraHeightContainer; |         public Container CameraHeightContainer; | ||||||
|         [Export] |         [Export] | ||||||
|         public Slider CameraHeightSlider; |         public Slider CameraHeightSlider; | ||||||
|  |         [Export] | ||||||
|  |         public Label CornerPrompt; | ||||||
| 
 | 
 | ||||||
|         private Interactible Hovered; |         private Interactible Hovered; | ||||||
| 
 | 
 | ||||||
|  |         private Dictionary<string, string> ButtonNames = new(); | ||||||
|  | 
 | ||||||
|         public override void _Process(double delta) { |         public override void _Process(double delta) { | ||||||
|             if (Player == null) |             if (Player == null) | ||||||
|                 return; |                 return; | ||||||
| @ -30,24 +36,48 @@ namespace Gmtk24 { | |||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|             if (!InteractionPaused && collider is Interactible interactible) { |             if (!InteractionPaused) { | ||||||
|                 if (interactible != Hovered) { |                 if (collider is Interactible interactible) { | ||||||
|                     Hovered?.SetHovered(false); |                     if (interactible != Hovered) { | ||||||
|                     interactible.SetHovered(true); |                         Hovered?.SetHovered(false); | ||||||
|  |                         interactible.SetHovered(true); | ||||||
|  |                     } | ||||||
|  | 
 | ||||||
|  |                     Hovered = interactible; | ||||||
|  | 
 | ||||||
|  |                     HoverText.Text = $"{FormButtonNames("interact")}: {interactible.InteractName}"; | ||||||
|  |                 } else { | ||||||
|  |                     HoverText.Text = ""; | ||||||
|                 } |                 } | ||||||
| 
 |  | ||||||
|                 Hovered = interactible; |  | ||||||
| 
 |  | ||||||
|                 StringBuilder Builder = new StringBuilder(); |  | ||||||
|                 foreach (var e in InputMap.ActionGetEvents("interact")) { |  | ||||||
|                     Builder.Append($"{e.AsText().Replace("(Physical)", "")}: {interactible.InteractName}"); |  | ||||||
|                 } |  | ||||||
| 
 |  | ||||||
|                 HoverText.Text = Builder.ToString(); |  | ||||||
|             } else { |             } else { | ||||||
|                 Hovered?.SetHovered(false); |                 Hovered?.SetHovered(false); | ||||||
|                 Hovered = null; |                 Hovered = null; | ||||||
|                 HoverText.Text = ""; |                 if (Player.Table.Orbit.HeldBlock != null) { | ||||||
|  |                     var release = FormButtonNames("release_block"); | ||||||
|  |                     var place = FormButtonNames("place_block"); | ||||||
|  |                     var rotate_right = FormButtonNames("rotate_block_right"); | ||||||
|  |                     var rotate_left = FormButtonNames("rotate_block_left"); | ||||||
|  |                     HoverText.Text = $"{place}: Place Block\n{release}: Throw Block\nRotate Block: ({rotate_right}/{rotate_left})"; | ||||||
|  |                 } else { | ||||||
|  |                     HoverText.Text = ""; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             if (!Player.Table.Orbit.IsEnabled) { | ||||||
|  |                 var names = FormButtonNames("toggle_table"); | ||||||
|  |                 if (Player.Table.IsEnabled) | ||||||
|  |                     CornerPrompt.Text = $"{names}: {"Recall Table"}"; | ||||||
|  |                 else | ||||||
|  |                     CornerPrompt.Text = $"{names}: {"Spawn Table"}"; | ||||||
|  |             } else { | ||||||
|  |                 if (Player.Table.Orbit.HeldBlock == null) { | ||||||
|  |                     var zoom_out = FormButtonNames("zoom_orbit_out"); | ||||||
|  |                     var zoom_in = FormButtonNames("zoom_orbit_out"); | ||||||
|  |                     var drag = FormButtonNames("drag_orbit"); | ||||||
|  |                     CornerPrompt.Text = $"Zoom: {zoom_in}/{zoom_out}\nDrag: {drag}"; | ||||||
|  |                 } else { | ||||||
|  |                     CornerPrompt.Text = ""; | ||||||
|  |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| @ -57,5 +87,19 @@ namespace Gmtk24 { | |||||||
|                 GetViewport().SetInputAsHandled(); |                 GetViewport().SetInputAsHandled(); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|  |         private string FormButtonNames(string actionName) { | ||||||
|  |             if (!ButtonNames.ContainsKey(actionName)) { | ||||||
|  |                 ButtonNames.Add(actionName, InputMap.ActionGetEvents(actionName) | ||||||
|  |                     .Select(e => e.AsText().Replace(" (Physical)", "")) | ||||||
|  |                     .Aggregate((a, b) => $"{a}, {b}")); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             return ButtonNames[actionName]; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void ResetPromptCache() { | ||||||
|  |             ButtonNames.Clear(); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @ -93,7 +93,7 @@ namespace Gmtk24 { | |||||||
|             if (!IsEnabled) |             if (!IsEnabled) | ||||||
|                 return; |                 return; | ||||||
| 
 | 
 | ||||||
|             if (@event.IsAction("toggle_pause_menu")) { |             if (@event.IsAction("toggle_pause_menu") && HeldBlock == null) { | ||||||
|                 SetEnabled(false); |                 SetEnabled(false); | ||||||
|                 GetViewport().SetInputAsHandled(); |                 GetViewport().SetInputAsHandled(); | ||||||
|             } |             } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user