Module SimEconomica.Factories
Expand source code
from Actor import Actor
from JobPicker import BaseJobPicker, RandomJobPicker
from RecipePicker import BaseRecipePicker, RandomRecipePicker
from Order import Order
import Settings as SETTINGS
from random import randrange
class BaseFactory(object):
def __init__(self, prototypeConstructor: object, isCountable: bool = True):
self.mPrototypeConstructor = prototypeConstructor
self.bIsCountable = True
self.mCurrentID = 0
def CreateNew(self) -> object:
newObject = self.mPrototypeConstructor()
if (self.bIsCountable):
newObject.ID = self.mCurrentID
return newObject
class ActorFactory(object):
def __init__(self, jobPicker: BaseJobPicker = RandomJobPicker(), recipePicker: BaseRecipePicker = RandomRecipePicker(), rangeCapital: range = range(100, 1000, 10)):
self.kJobPicker = jobPicker
self.kRecipePicker = recipePicker
self.kRangeCapital = rangeCapital
self.mCurrentID = 0
def CreateNew(self) -> Actor:
"""
Create a new actor by picking a job using current JobPicker system, and recipe using RecipePicker system. Actor ID is autoincrementing.
"""
idJob = self.kJobPicker.PickJob()
recipe = self.kRecipePicker.PickRecipe(jobID=idJob)
newActor = Actor(self.mCurrentID, idJob, randrange(self.kRangeCapital.start, self.kRangeCapital.stop), recipe)
self.mCurrentID += 1
return newActor
def Redraw(self, actor: Actor) -> Actor:
"""
Redraw an actor. Same logic as CreateNew except it takes an already existing actor as input and preserves its ID. To be used after an actor's bankruptcy.
"""
idJob = self.kJobPicker.PickJob()
recipe = self.kRecipePicker.PickRecipe(JobID=idJob)
return Actor(actor.mCurrentID, idJob, randrange(self.kRangeCapital.start, self.kRangeCapital.stop), recipe)
Classes
class ActorFactory (jobPicker: JobPicker.BaseJobPicker = <JobPicker.RandomJobPicker object>, recipePicker: RecipePicker.BaseRecipePicker = <RecipePicker.RandomRecipePicker object>, rangeCapital: range = range(100, 1000, 10))
-
Expand source code
class ActorFactory(object): def __init__(self, jobPicker: BaseJobPicker = RandomJobPicker(), recipePicker: BaseRecipePicker = RandomRecipePicker(), rangeCapital: range = range(100, 1000, 10)): self.kJobPicker = jobPicker self.kRecipePicker = recipePicker self.kRangeCapital = rangeCapital self.mCurrentID = 0 def CreateNew(self) -> Actor: """ Create a new actor by picking a job using current JobPicker system, and recipe using RecipePicker system. Actor ID is autoincrementing. """ idJob = self.kJobPicker.PickJob() recipe = self.kRecipePicker.PickRecipe(jobID=idJob) newActor = Actor(self.mCurrentID, idJob, randrange(self.kRangeCapital.start, self.kRangeCapital.stop), recipe) self.mCurrentID += 1 return newActor def Redraw(self, actor: Actor) -> Actor: """ Redraw an actor. Same logic as CreateNew except it takes an already existing actor as input and preserves its ID. To be used after an actor's bankruptcy. """ idJob = self.kJobPicker.PickJob() recipe = self.kRecipePicker.PickRecipe(JobID=idJob) return Actor(actor.mCurrentID, idJob, randrange(self.kRangeCapital.start, self.kRangeCapital.stop), recipe)
Methods
def CreateNew(self) ‑> Actor.Actor
-
Create a new actor by picking a job using current JobPicker system, and recipe using RecipePicker system. Actor ID is autoincrementing.
Expand source code
def CreateNew(self) -> Actor: """ Create a new actor by picking a job using current JobPicker system, and recipe using RecipePicker system. Actor ID is autoincrementing. """ idJob = self.kJobPicker.PickJob() recipe = self.kRecipePicker.PickRecipe(jobID=idJob) newActor = Actor(self.mCurrentID, idJob, randrange(self.kRangeCapital.start, self.kRangeCapital.stop), recipe) self.mCurrentID += 1 return newActor
def Redraw(self, actor: Actor.Actor) ‑> Actor.Actor
-
Redraw an actor. Same logic as CreateNew except it takes an already existing actor as input and preserves its ID. To be used after an actor's bankruptcy.
Expand source code
def Redraw(self, actor: Actor) -> Actor: """ Redraw an actor. Same logic as CreateNew except it takes an already existing actor as input and preserves its ID. To be used after an actor's bankruptcy. """ idJob = self.kJobPicker.PickJob() recipe = self.kRecipePicker.PickRecipe(JobID=idJob) return Actor(actor.mCurrentID, idJob, randrange(self.kRangeCapital.start, self.kRangeCapital.stop), recipe)
class BaseFactory (prototypeConstructor: object, isCountable: bool = True)
-
Expand source code
class BaseFactory(object): def __init__(self, prototypeConstructor: object, isCountable: bool = True): self.mPrototypeConstructor = prototypeConstructor self.bIsCountable = True self.mCurrentID = 0 def CreateNew(self) -> object: newObject = self.mPrototypeConstructor() if (self.bIsCountable): newObject.ID = self.mCurrentID return newObject
Methods
def CreateNew(self) ‑> object
-
Expand source code
def CreateNew(self) -> object: newObject = self.mPrototypeConstructor() if (self.bIsCountable): newObject.ID = self.mCurrentID return newObject