190 lines
5.8 KiB
Python
190 lines
5.8 KiB
Python
from enum import Enum
|
|
from typing import Optional
|
|
|
|
from core.const import AllnetJapanRegionId
|
|
|
|
class WaccaConstants():
|
|
CONFIG_NAME = "wacca.yaml"
|
|
GAME_CODE = "SDFE"
|
|
|
|
VER_WACCA = 0
|
|
VER_WACCA_S = 1
|
|
VER_WACCA_LILY = 2
|
|
VER_WACCA_LILY_R = 3
|
|
VER_WACCA_REVERSE = 4
|
|
|
|
VERSION_NAMES = ("WACCA", "WACCA S", "WACCA Lily", "WACCA Lily R", "WACCA Reverse")
|
|
|
|
class GRADES(Enum):
|
|
D = 1
|
|
C = 2
|
|
B = 3
|
|
A = 4
|
|
AA = 5
|
|
AAA = 6
|
|
S = 7
|
|
SS = 8
|
|
SSS = 9
|
|
MASTER = 10
|
|
S_PLUS = 11
|
|
SS_PLUS = 12
|
|
SSS_PLUS = 13
|
|
|
|
ITEM_TYPES = {
|
|
"xp": 1,
|
|
"wp": 2,
|
|
"music_unlock": 3,
|
|
"music_difficulty_unlock": 4,
|
|
"title": 5,
|
|
"icon": 6,
|
|
"trophy": 7,
|
|
"skill": 8,
|
|
"ticket": 9,
|
|
"note_color": 10,
|
|
"note_sound": 11,
|
|
"baht_do_not_send": 12,
|
|
"boost_badge": 13,
|
|
"gate_point": 14,
|
|
"navigator": 15,
|
|
"user_plate": 16,
|
|
"touch_effect": 17,
|
|
}
|
|
|
|
OPTIONS = {
|
|
"note_speed": 1, # 1.0 - 6.0
|
|
"field_mask": 2, # 0-4
|
|
"note_sound": 3, # ID
|
|
"note_color": 4, # ID
|
|
"bgm_volume": 5, # 0-100 incremements of 10
|
|
"bg_video": 7, # ask, on, or off
|
|
|
|
"mirror": 101, # none or left+right swap
|
|
"judge_display_pos": 102, # center, under, over, top or off
|
|
"judge_detail_display": 103, # on or off
|
|
"measure_guidelines": 105, # on or off
|
|
"guideline_mask": 106, # 0 - 5
|
|
"judge_line_timing_adjust": 108, # -10 - 10
|
|
"note_design": 110, # 1 - 5
|
|
"bonus_effect": 114, # on or off
|
|
"chara_voice": 115, # "usually" or none
|
|
"score_display_method": 116, # add or subtract
|
|
"give_up": 117, # off, no touch, can't achieve s, ss, sss, pb
|
|
"guideline_spacing": 118, # none, or a-g type
|
|
"center_display": 119, # none, combo, score add, score sub, s ss sss pb boarder
|
|
"ranking_display": 120, # on or off
|
|
"stage_up_icon_display": 121, # on or off
|
|
"rating_display": 122, # on or off
|
|
"player_level_display": 123, # on or off
|
|
"touch_effect": 124, # on or off
|
|
"guide_sound_vol": 125, # 0-100 incremements of 10
|
|
"touch_note_vol": 126, # 0-100 incremements of 10
|
|
"hold_note_vol": 127, # 0-100 incremements of 10
|
|
"slide_note_vol": 128, # 0-100 incremements of 10
|
|
"snap_note_vol": 129, # 0-100 incremements of 10
|
|
"chain_note_vol": 130, # 0-100 incremements of 10
|
|
"bonus_note_vol": 131, # 0-100 incremements of 10
|
|
"gate_skip": 132, # on or off
|
|
"key_beam_display": 133, # on or off
|
|
|
|
"left_slide_note_color": 201, # red blue green or orange
|
|
"right_slide_note_color": 202, # red blue green or orange
|
|
"forward_slide_note_color": 203, # red blue green or orange
|
|
"back_slide_note_color": 204, # red blue green or orange
|
|
|
|
"master_vol": 1001, # 0-100 incremements of 10
|
|
"set_title_id": 1002, # ID
|
|
"set_icon_id": 1003, # ID
|
|
"set_nav_id": 1004, # ID
|
|
"set_plate_id": 1005, # ID
|
|
}
|
|
|
|
class Difficulty(Enum):
|
|
NORMAL = 1
|
|
HARD = 2
|
|
EXPERT = 3
|
|
INFERNO = 4
|
|
|
|
class Region(Enum):
|
|
NONE = 0
|
|
HOKKAIDO = 1
|
|
AOMORI = 2
|
|
IWATE = 3
|
|
MIYAGI = 4
|
|
AKITA = 5
|
|
YAMAGATA = 6
|
|
FUKUSHIMA = 7
|
|
IBARAKI = 8
|
|
TOCHIGI = 9
|
|
GUNMA = 10
|
|
SAITAMA = 11
|
|
CHIBA = 12
|
|
TOKYO = 13
|
|
KANAGAWA = 14
|
|
NIIGATA = 15
|
|
TOYAMA = 16
|
|
ISHIKAWA = 17
|
|
FUKUI = 18
|
|
YAMANASHI = 19
|
|
NAGANO = 20
|
|
GIFU = 21
|
|
SHIZUOKA = 22
|
|
AICHI = 23
|
|
MIE = 24
|
|
SHIGA = 25
|
|
KYOTO = 26
|
|
OSAKA = 27
|
|
HYOGO = 28
|
|
NARA = 29
|
|
WAKAYAMA = 30
|
|
TOTTORI = 31
|
|
SHIMANE = 32
|
|
OKAYAMA = 33
|
|
HIROSHIMA = 34
|
|
YAMAGUCHI = 35
|
|
TOKUSHIMA = 36
|
|
KAGAWA = 37
|
|
EHIME = 38
|
|
KOCHI = 39
|
|
FUKUOKA = 40
|
|
SAGA = 41
|
|
NAGASAKI = 42
|
|
KUMAMOTO = 43
|
|
OITA = 44
|
|
MIYAZAKI = 45
|
|
KAGOSHIMA = 46
|
|
OKINAWA = 47
|
|
UNITED_STATES = 48
|
|
USA = 48
|
|
TAIWAN = 49
|
|
TWN = 49
|
|
HONG_KONG = 50
|
|
HKG = 50
|
|
SINGAPORE = 51
|
|
SGP = 51
|
|
KOREA = 52
|
|
KOR = 52
|
|
|
|
VALID_COUNTRIES = set(["JPN", "USA", "KOR", "HKG", "SGP"])
|
|
|
|
@classmethod
|
|
def game_ver_to_string(cls, ver: int):
|
|
return cls.VERSION_NAMES[ver]
|
|
|
|
@classmethod
|
|
def allnet_region_id_to_wacca_region(cls, region: int) -> Optional[Region]:
|
|
try:
|
|
return [
|
|
cls.Region.NONE, cls.Region.AICHI, cls.Region.AOMORI, cls.Region.AKITA, cls.Region.ISHIKAWA,
|
|
cls.Region.IBARAKI, cls.Region.IWATE, cls.Region.EHIME, cls.Region.OITA, cls.Region.OSAKA,
|
|
cls.Region.OKAYAMA, cls.Region.OKINAWA, cls.Region.KAGAWA, cls.Region.KAGOSHIMA, cls.Region.KANAGAWA,
|
|
cls.Region.GIFU, cls.Region.KYOTO, cls.Region.KUMAMOTO, cls.Region.GUNMA, cls.Region.KOCHI,
|
|
cls.Region.SAITAMA, cls.Region.SAGA, cls.Region.SHIGA, cls.Region.SHIZUOKA, cls.Region.SHIMANE,
|
|
cls.Region.CHIBA, cls.Region.TOKYO, cls.Region.TOKUSHIMA, cls.Region.TOCHIGI, cls.Region.TOTTORI,
|
|
cls.Region.TOYAMA, cls.Region.NAGASAKI, cls.Region.NAGANO, cls.Region.NARA, cls.Region.NIIGATA,
|
|
cls.Region.HYOGO, cls.Region.HIROSHIMA, cls.Region.FUKUI, cls.Region.FUKUOKA, cls.Region.FUKUSHIMA,
|
|
cls.Region.HOKKAIDO, cls.Region.MIE, cls.Region.MIYAGI, cls.Region.MIYAZAKI, cls.Region.YAMAGATA,
|
|
cls.Region.YAMAGUCHI, cls.Region.YAMANASHI, cls.Region.WAKAYAMA,
|
|
][region]
|
|
except: return None
|
|
|