58 lines
1.8 KiB
Python
58 lines
1.8 KiB
Python
from abc import ABC
|
|
import log
|
|
class Business(ABC):
|
|
def __init__(self,id,production,balance) -> None:
|
|
"""production (dict): {
|
|
name: 'Gem',
|
|
amount: 4,
|
|
craft: {
|
|
'Raw_Gem': 4,
|
|
'Tool_Gem': 0.2,
|
|
}
|
|
}
|
|
balance (int): Starting Balance
|
|
"""
|
|
self.id=id
|
|
self.production=production
|
|
self.balance_history=[balance]
|
|
self.balance=balance
|
|
#Setup Inventory
|
|
self.inventory={production["name"]: 0}
|
|
for l in production["prod"]:
|
|
for k,v in l.items():
|
|
self.inventory[k]=0
|
|
pass
|
|
|
|
def tick(self,step):
|
|
self.tick_business_decisions(step)
|
|
|
|
def tick_business_decisions(self,step):
|
|
assert "no business decision method has been created"
|
|
pass
|
|
|
|
def tick_episode(self,episode_count):
|
|
"""
|
|
Call for resetting for the next episode
|
|
"""
|
|
self.balance_history.append(self.balance)
|
|
self.tick_business_episode(episode_count)
|
|
|
|
|
|
def tick_business_episode(self,episode_count):
|
|
"""
|
|
Call for resetting for the next episode
|
|
"""
|
|
assert "no business episode tick method has been created"
|
|
|
|
def close_business(self):
|
|
assert "close_business has not been provided"
|
|
|
|
def log(self,episode,episode_length,step):
|
|
data={}
|
|
data["id"]=self.id
|
|
data["episode"]=episode
|
|
data["step"]=step
|
|
data["tstep"]=step+episode*episode_length
|
|
data["production"]=self.production["name"]
|
|
data["balance"]=self.balance
|
|
log.BUSINESSData.append(data) |