rabukasim / engine /models /generated_packer.py
trioskosmos's picture
Upload folder using huggingface_hub
463f868 verified
# @generated by tools/sync_metadata.py on 2026-03-19T22:09:45.151488
def to_signed_32(x):
x = int(x) & 0xFFFFFFFF
return x - 0x100000000 if x >= 0x80000000 else x
def pack_a_standard(target_player=0, card_type=0, group_enabled=0, group_id=0, is_tapped=0, has_blade_heart=0, not_has_blade_heart=0, unique_names=0, unit_enabled=0, unit_id=0, value_enabled=0, value_threshold=0, is_le=0, is_cost_type=0, color_mask=0, char_id_1=0, char_id_2=0, zone_mask=0, special_id=0, is_setsuna=0, compare_accumulated=0, is_optional=0, keyword_energy=0, keyword_member=0):
res = 0
res |= ((target_player) & 0x3) << 0
res |= ((card_type) & 0x3) << 2
res |= ((group_enabled) & 0x1) << 4
res |= ((group_id) & 0x7f) << 5
res |= ((is_tapped) & 0x1) << 12
res |= ((has_blade_heart) & 0x1) << 13
res |= ((not_has_blade_heart) & 0x1) << 14
res |= ((unique_names) & 0x1) << 15
res |= ((unit_enabled) & 0x1) << 16
res |= ((unit_id) & 0x7f) << 17
res |= ((value_enabled) & 0x1) << 24
res |= ((value_threshold) & 0x1f) << 25
res |= ((is_le) & 0x1) << 30
res |= ((is_cost_type) & 0x1) << 31
res |= ((color_mask) & 0x7f) << 32
res |= ((char_id_1) & 0x7f) << 39
res |= ((char_id_2) & 0x7f) << 46
res |= ((zone_mask) & 0x7) << 53
res |= ((special_id) & 0x7) << 56
res |= ((is_setsuna) & 0x1) << 59
res |= ((compare_accumulated) & 0x1) << 60
res |= ((is_optional) & 0x1) << 61
res |= ((keyword_energy) & 0x1) << 62
res |= ((keyword_member) & 0x1) << 63
return res
def unpack_a_standard(val):
return {
'target_player': (val >> 0) & 0x3,
'card_type': (val >> 2) & 0x3,
'group_enabled': (val >> 4) & 0x1,
'group_id': (val >> 5) & 0x7f,
'is_tapped': (val >> 12) & 0x1,
'has_blade_heart': (val >> 13) & 0x1,
'not_has_blade_heart': (val >> 14) & 0x1,
'unique_names': (val >> 15) & 0x1,
'unit_enabled': (val >> 16) & 0x1,
'unit_id': (val >> 17) & 0x7f,
'value_enabled': (val >> 24) & 0x1,
'value_threshold': (val >> 25) & 0x1f,
'is_le': (val >> 30) & 0x1,
'is_cost_type': (val >> 31) & 0x1,
'color_mask': (val >> 32) & 0x7f,
'char_id_1': (val >> 39) & 0x7f,
'char_id_2': (val >> 46) & 0x7f,
'zone_mask': (val >> 53) & 0x7,
'special_id': (val >> 56) & 0x7,
'is_setsuna': (val >> 59) & 0x1,
'compare_accumulated': (val >> 60) & 0x1,
'is_optional': (val >> 61) & 0x1,
'keyword_energy': (val >> 62) & 0x1,
'keyword_member': (val >> 63) & 0x1,
}
def pack_a_heart_cost(req_1=0, req_2=0, req_3=0, req_4=0, req_5=0, req_6=0, req_7=0, req_8=0, unit_enabled=0, unit_id=0):
res = 0
res |= ((req_1) & 0xf) << 0
res |= ((req_2) & 0xf) << 4
res |= ((req_3) & 0xf) << 8
res |= ((req_4) & 0xf) << 12
res |= ((req_5) & 0xf) << 16
res |= ((req_6) & 0xf) << 20
res |= ((req_7) & 0xf) << 24
res |= ((req_8) & 0xf) << 28
res |= ((unit_enabled) & 0x1) << 48
res |= ((unit_id) & 0x7f) << 49
return res
def unpack_a_heart_cost(val):
return {
'req_1': (val >> 0) & 0xf,
'req_2': (val >> 4) & 0xf,
'req_3': (val >> 8) & 0xf,
'req_4': (val >> 12) & 0xf,
'req_5': (val >> 16) & 0xf,
'req_6': (val >> 20) & 0xf,
'req_7': (val >> 24) & 0xf,
'req_8': (val >> 28) & 0xf,
'unit_enabled': (val >> 48) & 0x1,
'unit_id': (val >> 49) & 0x7f,
}
def pack_a_look_choose():
res = 0
return res
def unpack_a_look_choose(val):
return {
}
def pack_v_heart_counts(pink=0, red=0, yellow=0, green=0, blue=0, purple=0, any=0):
res = 0
res |= ((pink) & 0xf) << 0
res |= ((red) & 0xf) << 4
res |= ((yellow) & 0xf) << 8
res |= ((green) & 0xf) << 12
res |= ((blue) & 0xf) << 16
res |= ((purple) & 0xf) << 20
res |= ((any) & 0xf) << 24
return res
def unpack_v_heart_counts(val):
return {
'pink': (val >> 0) & 0xf,
'red': (val >> 4) & 0xf,
'yellow': (val >> 8) & 0xf,
'green': (val >> 12) & 0xf,
'blue': (val >> 16) & 0xf,
'purple': (val >> 20) & 0xf,
'any': (val >> 24) & 0xf,
}
def pack_v_look_choose(count=0, char_id_1=0, reveal=0, char_id_2=0, char_id_3=0, dest_discard=0):
res = 0
res |= ((count) & 0xff) << 0
res |= ((char_id_1) & 0x7f) << 16
res |= ((reveal) & 0x1) << 30
res |= ((char_id_2) & 0x7f) << 8
res |= ((char_id_3) & 0x7f) << 23
res |= ((dest_discard) & 0x1) << 31
return res
def unpack_v_look_choose(val):
return {
'count': (val >> 0) & 0xff,
'char_id_1': (val >> 16) & 0x7f,
'reveal': (val >> 30) & 0x1,
'char_id_2': (val >> 8) & 0x7f,
'char_id_3': (val >> 23) & 0x7f,
'dest_discard': (val >> 31) & 0x1,
}
def pack_v_scalar_dynamic(base_value=0, divisor=0):
res = 0
res |= ((base_value) & 0xffff) << 0
res |= ((divisor) & 0xffff) << 16
return res
def unpack_v_scalar_dynamic(val):
return {
'base_value': (val >> 0) & 0xffff,
'divisor': (val >> 16) & 0xffff,
}
def pack_s_standard(target_slot=0, remainder_zone=0, source_zone=0, dest_zone=0, is_opponent=0, is_reveal_until_live=0, is_empty_slot=0, is_wait=0, is_dynamic=0, area_idx=0, is_baton_slot=0):
res = 0
res |= ((target_slot) & 0xff) << 0
res |= ((remainder_zone) & 0xff) << 8
res |= ((source_zone) & 0xf) << 16
res |= ((dest_zone) & 0xf) << 20
res |= ((is_opponent) & 0x1) << 24
res |= ((is_reveal_until_live | is_baton_slot) & 0x1) << 25
res |= ((is_empty_slot) & 0x1) << 26
res |= ((is_wait) & 0x1) << 27
res |= ((is_dynamic) & 0x1) << 28
res |= ((area_idx) & 0x7) << 29
return res
def unpack_s_standard(val):
return {
'target_slot': (val >> 0) & 0xff,
'remainder_zone': (val >> 8) & 0xff,
'source_zone': (val >> 16) & 0xf,
'dest_zone': (val >> 20) & 0xf,
'is_opponent': (val >> 24) & 0x1,
'is_reveal_until_live': (val >> 25) & 0x1,
'is_baton_slot': (val >> 25) & 0x1,
'is_empty_slot': (val >> 26) & 0x1,
'is_wait': (val >> 27) & 0x1,
'is_dynamic': (val >> 28) & 0x1,
'area_idx': (val >> 29) & 0x7,
}