Source code for jsktoolbox.edmctool.data

# -*- coding: utf-8 -*-
"""
Author:  Jacek 'Szumak' Kotlarski --<szumak@virthost.pl>
Created: 2024-10-10

Purpose: Data container classes.
"""

from typing import Union, Optional

from ..attribtool import ReadOnlyClass
from ..basetool import BData
from .stars import StarsSystem


class _Keys(object, metaclass=ReadOnlyClass):
    """Internal Keys container class."""

    CMDR: str = "__cmdr__"
    JUMP_RANGE: str = "__jump_range__"
    JUMP_SYSTEM: str = "__jump_system__"
    PLUGIN_NAME: str = "__plugin_name__"
    SHUTDOWN: str = "__shutdown__"
    STARS_SYSTEM: str = "__stars_system__"
    VERSION: str = "__version__"


[docs] class RscanData(BData): """Data container for username and current system."""
[docs] def __init__(self) -> None: """Initialize dataset.""" self._set_data( key=_Keys.CMDR, set_default_type=Optional[str], value=None, ) self._set_data( key=_Keys.PLUGIN_NAME, set_default_type=Optional[str], value=None, ) self._set_data( key=_Keys.VERSION, set_default_type=Optional[str], value=None, ) self._set_data( key=_Keys.JUMP_RANGE, set_default_type=float, value=1.0, ) self._set_data( key=_Keys.JUMP_SYSTEM, set_default_type=StarsSystem, value=StarsSystem() ) self._set_data( key=_Keys.STARS_SYSTEM, set_default_type=StarsSystem, value=StarsSystem(), ) self._set_data( key=_Keys.SHUTDOWN, set_default_type=bool, value=False, )
[docs] def __repr__(self) -> str: """Return class dump.""" return ( f"{self._c_name}(cmdr='{self.cmdr}', " f"plugin_name='{self.plugin_name}', " f"version='{self.version}', " f"jump_range={self.jump_range}, " f"{self.stars_system})" )
@property def jump_system(self) -> StarsSystem: """Return the jump destination StarsSystem object. ### Returns: StarsSystem - The jump target system instance. """ return self._get_data(key=_Keys.JUMP_SYSTEM) # type: ignore @jump_system.setter def jump_system(self, value: Optional[StarsSystem]) -> None: """Assign the jump destination system. ### Arguments: * value: Optional[StarsSystem] - Jump target system or None to reset. """ if value is None: self._set_data(key=_Keys.JUMP_SYSTEM, value=StarsSystem()) return self._set_data( key=_Keys.JUMP_SYSTEM, value=value, ) @property def stars_system(self) -> StarsSystem: """Return the current StarsSystem object. ### Returns: StarsSystem - The current system instance. """ return self._get_data(key=_Keys.STARS_SYSTEM) # type: ignore @stars_system.setter def stars_system(self, value: Optional[StarsSystem]) -> None: """Assign the current stars system. ### Arguments: * value: Optional[StarsSystem] - Current system or None to reset. """ if value is None: self._set_data(key=_Keys.STARS_SYSTEM, value=StarsSystem()) return self._set_data( key=_Keys.STARS_SYSTEM, value=value, ) @property def jump_range(self) -> float: """Return the ship's maximum jump range. ### Returns: float - Jump range value in light years. """ return self._get_data(key=_Keys.JUMP_RANGE) # type: ignore @jump_range.setter def jump_range(self, value: Union[str, int, float]) -> None: """Assign the ship's jump range. ### Arguments: * value: Union[str, int, float] - Jump range to set (convertible to float). """ if value is not None and isinstance(value, (str, int, float)): try: self._set_data( key=_Keys.JUMP_RANGE, value=float(value), ) except Exception: pass @property def plugin_name(self) -> str: """Return the plugin name. ### Returns: str - Name of the EDMC plugin. """ return self._get_data(key=_Keys.PLUGIN_NAME) # type: ignore @plugin_name.setter def plugin_name(self, value: Optional[str]) -> None: """Assign the plugin name. ### Arguments: * value: Optional[str] - Plugin name string. """ if value is not None and isinstance(value, str): self._set_data(key=_Keys.PLUGIN_NAME, value=value) @property def version(self) -> str: """Return the plugin version. ### Returns: str - Version string of the plugin. """ return self._get_data( key=_Keys.VERSION, ) # type: ignore @version.setter def version(self, value: Optional[str]) -> None: """Assign the plugin version. ### Arguments: * value: Optional[str] - Version string. """ if value is not None and isinstance(value, str): self._set_data( key=_Keys.VERSION, value=value, ) @property def cmdr(self) -> str: """Return the commander name. ### Returns: str - Current commander name. """ return self._get_data( key=_Keys.CMDR, ) # type: ignore @cmdr.setter def cmdr(self, value: Optional[str]) -> None: """Assign the commander name. ### Arguments: * value: Optional[str] - Commander name string. """ if value is not None and value != self.cmdr: self._set_data(key=_Keys.CMDR, value=value) @property def shutting_down(self) -> bool: """Return the shutting down flag status. ### Returns: bool - True if the plugin is shutting down. """ return self._get_data( key=_Keys.SHUTDOWN, ) # type: ignore @shutting_down.setter def shutting_down(self, value: bool) -> None: """Assign the shutting down flag. ### Arguments: * value: bool - Shutdown flag status. """ self._set_data( key=_Keys.SHUTDOWN, value=value, )
# #[EOF]#######################################################################