@@ -40,6 +40,30 @@ def get_username():
40
40
except Exception :
41
41
pass
42
42
return "Mark S."
43
+
44
+ def generate_serial_number (username ):
45
+ """
46
+ Generate a Severance-style serial number based on the username.
47
+ Format: 0xAAAAAA : 0xBBBBBB where A and B are hex values derived from username.
48
+ """
49
+ username_bytes = username .encode ('utf-8' )
50
+ first_hex = 0
51
+ for i in range (min (3 , len (username_bytes ))):
52
+ first_hex = (first_hex << 8 ) | username_bytes [i ]
53
+ second_hex = 0
54
+ if len (username_bytes ) > 3 :
55
+ remaining_bytes = username_bytes [3 :]
56
+ for i , byte in enumerate (remaining_bytes ):
57
+ second_hex ^= (byte << (8 * (i % 3 )))
58
+ else :
59
+ hash_obj = hashlib .md5 (username_bytes )
60
+ digest = hash_obj .digest ()
61
+ second_hex = int .from_bytes (digest [:3 ], byteorder = 'big' )
62
+ serial = f"0x{ first_hex :06X} : 0x{ second_hex :06X} "
63
+ return serial
64
+ def calculate_distance (x1 , y1 , x2 , y2 ):
65
+ """Calculate Euclidean distance between two points"""
66
+ return math .sqrt ((x2 - x1 ) ** 2 + (y2 - y1 ) ** 2 )
43
67
# pylint: disable=too-many-branches,too-many-lines,broad-except,unused-argument
44
68
# pylint: disable=too-many-statements,too-many-locals,too-many-public-methods,too-many-nested-blocks
45
69
class MacrodataRefinementTerminal :
@@ -53,8 +77,8 @@ def __init__(self, username=None, location=LOCATION):
53
77
self .completion = 0
54
78
self .total_goal = TOTAL_REFINEMENT_GOAL
55
79
self .total_refined = 0
56
- self .image_path = f"/home/ { self . username } / lumon-logo.png"
57
- self .logo_img = Image .open (f"/home/ { self . username } / lumon-logo-small.png" )
80
+ self .image_path = " lumon-logo.png"
81
+ self .logo_img = Image .open (" lumon-logo-small.png" )
58
82
59
83
# graphics
60
84
self .root = tk .Tk ()
@@ -213,27 +237,6 @@ def apply_mouse_avoidance(self, number):
213
237
if abs (number .mouse_offset_y ) < 0.05 :
214
238
number .mouse_offset_y = 0
215
239
216
- def generate_serial_number (self , username ):
217
- """
218
- Generate a Severance-style serial number based on the username.
219
- Format: 0xAAAAAA : 0xBBBBBB where A and B are hex values derived from username.
220
- """
221
- username_bytes = username .encode ('utf-8' )
222
- first_hex = 0
223
- for i in range (min (3 , len (username_bytes ))):
224
- first_hex = (first_hex << 8 ) | username_bytes [i ]
225
- second_hex = 0
226
- if len (username_bytes ) > 3 :
227
- remaining_bytes = username_bytes [3 :]
228
- for i , byte in enumerate (remaining_bytes ):
229
- second_hex ^= (byte << (8 * (i % 3 )))
230
- else :
231
- hash_obj = hashlib .md5 (username_bytes )
232
- digest = hash_obj .digest ()
233
- second_hex = int .from_bytes (digest [:3 ], byteorder = 'big' )
234
- serial = f"0x{ first_hex :06X} : 0x{ second_hex :06X} "
235
- return serial
236
-
237
240
def save_progress (self , filepath = None ):
238
241
"""
239
242
Save the current progress and bin data to a JSON file.
@@ -396,7 +399,7 @@ def create_ui_elements(self):
396
399
self .margin + usable_width + 5 , bottom_frame_y + footer_height ,
397
400
outline = self .palette .FG , fill = self .palette .FG , width = 2
398
401
)
399
- serial = self . generate_serial_number (self .username )
402
+ serial = generate_serial_number (self .username )
400
403
self .ui_elements ['serial' ] = self .canvas .create_text (
401
404
self .margin + usable_width / 2 , bottom_frame_y + footer_height / 2 ,
402
405
text = serial ,
@@ -883,7 +886,7 @@ def select_random_wiggle_group(self):
883
886
return
884
887
seed_number = random .choice (available_numbers )
885
888
for number in available_numbers :
886
- number .distance_to_seed = self . calculate_distance (
889
+ number .distance_to_seed = calculate_distance (
887
890
seed_number .x , seed_number .y , number .x , number .y
888
891
)
889
892
available_numbers .sort (key = lambda n : n .distance_to_seed )
@@ -893,10 +896,6 @@ def select_random_wiggle_group(self):
893
896
for number in self .wiggle_numbers :
894
897
number .needs_refinement = True
895
898
896
- def calculate_distance (self , x1 , y1 , x2 , y2 ):
897
- """Calculate Euclidean distance between two points"""
898
- return math .sqrt ((x2 - x1 ) ** 2 + (y2 - y1 ) ** 2 )
899
-
900
899
def wiggle_selected_numbers (self ):
901
900
"""Apply smooth, floating wiggle effect to numbers
902
901
that need refinement and update haptics
0 commit comments