trade routes instead of resources

This commit is contained in:
Richard
2024-01-15 19:39:08 +01:00
parent 7d92a45d12
commit 560ac056ff
7 changed files with 89 additions and 41 deletions

View File

@@ -61,6 +61,8 @@ class Mission:
def rst(self, typ, nm):
symbol = self.st(nm)
if symbol is None:
return None
return self.store.get(typ, symbol)
def st(self, nm):
@@ -186,21 +188,6 @@ class BaseMission(Mission):
else:
return 'more'
def step_load(self):
credits = self.api.agent.credits
cargo_space = self.ship.cargo_capacity - self.ship.cargo_units
resource = self.st('resource')
loc = self.ship.location
market = self.store.get('Marketplace', loc.symbol)
price = market.buy_price(resource)
volume = market.volume(resource)
affordable = credits // price
amount = min(cargo_space, affordable)
while amount > 0:
amt = min(amount, volume)
self.api.buy(self.ship, resource, amt)
amount -= amt
def step_travel(self):
traject = self.st('traject')
if traject is None or traject == []:

View File

@@ -6,14 +6,29 @@ class TradeMission(BaseMission):
def start_state(self):
return 'travel-to'
def step_load(self):
credits = self.api.agent.credits
cargo_space = self.ship.cargo_capacity - self.ship.cargo_units
smkt = self.store.get('Marketplace', self.st('site'))
dmkt = self.store.get('Marketplace', self.st('dest'))
resource = self.analyzer.find_deal(smkt, dmkt)
if resource is None:
return 'done'
price = smkt.buy_price(resource)
volume = smkt.volume(resource)
affordable = credits // price
print(cargo_space, affordable, volume)
amount = min(cargo_space, affordable, volume)
if amount == 0:
return 'done'
self.api.buy(self.ship, resource, amount)
return 'done' if amount == cargo_space else 'more'
@classmethod
def params(cls):
return {
'site': MissionParam(Waypoint, True),
'resource': MissionParam(str, True),
'dest': MissionParam(Waypoint, True),
'delivery': MissionParam(str, True, 'deliver'),
'contract': MissionParam(Contract, False)
}
def steps(self):
@@ -21,7 +36,10 @@ class TradeMission(BaseMission):
**self.travel_steps('to', 'site', 'dock'),
'dock': (self.step_dock, 'market-pre'),
'market-pre': (self.step_market, 'load'),
'load': (self.step_load, 'market-post'),
'load': (self.step_load, {
'more': 'market-pre',
'done': 'market-post'
}),
'market-post': (self.step_market, 'travel-back'),
**self.travel_steps('back', 'dest', 'dock-dest'),
'dock-dest': (self.step_dock, 'unload'),