From e25b04f8cb4f44235c4d089e2ff50d4a43e38ea6 Mon Sep 17 00:00:00 2001 From: Nicole Rappe Date: Wed, 12 Feb 2025 01:21:05 -0700 Subject: [PATCH] asdf --- .../character_status_node.cpython-312.pyc | Bin 8369 -> 8369 bytes .../convert_to_percent_node.cpython-312.pyc | Bin 3178 -> 3189 bytes Nodes/__pycache__/data_node.cpython-312.pyc | Bin 6370 -> 6173 bytes Nodes/character_status_node.py | 14 ++-- Nodes/convert_to_percent_node.py | 69 +++++++++--------- Nodes/data_node.py | 7 +- 6 files changed, 46 insertions(+), 44 deletions(-) diff --git a/Nodes/__pycache__/character_status_node.cpython-312.pyc b/Nodes/__pycache__/character_status_node.cpython-312.pyc index 4763ff50801460500847454cedd776068aaf3273..85016833a160889b80b1ad100ccec4b134ca67e7 100644 GIT binary patch delta 476 zcmdn!xY3dKG%qg~0}zyjtVutykynMU{w9$3QUyf#0SQgUB0V5gWCkM4K?2M#m4VdD z8W3?6Bx(U7EP;e3bCE4b^eBjs0f}0H2x}k#)MWw^Jq#j#0f}GA&KZeCiOD6YMGCk*(9`s{|ZOg4Gx}u{!acG+*gcT4#ZwI3I>UW zz(jekn7AFNyKE8$5)Frmg4M=dHVOfWhQdU_YKb(LkM)X<-Hy7;I({G{{5QJ_%wl2m z+x$Spk&)4TvXaVtocJc<9e4%8ZFK=}8Z;%&d44!;U-k0fR{bW%E1GYGjc;;kp1$D;y$;AqG01u{%A^-pY delta 476 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 HlZN~aNz#ld diff --git a/Nodes/__pycache__/data_node.cpython-312.pyc b/Nodes/__pycache__/data_node.cpython-312.pyc index 9122656633de0d2c0c7ecac2691dce629fa56629..03561c1154dd9cee58698fe7ee8a8092d90825ef 100644 GIT binary patch delta 419 zcmaE4IM;yhG%qg~0}!-?u1Vi2w2@DNneo?TeP#v58z zo&10$o-uT?18WEi=T#2n&5K#f7#X=XOR-xsaxnu{f$--N)R zzQvQCS`uGSlwXiqR8m>QH949yicx*?HcmCLQIlVDo&%b+i|Ye38(169<_&z^tW0{0 zlMk@UFqJS*t`(7=%*-Y{`9BZWjk9FjBC zml!W7S!{WQL-z&;Pd{%b?+nf>zyOmGS7hW-`6R~0>d5$6f{j&WvZsUsBk$xaiB#cC SMn(_Dj*71gU`CMy&`bca(P@|f delta 635 zcmbPh@W_zwG%qg~0}!n8Uz2Viypd0VnXziJKC=Sjr^x}#=cQ^GvIIcVs9-k3T&BtL zEN1+_xLp!U5*7UNQ&O!IG&v{7u*9+!aRL=j-pLZrm@rwAHH4pgfy;8Qg8ah3s5OD5PvRUn8d9*IhaFT5@;h6s%;=1(8kG?991$Pvx|6v zgr6q!EuQq$lK6t6{DRb?lFA~^$^4vAj7F2QIMu|^>@1Q1>PTjqEGQ&0c|GT5pzXF5Pt`p&%e27_i@;njY z$$~u63bm{y{BV<4Q`lBRy#NsNotk@2$x8>`Xe7I6hezR63)Q-!k_89f*~D!wv+ I8Q{1807lxH&j0`b diff --git a/Nodes/character_status_node.py b/Nodes/character_status_node.py index 71f6b99..62eb026 100644 --- a/Nodes/character_status_node.py +++ b/Nodes/character_status_node.py @@ -59,13 +59,13 @@ class CharacterStatusNode(BaseNode): } # Add output ports - self.add_output("HP: Current", painter_func=get_draw_stat_port((255, 0, 0))) - self.add_output("HP: Total", painter_func=get_draw_stat_port((255, 0, 0))) - self.add_output("MP: Current", painter_func=get_draw_stat_port((0, 0, 255))) - self.add_output("MP: Total", painter_func=get_draw_stat_port((0, 0, 255))) - self.add_output("FP: Current", painter_func=get_draw_stat_port((0, 255, 0))) - self.add_output("FP: Total", painter_func=get_draw_stat_port((0, 255, 0))) - self.add_output("EXP", painter_func=get_draw_stat_port((127, 255, 212))) + self.add_output("HP: Current", painter_func=get_draw_stat_port((217, 36, 78))) + self.add_output("HP: Total", painter_func=get_draw_stat_port((217, 36, 78))) + self.add_output("MP: Current", painter_func=get_draw_stat_port((35, 124, 213))) + self.add_output("MP: Total", painter_func=get_draw_stat_port((35, 124, 213))) + self.add_output("FP: Current", painter_func=get_draw_stat_port((36, 197, 28))) + self.add_output("FP: Total", painter_func=get_draw_stat_port((36, 197, 28))) + self.add_output("EXP", painter_func=get_draw_stat_port((52, 195, 250))) self.set_name("Character Status (API Disconnected)") diff --git a/Nodes/convert_to_percent_node.py b/Nodes/convert_to_percent_node.py index 7d309ef..ea7d127 100644 --- a/Nodes/convert_to_percent_node.py +++ b/Nodes/convert_to_percent_node.py @@ -2,10 +2,9 @@ """ Convert to Percent Node -This node takes an input string formatted as "numerator/denom" (e.g., "50/50"), -splits it into two numbers, computes (numerator / denom) * 100, and outputs the result -as a float formatted to 4 decimal places. If an error occurs, an error message is stored. -The node's title is always "Convert to Percent". +This node takes two numerical inputs (A and B), computes (A / B) * 100, +and outputs the result as a float formatted to 4 decimal places. If an error +occurs, an error message is stored. The node's title is always "Convert to Percent". """ from NodeGraphQt import BaseNode @@ -17,8 +16,9 @@ class ConvertToPercentNode(BaseNode): def __init__(self): super(ConvertToPercentNode, self).__init__() - # Add one input port (expects a string in "numerator/denom" format). - self.add_input("in") + # Add two input ports for separate numerator and denominator. + self.add_input("Numerator") + self.add_input("Denominator") # Add one output port. self.add_output("Percent") # Initialize internal value. @@ -29,34 +29,37 @@ class ConvertToPercentNode(BaseNode): self.values = {} def process_input(self): - input_port = self.input(0) - connected_ports = input_port.connected_ports() if input_port is not None else [] - if connected_ports: - connected_output = connected_ports[0] - parent_node = connected_output.node() - port_name = connected_output.name() - # Use parent's values dictionary if available, else use its value attribute. - if hasattr(parent_node, 'values') and isinstance(parent_node.values, dict): - input_value = parent_node.values.get(port_name, "") - else: - input_value = getattr(parent_node, 'value', "") - input_str = str(input_value).strip() - try: - parts = input_str.split('/') - if len(parts) != 2: - raise ValueError("Input must be in the format 'num/denom'") - numerator = float(parts[0].strip()) - denominator = float(parts[1].strip()) - if denominator == 0: - raise ZeroDivisionError("Division by zero") - percent = (numerator / denominator) * 100 - formatted_percent = f"{percent:.4f}" - self.value = formatted_percent - except Exception as e: - self.value = f"Error: {e}" - else: - self.value = "No Input" + numerator_input = self.input(0) + denominator_input = self.input(1) + + numerator = self.get_connected_value(numerator_input) + denominator = self.get_connected_value(denominator_input) + + try: + numerator = float(numerator) + denominator = float(denominator) + if denominator == 0: + raise ZeroDivisionError("Division by zero") + percent = (numerator / denominator) * 100 + formatted_percent = f"{percent:.4f}" + self.value = formatted_percent + except Exception as e: + self.value = f"Error: {e}" + # Always keep the title static. self.set_name(self.NODE_NAME) # Store the computed value in the values dictionary under the output port key. self.values["Percent"] = self.value + + def get_connected_value(self, input_port): + """ + Helper function to retrieve the value from a connected port. + """ + if input_port and input_port.connected_ports(): + connected_output = input_port.connected_ports()[0] + parent_node = connected_output.node() + port_name = connected_output.name() + if hasattr(parent_node, 'values') and isinstance(parent_node.values, dict): + return parent_node.values.get(port_name, "0") + return getattr(parent_node, 'value', "0") + return "0" diff --git a/Nodes/data_node.py b/Nodes/data_node.py index 41ce574..a63b630 100644 --- a/Nodes/data_node.py +++ b/Nodes/data_node.py @@ -30,7 +30,7 @@ class DataNode(BaseNode): self.add_text_input('value', 'Value', text='') # Initialize the value from the widget property. self.process_widget_event() - self.set_name(f"Data Node: {self.value}") + self.set_name(f"Data Node") def post_create(self): """ @@ -50,7 +50,7 @@ class DataNode(BaseNode): """ current_text = self.get_property('value') self.value = current_text - self.set_name(f"Data Node: {self.value}") + self.set_name(f"Data Node") def property_changed(self, property_name): """ @@ -113,9 +113,8 @@ class DataNode(BaseNode): """ Receives data from connected nodes and updates the internal value. """ - print(f"DataNode received data from {source_port_name}: {data}") # Debugging self.set_property('value', str(data)) # Ensure it's always stored as a string - self.set_name(f"Data Node: {data}") + self.set_name(f"Data Node") # Transmit data further if there's an output connection output_port = self.output(0)