mirror of
https://gitlab.com/open-fpsz/open-fpsz.git
synced 2026-07-15 16:34:48 +00:00
✨ Add flag grabbing/carrying scoring logic
This commit is contained in:
parent
232eb960ab
commit
61b8845a40
8 changed files with 65 additions and 30 deletions
|
|
@ -47,7 +47,7 @@ func _enter_tree() -> void:
|
|||
toolbar = Toolbar.new()
|
||||
toolbar.hide()
|
||||
toolbar.connect("tool_changed", _on_tool_changed)
|
||||
|
||||
|
||||
toolbar_settings = ToolSettings.new()
|
||||
toolbar_settings.connect("setting_changed", _on_setting_changed)
|
||||
toolbar_settings.connect("picking", _on_picking)
|
||||
|
|
@ -89,7 +89,7 @@ func set_visible(p_visible: bool) -> void:
|
|||
visible = p_visible
|
||||
toolbar.set_visible(p_visible and plugin.terrain)
|
||||
terrain_tools.set_visible(p_visible)
|
||||
|
||||
|
||||
if p_visible and plugin.terrain:
|
||||
p_visible = plugin.editor.get_tool() != Terrain3DEditor.REGION
|
||||
toolbar_settings.set_visible(p_visible and plugin.terrain)
|
||||
|
|
@ -98,19 +98,19 @@ func set_visible(p_visible: bool) -> void:
|
|||
|
||||
func _on_tool_changed(p_tool: Terrain3DEditor.Tool, p_operation: Terrain3DEditor.Operation) -> void:
|
||||
clear_picking()
|
||||
|
||||
|
||||
if not visible or not plugin.terrain:
|
||||
return
|
||||
|
||||
if plugin.editor:
|
||||
plugin.editor.set_tool(p_tool)
|
||||
plugin.editor.set_operation(p_operation)
|
||||
|
||||
|
||||
if p_tool != Terrain3DEditor.REGION:
|
||||
# Select which settings to hide. Options:
|
||||
# size, opactiy, height, slope, color, roughness, (height|color|roughness) picker
|
||||
var to_hide: PackedStringArray = []
|
||||
|
||||
|
||||
if p_tool == Terrain3DEditor.HEIGHT:
|
||||
to_hide.push_back("color")
|
||||
to_hide.push_back("color picker")
|
||||
|
|
@ -158,7 +158,7 @@ func _on_tool_changed(p_tool: Terrain3DEditor.Tool, p_operation: Terrain3DEditor
|
|||
to_hide.push_back("color picker")
|
||||
to_hide.push_back("slope")
|
||||
to_hide.push_back("enable")
|
||||
|
||||
|
||||
elif p_tool in [ Terrain3DEditor.AUTOSHADER, Terrain3DEditor.HOLES, Terrain3DEditor.NAVIGATION ]:
|
||||
to_hide.push_back("height")
|
||||
to_hide.push_back("height picker")
|
||||
|
|
@ -173,16 +173,16 @@ func _on_tool_changed(p_tool: Terrain3DEditor.Tool, p_operation: Terrain3DEditor
|
|||
|
||||
toolbar_settings.hide_settings(to_hide)
|
||||
|
||||
toolbar_settings.set_visible(p_tool != Terrain3DEditor.REGION)
|
||||
|
||||
toolbar_settings.set_visible(p_tool != Terrain3DEditor.REGION)
|
||||
|
||||
operation_builder = null
|
||||
if p_operation == Terrain3DEditor.GRADIENT:
|
||||
operation_builder = GradientOperationBuilder.new()
|
||||
operation_builder.tool_settings = toolbar_settings
|
||||
|
||||
|
||||
_on_setting_changed()
|
||||
plugin.update_region_grid()
|
||||
|
||||
|
||||
|
||||
|
||||
func _on_setting_changed() -> void:
|
||||
|
|
@ -206,7 +206,7 @@ func _on_setting_changed() -> void:
|
|||
var brush_imgs: Array = toolbar_settings.get_setting("brush")
|
||||
brush_data["image"] = brush_imgs[0]
|
||||
brush_data["texture"] = brush_imgs[1]
|
||||
|
||||
|
||||
update_decal()
|
||||
plugin.editor.set_brush_data(brush_data)
|
||||
|
||||
|
|
@ -226,7 +226,7 @@ func update_decal() -> void:
|
|||
else:
|
||||
# Wait for cursor to recenter after right-click before revealing
|
||||
# See https://github.com/godotengine/godot/issues/70098
|
||||
await get_tree().create_timer(.05).timeout
|
||||
await get_tree().create_timer(.05).timeout
|
||||
decal.visible = true
|
||||
|
||||
decal.size = Vector3.ONE * brush_data["size"]
|
||||
|
|
@ -250,7 +250,7 @@ func update_decal() -> void:
|
|||
decal.modulate = COLOR_PICK_ROUGH
|
||||
decal.modulate.a = 1.0
|
||||
else:
|
||||
decal.texture_albedo = brush_data["texture"]
|
||||
decal.texture_albedo = brush_data["texture"]
|
||||
match plugin.editor.get_tool():
|
||||
Terrain3DEditor.HEIGHT:
|
||||
match plugin.editor.get_operation():
|
||||
|
|
@ -303,10 +303,10 @@ func update_decal() -> void:
|
|||
decal.albedo_mix = 1.0
|
||||
decal.cull_mask = 1 << ( plugin.terrain.get_mouse_layer() - 1 )
|
||||
decal_timer.start()
|
||||
|
||||
|
||||
for gradient_decal in gradient_decals:
|
||||
gradient_decal.visible = false
|
||||
|
||||
|
||||
if plugin.editor.get_operation() == Terrain3DEditor.GRADIENT:
|
||||
var index := 0
|
||||
for point in brush_data["gradient_points"]:
|
||||
|
|
@ -320,7 +320,7 @@ func update_decal() -> void:
|
|||
func _get_gradient_decal(index: int) -> Decal:
|
||||
if gradient_decals.size() > index:
|
||||
return gradient_decals[index]
|
||||
|
||||
|
||||
var gradient_decal := Decal.new()
|
||||
gradient_decal = Decal.new()
|
||||
gradient_decal.texture_albedo = picker_texture
|
||||
|
|
@ -329,7 +329,7 @@ func _get_gradient_decal(index: int) -> Decal:
|
|||
gradient_decal.size.y = 1000.
|
||||
gradient_decal.cull_mask = decal.cull_mask
|
||||
add_child(gradient_decal)
|
||||
|
||||
|
||||
gradient_decals.push_back(gradient_decal)
|
||||
return gradient_decal
|
||||
|
||||
|
|
@ -351,10 +351,10 @@ func clear_picking() -> void:
|
|||
func is_picking() -> bool:
|
||||
if picking != Terrain3DEditor.TOOL_MAX:
|
||||
return true
|
||||
|
||||
|
||||
if operation_builder and operation_builder.is_picking():
|
||||
return true
|
||||
|
||||
|
||||
return false
|
||||
|
||||
|
||||
|
|
@ -373,7 +373,7 @@ func pick(p_global_position: Vector3) -> void:
|
|||
return
|
||||
picking_callback.call(picking, color, p_global_position)
|
||||
picking = Terrain3DEditor.TOOL_MAX
|
||||
|
||||
|
||||
elif operation_builder and operation_builder.is_picking():
|
||||
operation_builder.pick(p_global_position, plugin.terrain)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue