@@ -18,7 +18,7 @@ import openfl.Assets;
1818 * ...
1919 * @author
2020 */
21- class BazaarBot
21+ class Market
2222{
2323 /** Logs information about all economic activity in this market**/
2424 public var history : History ;
@@ -33,11 +33,16 @@ class BazaarBot
3333 _mapAgents = new Map <String , AgentData >();
3434 }
3535
36- public function init (data : Dynamic , getLogic : String -> Logic ): Void
36+ public function init (data : MarketData ): Void
3737 {
38- fromJSON (data , getLogic );
38+ fromData (data );
3939 }
4040
41+ /* public function init(data:Dynamic, getLogic:String->Logic):Void
42+ {
43+ fromJSON(data, getLogic);
44+ }*/
45+
4146 public function numTypesOfGood (): Int
4247 {
4348 return _goodTypes .length ;
@@ -240,86 +245,10 @@ class BazaarBot
240245 private var _mapAgentLogic : Map <String , Logic >;
241246 private var _mapGoods : Map <String , Good >;
242247
243- private function fromData (data : BazaarBotData )
244- {
245- /*
246- var list:Array<Good> = data.goods;
247- for (g in list)
248- {
249- _goodTypes.push(g.id);
250- _mapGoods.set(g.id, new Good(g.id, g.size));
251-
252- history.register(g.id);
253- history.prices.add(g.id, 1.0); //start the bidding at $1!
254- history.asks.add(g.id, 1.0); //start history charts with 1 fake buy/sell bid
255- history.bids.add(g.id, 1.0);
256- history.trades.add(g.id, 1.0);
257-
258- _book.register(g.id);
259- }
260-
261- var tempAgents:Array<AgentClass> = data.agents;
262- for (a in tempAgents)
263- {
264- //a.inventory.size
265- for (key in _mapGoods.keys())
266- {
267- var g = _mapGoods.get(key);
268- a.
269- }
270- }
271-
272-
273- //Create agent classes
274- var temp_agents:Array<Dynamic> = data.agents;
275- _mapAgents = new Map<String, AgentClass>();
276- for (a in temp_agents)
277- {
278- a.inventory.size = { };
279- for (key in _mapGoods.keys())
280- {
281- var c:Good = _mapGoods.get(key);
282- Reflect.setField(a.inventory.size, c.id, c.size);
283- }
284- var ac:AgentClass = new AgentClass(a);
285- _mapAgents.set(ac.id, ac);
286-
287- history.profit.register(ac.id);
288- }
289-
290- //Make the agent list
291- _agents = new Array<Agent>();
292-
293- //Get start conditions
294- var start_conditions:Dynamic = data.start_conditions;
295- var starts:Array<Dynamic> = Reflect.fields(start_conditions.agents);
296-
297- var agent_index:Int = 0;
298- //Make given number of each agent type
299-
300- for (class_str in starts)
301- {
302- var val:Int = Reflect.field(start_conditions.agents, class_str);
303- var agent_class = _mapAgents.get(class_str);
304- var inv:Inventory = agent_class.getStartInventory();
305- var money:Float = agent_class.money;
306-
307- for (i in 0...val)
308- {
309- var a:Agent = new Agent(agent_index, class_str, inv.copy(), money);
310- a.init(this);
311- _agents.push(a);
312- agent_index++;
313- }
314- }
315- */
316- }
317-
318- private function fromJSON (data : Dynamic , getLogic : String -> Logic ): Void
248+ private function fromData (data : MarketData )
319249 {
320250 // Create commodity index
321- var list : Array <Dynamic > = data .commodities ;
322- for (g in list )
251+ for (g in data .goods )
323252 {
324253 _goodTypes .push (g .id );
325254 _mapGoods .set (g .id , new Good (g .id , g .size ));
@@ -333,47 +262,26 @@ class BazaarBot
333262 _book .register (g .id );
334263 }
335264
336- // Create agent classes
337- var temp_agents : Array <Dynamic > = data .agents ;
338265 _mapAgents = new Map <String , AgentData >();
339266
340- for (a in temp_agents )
267+ for (aData in data . agentTypes )
341268 {
342- a .inventory .size = { };
343- for (key in _mapGoods .keys ())
344- {
345- var c : Good = _mapGoods .get (key );
346- Reflect .setField (a .inventory .size , c .id , c .size );
347- }
348- var agentData : AgentData = Agent .agentDataFromJSON (a , getLogic );
349- _mapAgents .set (agentData .className , agentData );
350-
351- history .profit .register (agentData .className );
269+ _mapAgents .set (aData .className , aData );
270+ history .profit .register (aData .className );
352271 }
353272
354273 // Make the agent list
355- _agents = new Array < Agent >() ;
274+ _agents = [] ;
356275
357- // Get start conditions
358- var start_conditions : Dynamic = data .start_conditions ;
359- var starts : Array <Dynamic > = Reflect .fields (start_conditions .agents );
360-
361- var agentIndex : Int = 0 ;
362- // Make given number of each agent type
363-
364- for (class_str in starts )
276+ var agentIndex = 0 ;
277+ for (agent in data .agents )
365278 {
366- var val : Int = Reflect .field (start_conditions .agents , class_str );
367- var agentData = _mapAgents .get (class_str );
368-
369- for (i in 0 ... val )
370- {
371- var a : Agent = new AgentHScript (agentIndex , agentData );
372- a .init (this );
373- _agents .push (a );
374- agentIndex ++ ;
375- }
279+ agent .id = agentIndex ;
280+ agent .init (this );
281+ _agents .push (agent );
282+ agentIndex ++ ;
376283 }
284+
377285 }
378286
379287 private function getAgentClassThatMakesMost (good : String ): String
@@ -585,6 +493,8 @@ class BazaarBot
585493 var list : Array <Float > = null ;
586494 var avg_profit : Float = 0 ;
587495
496+ trace (" _agents = " + _agents );
497+
588498 for (i in 0 ... _agents .length )
589499 {
590500 var a : Agent = _agents [i ]; // get current agent
@@ -650,10 +560,4 @@ class BazaarBot
650560 buyer .money - = amount ;
651561 }
652562
653- }
654-
655- typedef BazaarBotData = {
656-
657- goods : Array <Good >
658-
659563}
0 commit comments