Tooltip
This commit is contained in:
parent
d4b50bdda0
commit
21a4adf229
16 changed files with 136 additions and 24 deletions
|
|
@ -26,6 +26,8 @@ var dragged: bool = false:
|
|||
@export var interactible: Interactible
|
||||
@export var button_generator: ButtonGenerator
|
||||
|
||||
@export var display_text: String
|
||||
|
||||
@export var mask: PackedStringArray
|
||||
var contacted_draggables: Array[DraggableObject]
|
||||
var filtered_draggables: Array[DraggableObject]
|
||||
|
|
@ -37,9 +39,18 @@ func _ready() -> void:
|
|||
|
||||
func _mouse_enter() -> void:
|
||||
mouse_in = true
|
||||
var text: String
|
||||
if has_node("Inventory") and len($Inventory.inventory) != 0:
|
||||
text = $Inventory.get_text()
|
||||
else:
|
||||
text = display_text
|
||||
if text == "":
|
||||
return
|
||||
Tooltip.set_text(text)
|
||||
|
||||
func _mouse_exit() -> void:
|
||||
mouse_in = false
|
||||
Tooltip.clear()
|
||||
|
||||
func set_mask(new_mask: PackedStringArray) -> void:
|
||||
mask.clear()
|
||||
|
|
|
|||
|
|
@ -29,3 +29,9 @@ func _on_interactible_interacted(with: DraggableObject) -> void:
|
|||
log_message += "%s мг. %s, " % [str(sub.amount),sub.substance.get_formula()]
|
||||
GuiSignalBus.push(log_message)
|
||||
inventory_updated.emit(mini_inventory)
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
var result = ""
|
||||
for key in mini_inventory:
|
||||
result += key.substance.scientific_name + "+"
|
||||
$"../..".display_text = result.left(len(result)-1)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ extends Node
|
|||
var add_amount: float
|
||||
|
||||
func _on_interaction_interacted(with: DraggableObject) -> void:
|
||||
if with.is_in_group("flask"):
|
||||
if with.is_in_group("flask") and add_amount > 0:
|
||||
var subs: RuntimeSubstanceData = RuntimeSubstanceData.new()
|
||||
subs.amount = add_amount
|
||||
subs.substance = $"../../SubstanceData".substance
|
||||
|
|
|
|||
|
|
@ -179,3 +179,22 @@ func check_for_reactions() -> void:
|
|||
update_solutions()
|
||||
inventory_changed.emit(inventory.values())
|
||||
GuiSignalBus.push("Произошла реакция")
|
||||
if len(find_odor()) > 0:
|
||||
GuiSignalBus.push("Появился запах")
|
||||
|
||||
#func find_gases() -> Array[RuntimeSubstanceData]:
|
||||
# for key in inventory:
|
||||
# if inventory[key].substance in [preload("H")]
|
||||
|
||||
func find_odor() -> Array[RuntimeSubstanceData]:
|
||||
var result = []
|
||||
for key in inventory:
|
||||
if inventory[key].substance in [preload("res://assets/substances/CH3COOH.tres")]:
|
||||
result.push_back(inventory[key])
|
||||
return result
|
||||
|
||||
func get_text() -> String:
|
||||
var result = ""
|
||||
for key in inventory:
|
||||
result += key + "+"
|
||||
return result.left(len(result)-1)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,48 @@ enum DisplayType{
|
|||
material_override.set_shader_parameter("wave_intensity",1.)
|
||||
tween.tween_property(material_override,"shader_parameter/wave_intensity",0.0,2.0)
|
||||
|
||||
func update_material(substances: Array[RuntimeSubstanceData]) -> void:
|
||||
func update_fluid_material(substances: Array[RuntimeSubstanceData]) -> void:
|
||||
var mat: ShaderMaterial = material_override
|
||||
if len(substances) == 0:
|
||||
visible = false
|
||||
return
|
||||
else:
|
||||
visible = true
|
||||
|
||||
var total_weight = 0
|
||||
var total_color = 0
|
||||
|
||||
for sub in substances:
|
||||
total_weight += sub.amount
|
||||
total_color += sub.substance.color_influence
|
||||
|
||||
var pH: float = 0
|
||||
var color: Color = Color(0,0,0,0)
|
||||
|
||||
for sub: RuntimeSubstanceData in substances:
|
||||
var weight: float = sub.amount/total_weight
|
||||
pH += sub.substance.get_ph_runtime(substances) * weight
|
||||
|
||||
for sub: RuntimeSubstanceData in substances:
|
||||
var color_to_add: Color
|
||||
if sub.substance.pHColor != null:
|
||||
color_to_add = sub.substance.pHColor.sample(pH/14.0)
|
||||
else:
|
||||
color_to_add = sub.substance.color
|
||||
|
||||
if display_type == DisplayType.Fluid and sub.is_solution:
|
||||
color_to_add.a = 0.5
|
||||
|
||||
#if color == Color(0,0,0,0):
|
||||
# color = color_to_add
|
||||
#else:
|
||||
# color = color.lerp(color_to_add,sub.substance.color_influence)
|
||||
color += color_to_add * sub.substance.color_influence
|
||||
|
||||
|
||||
mat.set_shader_parameter("albedo_color", color / total_color)
|
||||
|
||||
func update_solid_material(substances: Array[RuntimeSubstanceData]) -> void:
|
||||
var mat: StandardMaterial3D = material_override
|
||||
if len(substances) == 0:
|
||||
visible = false
|
||||
|
|
@ -57,10 +98,10 @@ func update_material_unfiltered(substances: Array[RuntimeSubstanceData]):
|
|||
match display_type:
|
||||
DisplayType.Fluid:
|
||||
var fluids = substances.filter(filter_liquids)
|
||||
update_material(fluids)
|
||||
update_fluid_material(fluids)
|
||||
DisplayType.Solid:
|
||||
var solids = substances.filter(filter_solids)
|
||||
update_material(solids)
|
||||
update_solid_material(solids)
|
||||
|
||||
func filter_liquids(sub: RuntimeSubstanceData): return sub.substance.melting_point < sub.temperature or sub.is_solution
|
||||
func filter_solids(sub: RuntimeSubstanceData): return sub.substance.melting_point > sub.temperature and not sub.is_solution
|
||||
|
|
|
|||
|
|
@ -15,3 +15,4 @@ func _ready() -> void:
|
|||
if substance.is_solution:
|
||||
jar_fill_material.albedo_color.a = 0.5
|
||||
get_parent().add_to_group("fluid_source")
|
||||
get_parent().display_text = substance.scientific_name
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue