199 lines
7.3 KiB
Python
199 lines
7.3 KiB
Python
# vim: set fileencoding=utf-8
|
|
from typing import Any, Dict, Tuple
|
|
|
|
from bemani.backend.popn.base import PopnMusicBase
|
|
from bemani.backend.popn.common import PopnMusicModernBase
|
|
from bemani.backend.popn.eclale import PopnMusicEclale
|
|
from bemani.common import VersionConstants
|
|
|
|
|
|
class PopnMusicUsaNeko(PopnMusicModernBase):
|
|
|
|
name: str = "Pop'n Music うさぎと猫と少年の夢"
|
|
version: int = VersionConstants.POPN_MUSIC_USANEKO
|
|
|
|
# Biggest ID in the music DB
|
|
GAME_MAX_MUSIC_ID: int = 1704
|
|
|
|
# Biggest deco part ID in the game
|
|
GAME_MAX_DECO_ID: int = 97
|
|
|
|
# Item limits are as follows:
|
|
# 0: 1704 - ID is the music ID that the player purchased/unlocked.
|
|
# 1: 2201
|
|
# 2: 3
|
|
# 3: 97 - ID points at a character part that can be purchased on the character screen.
|
|
# 4: 1
|
|
# 5: 1
|
|
# 6: 60
|
|
|
|
def previous_version(self) -> PopnMusicBase:
|
|
return PopnMusicEclale(self.data, self.config, self.model)
|
|
|
|
@classmethod
|
|
def get_settings(cls) -> Dict[str, Any]:
|
|
"""
|
|
Return all of our front-end modifiably settings.
|
|
"""
|
|
return {
|
|
'ints': [
|
|
{
|
|
'name': 'Music Open Phase',
|
|
'tip': 'Default music phase for all players.',
|
|
'category': 'game_config',
|
|
'setting': 'music_phase',
|
|
'values': {
|
|
0: 'No music unlocks',
|
|
1: 'Phase 1',
|
|
2: 'Phase 2',
|
|
3: 'Phase 3',
|
|
4: 'Phase 4',
|
|
5: 'Phase 5',
|
|
6: 'Phase 6',
|
|
7: 'Phase 7',
|
|
8: 'Phase 8',
|
|
9: 'Phase 9',
|
|
10: 'Phase 10',
|
|
11: 'Phase MAX',
|
|
}
|
|
},
|
|
{
|
|
'name': 'NAVI-Kun Event Phase',
|
|
'tip': 'NAVI-Kun event phase for all players.',
|
|
'category': 'game_config',
|
|
'setting': 'navikun_phase',
|
|
'values': {
|
|
0: 'Phase 1',
|
|
1: 'Phase 2',
|
|
2: 'Phase 3',
|
|
3: 'Phase 4',
|
|
4: 'Phase 5',
|
|
5: 'Phase 6',
|
|
6: 'Phase 7',
|
|
7: 'Phase 8',
|
|
8: 'Phase 9',
|
|
9: 'Phase 10',
|
|
10: 'Phase 11',
|
|
11: 'Phase 12',
|
|
12: 'Phase 13',
|
|
13: 'Phase 14',
|
|
14: 'Phase 15',
|
|
15: 'Phase MAX',
|
|
},
|
|
},
|
|
{
|
|
# For festive times, it's possible to change the welcome greeting. I'm not sure why you would want to change this, but now you can.
|
|
'name': 'Holiday Greeting',
|
|
'tip': 'Changes the payment selection confirmation sound.',
|
|
'category': 'game_config',
|
|
'setting': 'holiday_greeting',
|
|
'values': {
|
|
0: 'Okay!',
|
|
1: 'Merry Christmas!',
|
|
2: 'Happy New Year!',
|
|
}
|
|
},
|
|
{
|
|
'name': 'Active Event',
|
|
'tip': 'Active event for all players.',
|
|
'category': 'game_config',
|
|
'setting': 'active_event',
|
|
'values': {
|
|
0: 'No event',
|
|
1: 'NAVI-Kun event',
|
|
2: 'Daily Mission event',
|
|
},
|
|
},
|
|
],
|
|
'bools': [
|
|
# We don't currently support lobbies or anything, so this is commented out until
|
|
# somebody gets around to implementing it.
|
|
# {
|
|
# 'name': 'Net Taisen',
|
|
# 'tip': 'Enable Net Taisen, including win/loss display on song select',
|
|
# 'category': 'game_config',
|
|
# 'setting': 'enable_net_taisen',
|
|
# },
|
|
{
|
|
'name': 'Force Song Unlock',
|
|
'tip': 'Force unlock all songs.',
|
|
'category': 'game_config',
|
|
'setting': 'force_unlock_songs',
|
|
},
|
|
],
|
|
}
|
|
|
|
def get_common_config(self) -> Tuple[Dict[int, int], bool]:
|
|
game_config = self.get_game_config()
|
|
music_phase = game_config.get_int('music_phase')
|
|
holiday_greeting = game_config.get_int('holiday_greeting')
|
|
active_event = game_config.get_int('active_event')
|
|
navikun_phase = game_config.get_int('navikun_phase')
|
|
enable_net_taisen = False # game_config.get_bool('enable_net_taisen')
|
|
|
|
navikun_enabled = active_event == 1
|
|
daily_mission_enabled = active_event == 2
|
|
|
|
# Event phases
|
|
return (
|
|
{
|
|
# Default song phase availability (0-11)
|
|
# The following songs are unlocked when the phase is at or above the number specified:
|
|
# 1 - 1589, 1590, 1591
|
|
# 2 - 1594, 1595
|
|
# 3 - 1596, 1597
|
|
# 4 - 1593
|
|
# 5 - 1602
|
|
# 6 - 1604
|
|
# 7 - 1629, 1630, 1631, 1633, 1641, 1642, 1643, 1644, 1645, 1646, 1647
|
|
# 8 - 1632
|
|
# 9 - 1651
|
|
# 10 - 1679, 1680, 1681
|
|
# 11 - 1669, 1670, 1669, 1670
|
|
0: music_phase,
|
|
# Unknown event (0-2)
|
|
1: 2,
|
|
# Holiday Greeting (0-2)
|
|
2: holiday_greeting,
|
|
# Unknown event (0-4)
|
|
3: 4,
|
|
# Unknown event (0-1)
|
|
4: 1,
|
|
# Enable Net Taisen, including win/loss display on song select (0-1)
|
|
5: 1 if enable_net_taisen else 0,
|
|
# Enable NAVI-kun shunkyoku toujou, allows song 1608 to be unlocked (0-1)
|
|
6: 1,
|
|
# Unknown event (0-1)
|
|
7: 1,
|
|
# Unknown event (0-2)
|
|
8: 2,
|
|
# Daily Mission (0-2)
|
|
9: 2 if daily_mission_enabled else 0,
|
|
# NAVI-kun Song phase availability (0-15)
|
|
# The following songs are unlocked when the phase is at or above the number specified:
|
|
# 1 - 1553
|
|
# 2 - 1577, 1576, 1569
|
|
# 3 - 1575, 1557
|
|
# 4 - 1567
|
|
# 5 - 1587, 1588, 1585
|
|
# 6 - 1586
|
|
# 7 - 1601, 1600, 1599
|
|
# 8 - 1603
|
|
# 9 - 1606, 1607, 1605
|
|
# 10 - 1610, 1611, 1612
|
|
# 11 - 1616, 1613, 1614, 1615
|
|
# 12 - 1619, 1618, 1620, 1617
|
|
# 13 - 1624, 1621, 1623, 1622
|
|
# 14 - 1627, 1626, 1625
|
|
# 15 - 1628
|
|
10: navikun_phase,
|
|
# Unknown event (0-1)
|
|
11: 1,
|
|
# Unknown event (0-2)
|
|
12: 2,
|
|
# Enable Pop'n Peace preview song (1703) (0-1)
|
|
13: 1,
|
|
},
|
|
navikun_enabled,
|
|
)
|