Update commander.py, Dockerfile and twenty-five other files
This commit is contained in:
0
nullptr/models/__init__.py
Normal file
0
nullptr/models/__init__.py
Normal file
21
nullptr/models/agent.py
Normal file
21
nullptr/models/agent.py
Normal file
@@ -0,0 +1,21 @@
|
||||
from .base import Base
|
||||
|
||||
class Agent(Base):
|
||||
token: str = None
|
||||
credits: int = 0
|
||||
|
||||
def update(self, d):
|
||||
self.seta('credits', d)
|
||||
|
||||
def path(self):
|
||||
return f'{self.symbol}.{self.ext()}'
|
||||
|
||||
@classmethod
|
||||
def ext(self):
|
||||
return 'agt'
|
||||
|
||||
def f(self, detail=1):
|
||||
r = super().f(detail)
|
||||
if detail >2:
|
||||
r += f' c:{self.credits}'
|
||||
return r
|
||||
58
nullptr/models/base.py
Normal file
58
nullptr/models/base.py
Normal file
@@ -0,0 +1,58 @@
|
||||
from copy import deepcopy
|
||||
from dataclasses import dataclass
|
||||
from nullptr.util import sg
|
||||
@dataclass
|
||||
class Base:
|
||||
symbol: str
|
||||
dirty: bool
|
||||
|
||||
def __init__(self, symbol, store):
|
||||
self.symbol = symbol
|
||||
self.store = store
|
||||
self.dirty = True
|
||||
|
||||
def seta(self, attr, d, name=None):
|
||||
if name is None:
|
||||
name = attr
|
||||
val = sg(d, name)
|
||||
if val is not None:
|
||||
setattr(self, attr, val)
|
||||
|
||||
def setlst(self, attr, d, name, member):
|
||||
val = sg(d, name)
|
||||
if val is not None:
|
||||
lst = [sg(x, member) for x in val]
|
||||
setattr(self, attr, lst)
|
||||
|
||||
def __setattr__(self, name, value):
|
||||
if name != 'dirty':
|
||||
self.dirty = True
|
||||
super().__setattr__(name, value)
|
||||
|
||||
def update(self, d):
|
||||
pass
|
||||
|
||||
def dict(self):
|
||||
r = deepcopy(self.__dict__)
|
||||
del r['store']
|
||||
del r['dirty']
|
||||
return r
|
||||
|
||||
def path(self):
|
||||
raise NotImplementedError('path')
|
||||
|
||||
@classmethod
|
||||
def ext(self):
|
||||
raise NotImplementedError('extension')
|
||||
|
||||
def type(self):
|
||||
return self.__class__.__name__
|
||||
|
||||
def __str__(self):
|
||||
return self.f()
|
||||
|
||||
def f(self, detail=1):
|
||||
r = self.symbol
|
||||
if detail > 1:
|
||||
r += '.' + self.ext()
|
||||
return r
|
||||
21
nullptr/models/marketplace.py
Normal file
21
nullptr/models/marketplace.py
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
from .base import Base
|
||||
from typing import List
|
||||
|
||||
class Marketplace(Base):
|
||||
imports:List[str] = []
|
||||
exports:List[str] = []
|
||||
exchange:List[str] = []
|
||||
|
||||
def update(self, d):
|
||||
self.setlst('imports', d, 'imports', 'symbol')
|
||||
self.setlst('exports', d, 'exports', 'symbol')
|
||||
self.setlst('exchange', d, 'exchange', 'symbol')
|
||||
|
||||
@classmethod
|
||||
def ext(self):
|
||||
return 'mkt'
|
||||
|
||||
def path(self):
|
||||
sector, system, symbol, _ = self.symbol.split('-')
|
||||
return f'atlas/{sector}/{system[0:1]}/{system}/{symbol}.{self.ext()}'
|
||||
6
nullptr/models/sector.py
Normal file
6
nullptr/models/sector.py
Normal file
@@ -0,0 +1,6 @@
|
||||
from .base import Base
|
||||
|
||||
class Sector(Base):
|
||||
@classmethod
|
||||
def ext(self):
|
||||
return 'sct'
|
||||
21
nullptr/models/system.py
Normal file
21
nullptr/models/system.py
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
from .base import Base
|
||||
|
||||
|
||||
class System(Base):
|
||||
x:int = 0
|
||||
y:int = 0
|
||||
type:str = 'unknown'
|
||||
|
||||
def update(self, d):
|
||||
self.seta('x', d)
|
||||
self.seta('y', d)
|
||||
self.seta('type', d)
|
||||
|
||||
@classmethod
|
||||
def ext(self):
|
||||
return 'stm'
|
||||
|
||||
def path(self):
|
||||
sector, symbol = self.symbol.split('-')
|
||||
return f'atlas/{sector}/{symbol[0:1]}/{symbol}.{self.ext()}'
|
||||
30
nullptr/models/waypoint.py
Normal file
30
nullptr/models/waypoint.py
Normal file
@@ -0,0 +1,30 @@
|
||||
from .base import Base
|
||||
from nullptr.util import *
|
||||
from typing import List
|
||||
|
||||
class Waypoint(Base):
|
||||
x:int = 0
|
||||
y:int = 0
|
||||
type:str = 'unknown'
|
||||
traits:List[str]=[]
|
||||
faction:str = ''
|
||||
|
||||
def update(self, d):
|
||||
self.seta('x', d)
|
||||
self.seta('y', d)
|
||||
self.seta('type', d)
|
||||
self.seta('faction', d, 'faction.symbol')
|
||||
if 'traits' in d:
|
||||
self.traits = [mg(t, 'symbol') for t in d['traits'] ]
|
||||
|
||||
@classmethod
|
||||
def ext(self):
|
||||
return 'way'
|
||||
|
||||
def path(self):
|
||||
sector, system, symbol = self.symbol.split('-')
|
||||
return f'atlas/{sector}/{system[0:1]}/{system}/{symbol}.{self.ext()}'
|
||||
|
||||
def system(self):
|
||||
p = self.symbol.split('-')
|
||||
return f'{p[0]}-{p[1]}'
|
||||
Reference in New Issue
Block a user