1
0
Fork 0
mirror of synced 2024-05-19 12:02:54 +12:00
Rare/rare/models/launcher.py

69 lines
1.3 KiB
Python

from dataclasses import dataclass
from typing import Dict
class Actions:
undefined = 0
finished = 1
error = 2
message = 3
state_update = 4
@dataclass
class BaseModel:
action: int
app_name: str
@classmethod
def from_json(cls, data: Dict):
return cls(
action=data["action"],
app_name=data["app_name"]
)
@dataclass
class FinishedModel(BaseModel):
exit_code: int
playtime: int # seconds
@classmethod
def from_json(cls, data: Dict):
return cls(
**vars(BaseModel.from_json(data)),
exit_code=data["exit_code"],
playtime=data["playtime"],
)
@dataclass
class StateChangedModel(BaseModel):
class States:
started = 1
# for future
syncing_cloud = 2
cloud_sync_finished = 3
new_state: int
@classmethod
def from_json(cls, data: Dict):
return cls(
action=data["action"],
app_name=data["app_name"],
new_state=data["new_state"]
)
@dataclass
class ErrorModel(BaseModel):
error_string: str
@classmethod
def from_json(cls, data: Dict):
return cls(
**vars(BaseModel.from_json(data)),
error_string=data["error_string"]
)