store fixes and probe role
This commit is contained in:
@@ -14,6 +14,9 @@ class Reference:
|
||||
|
||||
def resolve(self):
|
||||
return self.store.get(self.typ, self.symbol)
|
||||
|
||||
def f(self, detail):
|
||||
return f'{self.symbol}.{self.typ.ext()}'
|
||||
|
||||
def __repr__(self):
|
||||
return f'*REF*{self.symbol}.{self.typ.ext()}'
|
||||
@@ -46,6 +49,9 @@ class Base:
|
||||
def define(self):
|
||||
pass
|
||||
|
||||
def created(self):
|
||||
pass
|
||||
|
||||
def __hash__(self):
|
||||
return hash((str(type(self)), self.symbol))
|
||||
|
||||
@@ -84,12 +90,16 @@ class Base:
|
||||
|
||||
def __setattr__(self, name, value):
|
||||
if not name.startswith('_') and not self._disable_dirty:
|
||||
self.store.dirty(self)
|
||||
self.dirty()
|
||||
if issubclass(type(value), Base):
|
||||
value = Reference.create(value)
|
||||
super().__setattr__(name, value)
|
||||
|
||||
def __getattribute__(self, nm):
|
||||
if nm == 'system':
|
||||
return self.get_system()
|
||||
if nm == 'waypoint':
|
||||
return self.get_waypoint()
|
||||
val = super().__getattribute__(nm)
|
||||
if type(val) == Reference:
|
||||
val = val.resolve()
|
||||
|
||||
@@ -5,7 +5,6 @@ from dataclasses import field
|
||||
class Jumpgate(Base):
|
||||
def define(self):
|
||||
self.connections: list = []
|
||||
self.system = self.get_system()
|
||||
|
||||
def update(self, d):
|
||||
getter = self.store.getter(Waypoint, create=True)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
from .base import Base
|
||||
from .base import Base, Reference
|
||||
from time import time
|
||||
from nullptr.util import *
|
||||
from dataclasses import field, dataclass
|
||||
@@ -32,12 +32,9 @@ class Marketplace(Base):
|
||||
self.exchange:list = []
|
||||
self.prices:dict = {}
|
||||
self.last_prices:int = 0
|
||||
self.set_waypoint()
|
||||
self.system = self.get_system()
|
||||
|
||||
def set_waypoint(self):
|
||||
waypoint = self.store.get(Waypoint, self.symbol, create=True)
|
||||
self.waypoint = waypoint
|
||||
def get_waypoint(self):
|
||||
return self.store.get('Waypoint', self.symbol, create=True)
|
||||
|
||||
def is_fuel(self):
|
||||
return self.imports + self.exports + self.exchange == ['FUEL']
|
||||
@@ -51,7 +48,7 @@ class Marketplace(Base):
|
||||
e = self.prices[symbol] = MarketEntry()
|
||||
buy = mg(g, 'purchasePrice')
|
||||
sell = mg(g, 'sellPrice')
|
||||
volume = mg(g, 'tradeVolumes')
|
||||
volume = mg(g, 'tradeVolume')
|
||||
supply = SUPPLY.index(mg(g, 'supply'))
|
||||
activity = ACTIVITY.index(sg(g, 'activity','STRONG'))
|
||||
e.add(buy, sell, volume, supply, activity)
|
||||
@@ -68,12 +65,12 @@ class Marketplace(Base):
|
||||
def buy_price(self, resource):
|
||||
if resource not in self.prices:
|
||||
return None
|
||||
return self.prices[resource]['buy']
|
||||
return self.prices[resource].buy
|
||||
|
||||
def volume(self, resource):
|
||||
if resource not in self.prices:
|
||||
return None
|
||||
return self.prices[resource]['volume']
|
||||
return self.prices[resource].volume
|
||||
|
||||
def sellable_items(self, resources):
|
||||
return [r for r in resources if r in self.prices]
|
||||
|
||||
@@ -28,7 +28,7 @@ class Survey(Base):
|
||||
def api_dict(self):
|
||||
return {
|
||||
'signature': self.symbol,
|
||||
'symbol': self.waypoint(),
|
||||
'symbol': self.waypoint,
|
||||
'deposits': [{'symbol': d} for d in self.deposits],
|
||||
'expiration': self.expires_str,
|
||||
'size': size_names[self.size]
|
||||
|
||||
@@ -12,7 +12,6 @@ class Waypoint(Base):
|
||||
self.traits:list = []
|
||||
self.faction:str = ''
|
||||
self.is_under_construction:bool = False
|
||||
self.system = self.get_system()
|
||||
self.uncharted = True
|
||||
|
||||
|
||||
@@ -24,6 +23,9 @@ class Waypoint(Base):
|
||||
self.seta('is_under_construction', d, 'isUnderConstruction')
|
||||
self.setlst('traits', d, 'traits', 'symbol')
|
||||
self.uncharted = 'UNCHARTED' in self.traits
|
||||
|
||||
def created(self):
|
||||
self.get_system()
|
||||
|
||||
def distance(self, other):
|
||||
return int(sqrt((self.x - other.x) ** 2 + (self.y - other.y) ** 2))
|
||||
|
||||
Reference in New Issue
Block a user