add opt static tables

This commit is contained in:
Hay1tsme
2025-04-07 18:31:11 -04:00
parent 96a252cbf3
commit 1cab68006d
10 changed files with 536 additions and 35 deletions

View File

@@ -1,3 +1,6 @@
from typing import Optional
from core.utils import floor_to_nearest_005
class Mai2Constants:
GRADE = {
"D": 0,
@@ -83,6 +86,46 @@ class Mai2Constants:
"maimai DX BUDDiES PLUS"
)
MAI_VERSION_LUT = {
"100": VER_MAIMAI,
"110": VER_MAIMAI_PLUS,
"120": VER_MAIMAI_GREEN,
"130": VER_MAIMAI_GREEN_PLUS,
"140": VER_MAIMAI_ORANGE,
"150": VER_MAIMAI_ORANGE_PLUS,
"160": VER_MAIMAI_PINK,
"170": VER_MAIMAI_PINK_PLUS,
"180": VER_MAIMAI_MURASAKI,
"185": VER_MAIMAI_MURASAKI_PLUS,
"190": VER_MAIMAI_MILK,
"195": VER_MAIMAI_MILK_PLUS,
"197": VER_MAIMAI_FINALE,
}
MAI2_VERSION_LUT = {
"100": VER_MAIMAI_DX,
"105": VER_MAIMAI_DX_PLUS,
"110": VER_MAIMAI_DX_SPLASH,
"115": VER_MAIMAI_DX_SPLASH_PLUS,
"120": VER_MAIMAI_DX_UNIVERSE,
"125": VER_MAIMAI_DX_UNIVERSE_PLUS,
"130": VER_MAIMAI_DX_FESTIVAL,
"135": VER_MAIMAI_DX_FESTIVAL_PLUS,
"140": VER_MAIMAI_DX_BUDDIES,
"145": VER_MAIMAI_DX_BUDDIES_PLUS,
}
@classmethod
def game_ver_to_string(cls, ver: int):
""" Takes an internal game version (ex 13 for maimai DX) and returns a the full name of the version """
return cls.VERSION_STRING[ver]
@classmethod
def int_ver_to_game_ver(cls, ver: int, is_dx = True) -> Optional[int]:
""" Takes an int ver (ex 100 for 1.00) and returns an internal game version """
if is_dx:
return cls.MAI2_VERSION_LUT.get(str(floor_to_nearest_005(ver)), None)
else:
if ver >= 197:
return cls.VER_MAIMAI_FINALE
return cls.MAI_VERSION_LUT.get(str(floor_to_nearest_005(ver)), None)

View File

@@ -2,13 +2,27 @@ from core.data.schema.base import BaseData, metadata
from typing import Optional, Dict, List
from sqlalchemy import Table, Column, UniqueConstraint, PrimaryKeyConstraint, and_
from sqlalchemy.types import Integer, String, TIMESTAMP, Boolean, JSON, Float
from sqlalchemy.types import Integer, String, TIMESTAMP, Boolean, BIGINT, Float, INTEGER, BOOLEAN, VARCHAR
from sqlalchemy.schema import ForeignKey
from sqlalchemy.sql import func, select
from sqlalchemy.engine import Row
from sqlalchemy.dialects.mysql import insert
from datetime import datetime
opts = Table(
"mai2_static_opt",
metadata,
Column("id", BIGINT, primary_key=True, nullable=False),
Column("version", INTEGER, nullable=False),
Column("name", VARCHAR(4), nullable=False), # Axxx
Column("sequence", INTEGER, nullable=False), # release in DataConfig.xml
Column("cmReleaseVer", INTEGER, nullable=False),
Column("whenRead", TIMESTAMP, nullable=False, server_default=func.now()),
Column("isEnable", BOOLEAN, nullable=False, server_default="1"),
UniqueConstraint("version", "name", name="mai2_static_opt_uk"),
mysql_charset="utf8mb4",
)
event = Table(
"mai2_static_event",
metadata,
@@ -19,6 +33,7 @@ event = Table(
Column("name", String(255)),
Column("startDate", TIMESTAMP, server_default=func.now()),
Column("enabled", Boolean, server_default="1"),
Column("opt", ForeignKey("mai2_static_opt.id", ondelete="SET NULL", onupdate="cascade")),
UniqueConstraint("version", "eventId", "type", name="mai2_static_event_uk"),
mysql_charset="utf8mb4",
)
@@ -37,6 +52,7 @@ music = Table(
Column("addedVersion", String(255)),
Column("difficulty", Float),
Column("noteDesigner", String(255)),
Column("opt", ForeignKey("mai2_static_opt.id", ondelete="SET NULL", onupdate="cascade")),
UniqueConstraint("songId", "chartId", "version", name="mai2_static_music_uk"),
mysql_charset="utf8mb4",
)
@@ -51,6 +67,7 @@ ticket = Table(
Column("name", String(255)),
Column("price", Integer, server_default="1"),
Column("enabled", Boolean, server_default="1"),
Column("opt", ForeignKey("mai2_static_opt.id", ondelete="SET NULL", onupdate="cascade")),
UniqueConstraint("version", "ticketId", name="mai2_static_ticket_uk"),
mysql_charset="utf8mb4",
)
@@ -67,6 +84,7 @@ cards = Table(
Column("noticeStartDate", TIMESTAMP, server_default="2018-01-01 00:00:00.0"),
Column("noticeEndDate", TIMESTAMP, server_default="2038-01-01 00:00:00.0"),
Column("enabled", Boolean, server_default="1"),
Column("opt", ForeignKey("cm_static_opts.id", ondelete="SET NULL", onupdate="cascade")),
UniqueConstraint("version", "cardId", "cardName", name="mai2_static_cards_uk"),
mysql_charset="utf8mb4",
)