Update commander.py, Dockerfile and twenty-five other files

This commit is contained in:
Richard Bronkhorst
2023-06-11 20:51:03 +02:00
parent 042b931133
commit 1c46d25081
18 changed files with 209 additions and 75 deletions

View File

21
nullptr/models/agent.py Normal file
View 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
View 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

View 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
View 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
View 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()}'

View 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]}'