Update api.py, commander.py and six other files
This commit is contained in:
		
							parent
							
								
									bb93950fa3
								
							
						
					
					
						commit
						b5850bcb5f
					
				@ -95,7 +95,7 @@ class Api:
 | 
			
		||||
  def jumps(self, waypoint):
 | 
			
		||||
    data = self.request('get', f'systems/{waypoint.system()}/waypoints/{waypoint}/jump-gate')
 | 
			
		||||
    symbol = str(waypoint)
 | 
			
		||||
    return self.store.update(Jumpgate, data)
 | 
			
		||||
    return self.store.update(Jumpgate, data, symbol)
 | 
			
		||||
  
 | 
			
		||||
  def list_ships(self):
 | 
			
		||||
    data = self.request('get', 'my/ships')
 | 
			
		||||
@ -110,6 +110,31 @@ class Api:
 | 
			
		||||
    if data is not None and 'contract' in data:
 | 
			
		||||
      contract = self.store.update('Contract', data['contract'])
 | 
			
		||||
      return contract
 | 
			
		||||
  
 | 
			
		||||
  def deliver(self, ship, typ, contract):
 | 
			
		||||
    units = ship.get_cargo(typ)
 | 
			
		||||
    if units == 0:
 | 
			
		||||
      print("Resource not in cargo")
 | 
			
		||||
      return {}
 | 
			
		||||
    data = {
 | 
			
		||||
      'shipSymbol': str(ship),
 | 
			
		||||
      'tradeSymbol': typ.upper(),
 | 
			
		||||
      'units': units
 | 
			
		||||
    }
 | 
			
		||||
    data = self.request('post', f'my/contracts/{contract}/deliver', data)
 | 
			
		||||
    if 'cargo' in data:
 | 
			
		||||
      ship.update(data)
 | 
			
		||||
    if 'contract' in data:
 | 
			
		||||
      contract.update(data['contract'])
 | 
			
		||||
    return contract
 | 
			
		||||
  
 | 
			
		||||
  def fulfill(self, contract):
 | 
			
		||||
    data = self.request('post', f'my/contracts/{contract}/fulfill')
 | 
			
		||||
    if 'contract' in data:
 | 
			
		||||
      contract.update(data['contract'])
 | 
			
		||||
    if 'agent' in data:
 | 
			
		||||
      self.agent.update(data['agent'])
 | 
			
		||||
    return contract
 | 
			
		||||
 
 | 
			
		||||
  def navigate(self, ship, wp):
 | 
			
		||||
    data = {'waypointSymbol': str(wp)}
 | 
			
		||||
@ -182,3 +207,27 @@ class Api:
 | 
			
		||||
    if 'agent' in data:
 | 
			
		||||
      self.agent.update(data['agent'])
 | 
			
		||||
    return data
 | 
			
		||||
  
 | 
			
		||||
  def purchase(self, typ, wp):
 | 
			
		||||
    data = {
 | 
			
		||||
      'shipType': typ,
 | 
			
		||||
      'waypointSymbol': str(wp)
 | 
			
		||||
    }
 | 
			
		||||
    data = self.request('post', 'my/ships', data)
 | 
			
		||||
    if 'agent' in data:
 | 
			
		||||
      self.agent.update(data['agent'])
 | 
			
		||||
    if 'ship' in data:
 | 
			
		||||
      ship = self.store.update('Ship', data['ship'])  
 | 
			
		||||
      return ship
 | 
			
		||||
    
 | 
			
		||||
  def jump(self, ship, system):
 | 
			
		||||
    data = {
 | 
			
		||||
      "systemSymbol": system.symbol
 | 
			
		||||
    }
 | 
			
		||||
    data = self.request('post', f'my/ships/{ship}/jump', data)
 | 
			
		||||
    if 'nav' in data:
 | 
			
		||||
      ship.update(data)
 | 
			
		||||
    return ship
 | 
			
		||||
    
 | 
			
		||||
  def shipyard(self, wp):
 | 
			
		||||
    return self.request('get', f'systems/{wp.system()}/waypoints/{wp}/shipyard')
 | 
			
		||||
 | 
			
		||||
@ -110,8 +110,12 @@ class Commander(CommandLine):
 | 
			
		||||
    waypoint = self.store.get(Waypoint, waypoint_str.upper())
 | 
			
		||||
    r = self.api.marketplace(waypoint)
 | 
			
		||||
  
 | 
			
		||||
  def do_jumps(self, waypoint_str):
 | 
			
		||||
    waypoint = self.store.get(Waypoint, waypoint_str.upper())
 | 
			
		||||
  def do_jumps(self, waypoint_str=None):
 | 
			
		||||
    if waypoint_str is None:
 | 
			
		||||
      if not self.has_ship(): return
 | 
			
		||||
      waypoint = self.ship.location()
 | 
			
		||||
    else:
 | 
			
		||||
      waypoint = self.store.get(Waypoint, waypoint_str.upper())
 | 
			
		||||
    r = self.api.jumps(waypoint)
 | 
			
		||||
    pprint(r)
 | 
			
		||||
  
 | 
			
		||||
@ -225,4 +229,23 @@ class Commander(CommandLine):
 | 
			
		||||
    if not self.has_ship(): return
 | 
			
		||||
    self.api.jettison(self.ship, resource.upper())
 | 
			
		||||
    self.do_cargo()
 | 
			
		||||
  
 | 
			
		||||
  def do_shipyard(self):
 | 
			
		||||
    if not self.has_ship(): return
 | 
			
		||||
    location = self.ship.location()
 | 
			
		||||
    pprint(self.api.shipyard(location))
 | 
			
		||||
  
 | 
			
		||||
  def do_jump(self, system_str):
 | 
			
		||||
    if not self.has_ship(): return
 | 
			
		||||
    system = self.resolve('System', system_str)
 | 
			
		||||
    self.api.jump(self.ship, system)
 | 
			
		||||
    pprint(self.ship)
 | 
			
		||||
    
 | 
			
		||||
  def do_purchase(self, ship_type):
 | 
			
		||||
    if not self.has_ship(): return
 | 
			
		||||
    location = self.ship.location()
 | 
			
		||||
    ship_type = ship_type.upper()
 | 
			
		||||
    if not ship_type.startswith('SHIP'):
 | 
			
		||||
      ship_type = 'SHIP_' + ship_type
 | 
			
		||||
    s = self.api.purchase(ship_type, location)
 | 
			
		||||
    pprint(s)
 | 
			
		||||
 | 
			
		||||
@ -25,7 +25,7 @@ class Contract(Base):
 | 
			
		||||
  
 | 
			
		||||
  def api_dict(self):
 | 
			
		||||
    return {
 | 
			
		||||
      'id': self.symbol,
 | 
			
		||||
      'id': self.symbol.lower(),
 | 
			
		||||
      'expiration': self.expires_str,
 | 
			
		||||
    }
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
@ -4,7 +4,7 @@ from dataclasses import field
 | 
			
		||||
class Jumpgate(SystemMember):
 | 
			
		||||
  range: int
 | 
			
		||||
  faction: str
 | 
			
		||||
  systems: list = field(default_factory=list)
 | 
			
		||||
  systems: list = []
 | 
			
		||||
  
 | 
			
		||||
  def update(self, d):
 | 
			
		||||
    self.setlst('systems', d, 'connectedSystems', 'symbol')
 | 
			
		||||
@ -18,3 +18,9 @@ class Jumpgate(SystemMember):
 | 
			
		||||
  def path(self):
 | 
			
		||||
    sector, system, _ = self.symbol.split('-')
 | 
			
		||||
    return f'atlas/{sector}/{system[0:1]}/{system}/{self.symbol}.{self.ext()}'
 | 
			
		||||
  
 | 
			
		||||
  def f(self, detail=1):
 | 
			
		||||
    r = self.symbol
 | 
			
		||||
    if detail > 1:
 | 
			
		||||
      r += '\n'.join(self.systems)
 | 
			
		||||
    return r
 | 
			
		||||
 | 
			
		||||
@ -5,10 +5,10 @@ from nullptr.util import *
 | 
			
		||||
from dataclasses import field
 | 
			
		||||
 | 
			
		||||
class Marketplace(SystemMember):
 | 
			
		||||
  imports:list = field(default_factory=list)
 | 
			
		||||
  exports:list = field(default_factory=list)
 | 
			
		||||
  exchange:list = field(default_factory=list)
 | 
			
		||||
  prices:dict = field(default_factory=dict)
 | 
			
		||||
  imports:list = []
 | 
			
		||||
  exports:list = []
 | 
			
		||||
  exchange:list = []
 | 
			
		||||
  prices:dict = {}
 | 
			
		||||
  last_prices:int = 0
 | 
			
		||||
  
 | 
			
		||||
  def update(self, d):
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@ from dataclasses import dataclass, field
 | 
			
		||||
 | 
			
		||||
class Ship(Base):  
 | 
			
		||||
  cargo:dict = {}
 | 
			
		||||
  mission_state:dict = field(default_factory=dict)
 | 
			
		||||
  mission_state:dict = {}
 | 
			
		||||
  status:str = ''
 | 
			
		||||
  cargo_capacity:int = 0
 | 
			
		||||
  cargo_units:int = 0
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,7 @@ class Waypoint(SystemMember):
 | 
			
		||||
  x:int = 0
 | 
			
		||||
  y:int = 0
 | 
			
		||||
  type:str = 'unknown'
 | 
			
		||||
  traits:list = field(default_factory=list)
 | 
			
		||||
  traits:list = []
 | 
			
		||||
  faction:str = ''
 | 
			
		||||
  
 | 
			
		||||
  def update(self, d):
 | 
			
		||||
 | 
			
		||||
@ -93,10 +93,11 @@ class Store:
 | 
			
		||||
        return None
 | 
			
		||||
    return self.data[typ][symbol]
 | 
			
		||||
  
 | 
			
		||||
  def update(self, typ, data):
 | 
			
		||||
  def update(self, typ, data, symbol=None):
 | 
			
		||||
    if type(typ) == str and typ in self.model_names:
 | 
			
		||||
      typ = self.model_names[typ] 
 | 
			
		||||
    symbol = mg(data, typ.identifier)
 | 
			
		||||
    if symbol is None:
 | 
			
		||||
      symbol = mg(data, typ.identifier)
 | 
			
		||||
    obj = self.get(typ, symbol, True)
 | 
			
		||||
    obj.update(data)
 | 
			
		||||
    return obj
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user