-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFinalUMLForP2.drawio
More file actions
741 lines (741 loc) · 117 KB
/
FinalUMLForP2.drawio
File metadata and controls
741 lines (741 loc) · 117 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
<mxfile host="app.diagrams.net" modified="2023-11-02T18:44:07.174Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/118.0" etag="2YLxgPHqhXQrfrrJpKcY" version="22.0.8" type="device" pages="2">
<diagram id="Yo6Zvny2ZRX3JAPKxXua" name="Page 2">
<mxGraphModel dx="2532" dy="218" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="IZyeWjeiiD0KSJfyj89O-481" value="" style="graphMlID=e0;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=diamond;startFill=0;endFill=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;fontColor=#5AA9E6;entryX=-0.008;entryY=-0.286;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="IZyeWjeiiD0KSJfyj89O-496" target="IZyeWjeiiD0KSJfyj89O-503" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-482" value="" style="graphMlID=e1;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=diamond;startFill=0;endFill=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fontColor=#5AA9E6;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="IZyeWjeiiD0KSJfyj89O-497" target="IZyeWjeiiD0KSJfyj89O-505" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-483" value="" style="graphMlID=e2;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=diamond;startFill=0;endFill=1;fontColor=#5AA9E6;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" parent="1" source="IZyeWjeiiD0KSJfyj89O-504" target="IZyeWjeiiD0KSJfyj89O-533" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1598" y="1650" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-484" value="" style="graphMlID=e3;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=diamond;startFill=0;endFill=1;exitX=0.988;exitY=-0.077;exitDx=0;exitDy=0;exitPerimeter=0;fontColor=#5AA9E6;entryX=-0.023;entryY=0.105;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="IZyeWjeiiD0KSJfyj89O-499" target="IZyeWjeiiD0KSJfyj89O-508" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1790" y="1990" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-485" value="" style="graphMlID=e4;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=diamond;startFill=0;endFill=1;exitX=0.975;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;fontColor=#5AA9E6;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="IZyeWjeiiD0KSJfyj89O-499" target="IZyeWjeiiD0KSJfyj89O-516" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-486" value="" style="graphMlID=e5;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=diamond;startFill=0;endFill=1;fontColor=#5AA9E6;exitX=1.001;exitY=-0.077;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="IZyeWjeiiD0KSJfyj89O-501" target="IZyeWjeiiD0KSJfyj89O-526" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-487" value="" style="graphMlID=e6;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=diamond;startFill=0;endFill=1;fontColor=#5AA9E6;" parent="1" source="IZyeWjeiiD0KSJfyj89O-508" target="IZyeWjeiiD0KSJfyj89O-538" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-488" value="" style="graphMlID=e7;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=none;startFill=1;endFill=1;fontColor=#5AA9E6;entryX=0;entryY=0.25;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="IZyeWjeiiD0KSJfyj89O-511" target="IZyeWjeiiD0KSJfyj89O-517" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-489" value="" style="graphMlID=e8;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=diamond;startFill=0;endFill=1;fontColor=#5AA9E6;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="IZyeWjeiiD0KSJfyj89O-503" target="IZyeWjeiiD0KSJfyj89O-532" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1660" y="1490" as="sourcePoint" />
<mxPoint x="2065" y="1553" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-490" value="" style="graphMlID=e9;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=diamond;startFill=0;endFill=1;fontColor=#5AA9E6;entryX=-0.013;entryY=0.08;entryDx=0;entryDy=0;entryPerimeter=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="IZyeWjeiiD0KSJfyj89O-532" target="IZyeWjeiiD0KSJfyj89O-545" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="2220" y="1620" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-492" value="" style="graphMlID=e11;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=diamond;startFill=0;endFill=1;fontColor=#5AA9E6;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=-0.005;entryY=0.359;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="IZyeWjeiiD0KSJfyj89O-538" target="IZyeWjeiiD0KSJfyj89O-551" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="2260" y="2190" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-494" value="" style="graphMlID=e13;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=none;startFill=1;endFill=1;fontColor=#5AA9E6;entryX=0.528;entryY=0.978;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.57;exitY=-0.037;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="IZyeWjeiiD0KSJfyj89O-504" target="IZyeWjeiiD0KSJfyj89O-503" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-495" value="" style="graphMlID=e14;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=none;startFill=1;endFill=1;fontColor=#5AA9E6;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" source="IZyeWjeiiD0KSJfyj89O-537" target="IZyeWjeiiD0KSJfyj89O-532" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="2127.6990312711996" y="1689.6614280464578" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-496" value="VirtualWorld" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=20;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;fillColor=#FFE45E;strokeColor=#FF6392;fontColor=#5AA9E6;" parent="1" vertex="1">
<mxGeometry x="680" y="1700" width="400" height="630" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-497" value="-ARGS: String[] <<static>>
-VIEW_WIDTH: int <<static>>
-VIEW_HEIGHT: int <<static>>
-TILE_WIDTH: int <<static>>
-TILE_HEIGHT: int <<static>>
-VIEW_COLS: int <<static>>
-VIEW_ROWS: int <<static>>
-IMAGE_LIST_FILE_NAME: String <<static>>
-DEFAULT_IMAGE_NAME: String <<static>>
-DEFAULT_IMAGE_COLOR: int <<static>>
-FAST_FLAG: String <<static>>
-FASTER_FLAG: String <<static>>
-FASTEST_FLAG: String <<static>>
-FAST_SCALE: double <<static>>
-FASTER_SCALE: double <<static>>
-FASTEST_SCALE: double <<static>>
-loadFile: String
-startTimeMillis: long
-timeScale: double
-imageStore: ImageStore
-world: WorldModel
-view: WorldView
-scheduler: EventScheduler" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#5AA9E6;" parent="IZyeWjeiiD0KSJfyj89O-496" vertex="1">
<mxGeometry y="20" width="400" height="340" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-498" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=#FF6392;fontColor=#5AA9E6;" parent="IZyeWjeiiD0KSJfyj89O-496" vertex="1">
<mxGeometry y="360" width="400" height="8" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-499" value="+settings(): void
+setup(): void
+draw(): void
+update(double): void
+mousePressed(): void
-mouseToPoint(): Point
+keyPressed(): void
+createDefaultBackground(ImageStore): Background <<static>>
+createImageColored(int, int, int): PImage <<static>>
+loadImages(String): void <<static>>
+loadWorld(String, ImageStore): void <<static>>
+scheduleActions(WorldModel, EventScheduler, ImageStore): void
+parseCommandLine(String[]): void 
+main(String[]): void <<static>>
+headlessMain(String[], double): void <<static>>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#5AA9E6;" parent="IZyeWjeiiD0KSJfyj89O-496" vertex="1">
<mxGeometry y="368" width="400" height="262" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-500" value="WorldModel" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" parent="1" vertex="1">
<mxGeometry x="1130" y="1180" width="280" height="540" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-501" value="-numRows: int
-numCols: int
-background: Background[][]
-occupancy: Entity[][]
-entities: Set<Entity>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" parent="IZyeWjeiiD0KSJfyj89O-500" vertex="1">
<mxGeometry y="26" width="280" height="94" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-502" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=#FF6392;fontColor=#5AA9E6;" parent="IZyeWjeiiD0KSJfyj89O-500" vertex="1">
<mxGeometry y="120" width="280" height="8" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-503" value="+getBackgroundImage()
+setBackgroundCell()
-getBackgroundCell()
+removeEntity()
-removeEntityAt()
+moveEntity()
+tryAddEntity()
-addEntity()
-setOccupancyCell()
+getOccupant()
-getOccupancyCell()
-isInBoundsAndOccupied(Point): boolean
-withinBounds(Point): boolean
+findNearest()
-nearestEntity(): <<static>>
-distanceSquared(Point, Point): int <<static>>
+log(): List<String>
+getNumRows(): int
+setNumRows(int): void
+getNumCols(): int
+setNumCols(int): void
+setBackground(): Background[][]
+setOccupancy(): Entity[][]
+setOccupancy(Entity[][]): void
+getEntities(): Set<Entity>
+setEntities(Set<Entity>): void
" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#020405;" parent="IZyeWjeiiD0KSJfyj89O-500" vertex="1">
<mxGeometry y="128" width="280" height="412" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-504" value="WorldView" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" parent="1" vertex="1">
<mxGeometry x="1120" y="1910" width="280" height="230" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-505" value="-screen: PApplet
-world: WorldModel
-tileWidth: int
-tileHeight: int
-viewport: Viewport" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" parent="IZyeWjeiiD0KSJfyj89O-504" vertex="1">
<mxGeometry y="26" width="280" height="84" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-506" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=#FF6392;fontColor=#5AA9E6;" parent="IZyeWjeiiD0KSJfyj89O-504" vertex="1">
<mxGeometry y="110" width="280" height="8" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-507" value="+drawBackground(): void
+drawEntities(): void
+drawViewport(): void
+shiftView(int, int): void
+clamp(int, int, int): int <<static>>
+getViewport(): Viewport 
" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" parent="IZyeWjeiiD0KSJfyj89O-504" vertex="1">
<mxGeometry y="118" width="280" height="112" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-508" value="EventScheduler" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" parent="1" vertex="1">
<mxGeometry x="1400" y="2290" width="280" height="200" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-509" value="-eventQueue: PriorityQueue<Event>
-pendingEvents: Map<Entity, List<Event>>
-currentTime: double" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" parent="IZyeWjeiiD0KSJfyj89O-508" vertex="1">
<mxGeometry y="26" width="280" height="64" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-510" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=#FF6392;fontColor=#5AA9E6;" parent="IZyeWjeiiD0KSJfyj89O-508" vertex="1">
<mxGeometry y="90" width="280" height="8" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-511" value="+unscheduleAllEvents(Entity): void
+updateOnTime(double): void
-removePendingEvents(Event): void
+scheduleEvent(Entity, Action, double): void
+getCurrentTime(): double" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" parent="IZyeWjeiiD0KSJfyj89O-508" vertex="1">
<mxGeometry y="98" width="280" height="102" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-513" value="ImageStore" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" parent="1" vertex="1">
<mxGeometry x="1000" y="2380" width="280" height="130" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-514" value="-images: Map<String, List<PImage>>
-defaultImages: List<PImage>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" parent="IZyeWjeiiD0KSJfyj89O-513" vertex="1">
<mxGeometry y="26" width="280" height="54" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-515" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=#FF6392;fontColor=#5AA9E6;" parent="IZyeWjeiiD0KSJfyj89O-513" vertex="1">
<mxGeometry y="80" width="280" height="8" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-516" value="+getImageList(String): List<PImage>
+getImages(): Map<String, List<PImage>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" parent="IZyeWjeiiD0KSJfyj89O-513" vertex="1">
<mxGeometry y="88" width="280" height="42" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-517" value="EventComparator" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" parent="1" vertex="1">
<mxGeometry x="1430" y="2110" width="240" height="60" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-519" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=#FF6392;fontColor=#5AA9E6;" parent="IZyeWjeiiD0KSJfyj89O-517" vertex="1">
<mxGeometry y="26" width="240" height="8" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-520" value="+compare(Event, Event): int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" parent="IZyeWjeiiD0KSJfyj89O-517" vertex="1">
<mxGeometry y="34" width="240" height="26" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-521" value="Factory" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" parent="1" vertex="1">
<mxGeometry x="1160.0000000000002" y="2580" width="480" height="410" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-522" value="-TREE_ANIMATION_MAX: double <<static>>
-TREE_ANIMATION_MIN: double <<static>>
-TREE_ACTION_MAX: double <<static>>
-TREE_ACTION_MIN: double <<static>>
-TREE_HEALTH_MAX: int <<static>>
-TREE_HEALTH_MIN: int <<static>>
-SAPLING_ACTION_ANIMATION_PERIOD: int <<static>>
-SAPLING_HEALTH_LIMIT: int <<static>>
" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" parent="IZyeWjeiiD0KSJfyj89O-521" vertex="1">
<mxGeometry y="26" width="480" height="144" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-523" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=#FF6392;fontColor=#5AA9E6;" parent="IZyeWjeiiD0KSJfyj89O-521" vertex="1">
<mxGeometry y="170" width="480" height="8" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-524" value="+createAnimationAction(Entity, int): Action <<static>>
+createActivityAction(Entity, WorldModel, ImageStore): Action <<static>>

+createHouse(String, Point, List<PImage>): Entity <<static>>
+createObstacle(String, Point, double, List<PImage>): Entity <<static>>
+createTree(String, Point, double, double, int, List<PImage>): Entity <<static>>
+createTreeWithDefaults(String, Point, List<PImage>): Entity <<static>>
-getIntFromRange(int, int): int <<static>>
-getNumFromRange(double, double): double <<static>>
+createStump(String, Point, List<PImage>): Entity <<static>>
+createSapling(String, Point, List<PImage>): E <<static>>
+createFairy(String, Point, double, double, List<PImage>): Entity <<static>>
+createPersonSearching(String, Point, double, double, int, List<PImage>): Entity <<static>>
+createPersonFull(String, Point, double, double, int, List<PImage>): Entity <<static>>
" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" parent="IZyeWjeiiD0KSJfyj89O-521" vertex="1">
<mxGeometry y="178" width="480" height="232" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-560" style="edgeStyle=none;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fontSize=12;startSize=8;endSize=8;" parent="IZyeWjeiiD0KSJfyj89O-521" source="IZyeWjeiiD0KSJfyj89O-521" target="IZyeWjeiiD0KSJfyj89O-522" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=0.205;entryY=-0.044;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="IZyeWjeiiD0KSJfyj89O-521" source="IZyeWjeiiD0KSJfyj89O-521" target="IZyeWjeiiD0KSJfyj89O-522">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-525" value="Background" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" parent="1" vertex="1">
<mxGeometry x="1490" y="1150" width="170" height="104" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-526" value="-id: String
-images: List<PImage>
" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="IZyeWjeiiD0KSJfyj89O-525" vertex="1">
<mxGeometry y="26" width="170" height="44" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-527" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="IZyeWjeiiD0KSJfyj89O-525" vertex="1">
<mxGeometry y="70" width="170" height="8" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-528" value="+getCurrentImage(): PImage" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="IZyeWjeiiD0KSJfyj89O-525" vertex="1">
<mxGeometry y="78" width="170" height="26" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-529" value="<<Interface>> Entity" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" parent="1" vertex="1">
<mxGeometry x="1540" y="1444.03" width="190" height="160" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-531" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="IZyeWjeiiD0KSJfyj89O-529" vertex="1">
<mxGeometry y="26" width="190" height="8" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-532" value="+nextImage(): void
+getCurrentImage(): PImage
+getAnimationPeriod(): double 
+log(): String
+getID() 
+getPosition()
+setPosition()

 



" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="IZyeWjeiiD0KSJfyj89O-529" vertex="1">
<mxGeometry y="34" width="190" height="126" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-533" value="Viewport" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" parent="1" vertex="1">
<mxGeometry x="840" y="1340" width="230" height="250" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-534" value="-row: int
-col: int
-numRows: int
-numCols: int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="IZyeWjeiiD0KSJfyj89O-533" vertex="1">
<mxGeometry y="26" width="230" height="74" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-535" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="IZyeWjeiiD0KSJfyj89O-533" vertex="1">
<mxGeometry y="100" width="230" height="8" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-536" value="+contains(Point): boolean
+shift(int, int): void
+worldToViewport(int, int): Point
+viewportToWorld(int, int): Point
+getRow(): int
+getCol(): int
+getNumRows(): int
+getNumCols(): int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="IZyeWjeiiD0KSJfyj89O-533" vertex="1">
<mxGeometry y="108" width="230" height="142" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-537" value="Event" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" parent="1" vertex="1">
<mxGeometry x="1750" y="1780" width="165" height="158" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-538" value="-action: Action
-time: long
-entity: Entity" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="IZyeWjeiiD0KSJfyj89O-537" vertex="1">
<mxGeometry y="26" width="165" height="64" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-539" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="IZyeWjeiiD0KSJfyj89O-537" vertex="1">
<mxGeometry y="90" width="165" height="8" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-540" value="+getTime(): double
+getAction(): Action
+getEntity(): entity" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="IZyeWjeiiD0KSJfyj89O-537" vertex="1">
<mxGeometry y="98" width="165" height="60" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-544" value="Point" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" parent="1" vertex="1">
<mxGeometry x="1510" y="1700" width="170" height="210" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-545" value="+x: int
+y: int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="IZyeWjeiiD0KSJfyj89O-544" vertex="1">
<mxGeometry y="26" width="170" height="54" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-546" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="IZyeWjeiiD0KSJfyj89O-544" vertex="1">
<mxGeometry y="80" width="170" height="8" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-547" value="+adjacent(Point): boolean
+toString(): String
+equals(): boolean
+hashCode(): int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="IZyeWjeiiD0KSJfyj89O-544" vertex="1">
<mxGeometry y="88" width="170" height="122" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-548" value="<<Interface>> Action" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" parent="1" vertex="1">
<mxGeometry x="1990" y="2050" width="220" height="60" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-550" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="IZyeWjeiiD0KSJfyj89O-548" vertex="1">
<mxGeometry y="26" width="220" height="8" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-551" value="+executeAction(EventScheduler): void " style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="IZyeWjeiiD0KSJfyj89O-548" vertex="1">
<mxGeometry y="34" width="220" height="26" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-561" value="WorldLoader" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" parent="1" vertex="1">
<mxGeometry x="1830.0000000000002" y="2760" width="440" height="760" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-562" value="+STUMP_KEY: String <<static>>
+SAPLING_KEY: String <<static>>
+TREE_KEY: String <<static>>

-PROPERTY_KEY: int <<static>>
-PROPERTY_ID: int <<static>>
-PROPERTY_ID: int <<static>>
-PROPERTY_COL: int <<static>>
-PROPERTY_ROW: int <<static>>
-ENTITY_NUM_PROPERTIES: int <<static>>

-STUMP_NUM_PROPERTIES; int <<static>>
-SAPLING_NUM_PROPERTIES: int <<static>>

-OBSTACLE_KEY: String <<static>>
-OBSTACLE_ANIMATION_PERIOD: int <<static>>
-OBSTACLE_NUM_PROPERTIES: int <<static>>

-PERSON_KEY: String <<static>>
-PERSON_ACTION_PERIOD: int <<static>>
-PERSON_ANIMATION_PERIOD: int <<static>>
-PERSON_LIMIT: int <<static>>
-PERSON_NUM_PROPERTIES: int <<static>>

-HOUSE_KEY: String <<static>>
-HOUSE_NUM_PROPERTIES: int <<static>>

-FAIRY_KEY: String <<static>>
-FAIRY_ANIMATION_PERIOD: int <<static>>
-FAIRY_ACTION_PERIOD: int <<static>>
-FAIRY_NUM_PROPERTIES: int <<static>>

-TREE_ANIMATION_PERIOD: int <<static>>
-TREE_ACTION_PERIOD: int <<static>>
-TREE_HEALTH: int <<static>>
-TREE_NUM_PROPERTIES: int <<static>>


" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" parent="IZyeWjeiiD0KSJfyj89O-561" vertex="1">
<mxGeometry y="26" width="440" height="524" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-563" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=#FF6392;fontColor=#5AA9E6;" parent="IZyeWjeiiD0KSJfyj89O-561" vertex="1">
<mxGeometry y="550" width="440" height="8" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-565" style="edgeStyle=none;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fontSize=12;startSize=8;endSize=8;" parent="IZyeWjeiiD0KSJfyj89O-561" source="IZyeWjeiiD0KSJfyj89O-561" target="IZyeWjeiiD0KSJfyj89O-562" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-564" value="
+load(WorldModel, Scanner, ImageStore, Background): void <<static>>
-parseSaveFile(WorldModel, Scanner, ImageStore, Background): void <<static>>
-parseBackgroundRow(WorldModel, String, int, ImageStore): void <<static>>
-ParseEntity(WorldModel, String, ImageStore): void <<static>>
-parseSapling(WorldModel, String[], Point, String, ImageStore): void <<static>>
-parsePerson(WorldModel, String[], Point, String, ImageStore): void <<static>>
-parseFairy(WorldModel, String[], Point, String, ImageStore): void <<static>>
-parseTree(WorldModel, String[], Point, String, ImageStore): void <<static>>
-parseObstacle(WorldModel, String[], Point, String, ImageStore): void <<static>>
-parseHouse(WorldModel, String[], Point, String, ImageStore): void <<static>>
-parseStump(WorldModel, String[], Point, String, ImageStore): void <<static>>
" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" parent="IZyeWjeiiD0KSJfyj89O-561" vertex="1">
<mxGeometry y="558" width="440" height="202" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-566" value="ImageLoader" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" parent="1" vertex="1">
<mxGeometry x="2290" y="2800" width="490" height="210" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-567" value="-COLOR_MASK: int <<static>>
-KEYED_IMAGE_MIN: int <<static>>
-KEYED_RED_IDX: int <<static>>
-KEYED_GREEN_IDX: int <<static>>
-KEYED_BLUE_IDX: int <<static>>
" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" parent="IZyeWjeiiD0KSJfyj89O-566" vertex="1">
<mxGeometry y="26" width="490" height="94" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-568" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=#FF6392;fontColor=#5AA9E6;" parent="IZyeWjeiiD0KSJfyj89O-566" vertex="1">
<mxGeometry y="120" width="490" height="8" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-570" style="edgeStyle=none;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fontSize=12;startSize=8;endSize=8;" parent="IZyeWjeiiD0KSJfyj89O-566" source="IZyeWjeiiD0KSJfyj89O-566" target="IZyeWjeiiD0KSJfyj89O-567" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="IZyeWjeiiD0KSJfyj89O-569" value="+loadImages(Scanner, ImageStore, PApplet): void <<static>>
-processImageLine(Map<String, List<PImage>>, String, PApplet): void <<static>>
-getImages(Map<String, List<PImage>): List<PImage> <<static>>
-setAlpha(PImage, int, int): void <<static>>
" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" parent="IZyeWjeiiD0KSJfyj89O-566" vertex="1">
<mxGeometry y="128" width="490" height="82" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-5" value="<<Interface>> Transform" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="1">
<mxGeometry x="1790" y="1480" width="90" height="60" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-6" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-5">
<mxGeometry y="26" width="90" height="8" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-7" value="+ transform()" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-5">
<mxGeometry y="34" width="90" height="26" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-9" value="<<Interface>> Move" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="1">
<mxGeometry x="1680" y="1320" width="110" height="70" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-10" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-9">
<mxGeometry y="26" width="110" height="8" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-11" value="+ move()
+ nextPosition()
" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-9">
<mxGeometry y="34" width="110" height="36" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-13" value="<<Interface>> Executable" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="1">
<mxGeometry x="1770" y="1630" width="190" height="70" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-14" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-13">
<mxGeometry y="26" width="190" height="8" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-15" value="+ executeActivity()
+ scheduleAction()
" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-13">
<mxGeometry y="34" width="190" height="36" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-17" value="Activity" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="1">
<mxGeometry x="1915" y="2210" width="165" height="158" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-18" value="- entity: Entity
- world: WorldModel
- imageStore: ImageStore
" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-17">
<mxGeometry y="26" width="165" height="64" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-19" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-17">
<mxGeometry y="90" width="165" height="8" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-20" value="+ Activity (entity, world, imagestore)
+ executeAction()
" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-17">
<mxGeometry y="98" width="165" height="60" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-21" value="Animation" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="1">
<mxGeometry x="2150" y="2200" width="165" height="158" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-22" value="- entity: Entity
- world: WorldModel
- imageStore: ImageStore
- repeatcount: int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-21">
<mxGeometry y="26" width="165" height="64" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-23" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-21">
<mxGeometry y="90" width="165" height="8" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-24" value="+ Animation (entity, world, imagestore, repeatCount)
+ executeAction()
" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-21">
<mxGeometry y="98" width="165" height="60" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-27" value="Fairy" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="1">
<mxGeometry x="1850" y="1140" width="210" height="310" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-28" value="- id: String 
- position: Point 
- images: List<PImage>
- imageIndex: int 
- actionPeriod: int 
- animationPeriod: int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-27">
<mxGeometry y="26" width="210" height="94" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-29" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-27">
<mxGeometry y="120" width="210" height="8" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-30" value="+Fairy(...) 
+log(): String 
+nextImage(): void 
+getAnimationPeriod(): double
+getId(): String 
+getPosition(): Point
+setPosition(pos: Point): void
+getCurrentImage(): PImage
+executeActivity(...)
+scheduleActions(...)
+move(...) 
+nextPosition(...)" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-27">
<mxGeometry y="128" width="210" height="182" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-31" value="House" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="1">
<mxGeometry x="2105" y="1140" width="210" height="260" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-32" value="- id: String 
- position: Point 
- images: List<PImage>
- imageIndex: int " style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-31">
<mxGeometry y="26" width="210" height="94" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-33" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-31">
<mxGeometry y="120" width="210" height="8" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-34" value="+House(...) 
+log(): String 
+nextImage(): void 
+getAnimationPeriod(): double
+getId(): String 
+getPosition(): Point
+setPosition(pos: Point): void
+getCurrentImage(): PImage" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-31">
<mxGeometry y="128" width="210" height="132" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-35" value="Obstacle" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="1">
<mxGeometry x="2370" y="1140" width="210" height="310" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-36" value="- id: String 
- position: Point 
- images: List<PImage>
- imageIndex: int 
- animationPeriod: int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-35">
<mxGeometry y="26" width="210" height="94" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-37" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-35">
<mxGeometry y="120" width="210" height="8" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-38" value="+Obstacle(...) 
+log(): String 
+nextImage(): void 
+getAnimationPeriod(): double
+getId(): String 
+getPosition(): Point
+setPosition(pos: Point): void
+getCurrentImage(): PImage
+executeActivity(...)
+scheduleActions(...)" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-35">
<mxGeometry y="128" width="210" height="182" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-39" value="PersonFull" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="1">
<mxGeometry x="2640" y="1140" width="210" height="360" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-40" value="- id: String 
- position: Point 
- images: List<PImage>
- imageIndex: int 
- actionPeriod: int 
- animationPeriod: int
- resourceLimit: int
- resourceCount: int
" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-39">
<mxGeometry y="26" width="210" height="134" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-41" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-39">
<mxGeometry y="160" width="210" height="8" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-42" value="+PersonFull(...) 
+getId(): String 
+getPosition(): Point 
+setPosition(pos: Point): void 
+getCurrentImage(): PImage 
+log(): String 
+nextImage(): void 
+getAnimationPeriod(): double 
+executeActivity(...) 
+transform(...) 
+move(...) 
+nextPosition(...) 
+scheduleActions(...) " style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-39">
<mxGeometry y="168" width="210" height="192" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-59" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.407;entryY=1.231;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="VCpXL3aRTQNEbXI-MO2e-17" target="IZyeWjeiiD0KSJfyj89O-551">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1970" y="2160" as="sourcePoint" />
<mxPoint x="2130" y="2160" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-60" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="VCpXL3aRTQNEbXI-MO2e-21" target="IZyeWjeiiD0KSJfyj89O-551">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="2050" y="2050" as="sourcePoint" />
<mxPoint x="2210" y="2050" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-61" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="VCpXL3aRTQNEbXI-MO2e-13" target="IZyeWjeiiD0KSJfyj89O-532">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1740" y="1580" as="sourcePoint" />
<mxPoint x="1900" y="1580" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-63" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;exitX=0.439;exitY=1.097;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;exitPerimeter=0;" edge="1" parent="1" source="VCpXL3aRTQNEbXI-MO2e-11" target="IZyeWjeiiD0KSJfyj89O-529">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1895" y="1533.03" as="sourcePoint" />
<mxPoint x="1760" y="1444.03" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-64" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=1.021;entryY=0.112;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="VCpXL3aRTQNEbXI-MO2e-5" target="IZyeWjeiiD0KSJfyj89O-529">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1905" y="1559" as="sourcePoint" />
<mxPoint x="1770" y="1470" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-65" value="PersonSearching" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="1">
<mxGeometry x="2920" y="1140" width="210" height="360" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-66" value="- id: String 
- position: Point 
- images: List<PImage>
- imageIndex: int 
- actionPeriod: int 
- animationPeriod: int
- resourceLimit: int
- resourceCount: int
" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-65">
<mxGeometry y="26" width="210" height="134" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-67" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-65">
<mxGeometry y="160" width="210" height="8" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-68" value="+PersonSearchingl(...) 
+getId(): String 
+getPosition(): Point 
+setPosition(pos: Point): void 
+getCurrentImage(): PImage 
+log(): String 
+nextImage(): void 
+getAnimationPeriod(): double 
+executeActivity(...) 
+transform(...) 
+move(...) 
+nextPosition(...) 
+scheduleActions(...) " style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-65">
<mxGeometry y="168" width="210" height="192" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-69" value="Sapling" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="1">
<mxGeometry x="2390" y="1520" width="210" height="380" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-70" value="- id: String 
- position: Point 
- images: List<PImage>
- imageIndex: int 
- actionPeriod: int 
- animationPeriod: int
- health: int
- healthLimit: int

" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-69">
<mxGeometry y="26" width="210" height="134" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-71" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-69">
<mxGeometry y="160" width="210" height="8" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-72" value="+Sapling(...) 
+getId(): String 
+getPosition(): Point 
+setPosition(pos: Point): void 
+getCurrentImage(): PImage 
+log(): String 
+nextImage(): void 
+getAnimationPeriod(): double 
+executeActivity(...) 
+transform(...) 
+scheduleActions(...) 
+ decreaseHealth(..)
" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-69">
<mxGeometry y="168" width="210" height="212" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-73" value="Tree" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="1">
<mxGeometry x="2640" y="1530" width="210" height="380" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-74" value="- id: String 
- position: Point 
- images: List<PImage>
- imageIndex: int 
- actionPeriod: int 
- animationPeriod: int
- health: int
" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-73">
<mxGeometry y="26" width="210" height="134" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-75" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-73">
<mxGeometry y="160" width="210" height="8" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-76" value="+Tree(...) 
+getId(): String 
+getPosition(): Point 
+setPosition(pos: Point): void 
+getCurrentImage(): PImage 
+log(): String 
+nextImage(): void 
+getAnimationPeriod(): double 
+executeActivity(...) 
+transform(...) 
+scheduleActions(...) 
+ decreaseHealth(..)
" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-73">
<mxGeometry y="168" width="210" height="212" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-77" value="Stump" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="1">
<mxGeometry x="2910" y="1530" width="210" height="260" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-78" value="- id: String 
- position: Point 
- images: List<PImage>
- imageIndex: int " style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-77">
<mxGeometry y="26" width="210" height="94" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-79" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-77">
<mxGeometry y="120" width="210" height="8" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-80" value="+Stump(...) 
+log(): String 
+nextImage(): void 
+getAnimationPeriod(): double
+getId(): String 
+getPosition(): Point
+setPosition(pos: Point): void
+getCurrentImage(): PImage" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="VCpXL3aRTQNEbXI-MO2e-77">
<mxGeometry y="128" width="210" height="132" as="geometry" />
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-81" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.39;entryY=1.012;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" target="VCpXL3aRTQNEbXI-MO2e-30">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1875" y="1640" as="sourcePoint" />
<mxPoint x="1740" y="1551" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-82" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" target="VCpXL3aRTQNEbXI-MO2e-38">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1885" y="1650" as="sourcePoint" />
<mxPoint x="1750" y="1561" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-83" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" target="VCpXL3aRTQNEbXI-MO2e-72">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1895" y="1660" as="sourcePoint" />
<mxPoint x="2380" y="1421" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-84" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" target="VCpXL3aRTQNEbXI-MO2e-42">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1895" y="1660" as="sourcePoint" />
<mxPoint x="2380" y="1421" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-85" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" target="VCpXL3aRTQNEbXI-MO2e-68">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1905" y="1670" as="sourcePoint" />
<mxPoint x="2650" y="1414" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-86" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" target="VCpXL3aRTQNEbXI-MO2e-76">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1915" y="1680" as="sourcePoint" />
<mxPoint x="2930" y="1439" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-87" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="VCpXL3aRTQNEbXI-MO2e-11" target="VCpXL3aRTQNEbXI-MO2e-30">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1738" y="1403" as="sourcePoint" />
<mxPoint x="1693" y="1454" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-88" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" target="VCpXL3aRTQNEbXI-MO2e-68">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1790" y="1380" as="sourcePoint" />
<mxPoint x="2640" y="1410" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-89" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="VCpXL3aRTQNEbXI-MO2e-11">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1810" y="1392" as="sourcePoint" />
<mxPoint x="2650" y="1420" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-92" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.019;entryY=0.875;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="VCpXL3aRTQNEbXI-MO2e-7" target="VCpXL3aRTQNEbXI-MO2e-42">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="2213" y="1658" as="sourcePoint" />
<mxPoint x="2270" y="1470" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-93" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;" edge="1" parent="1" target="VCpXL3aRTQNEbXI-MO2e-68">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1890" y="1520" as="sourcePoint" />
<mxPoint x="2654" y="1486" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-94" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="VCpXL3aRTQNEbXI-MO2e-7" target="VCpXL3aRTQNEbXI-MO2e-72">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1900" y="1530" as="sourcePoint" />
<mxPoint x="2930" y="1425" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-95" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="VCpXL3aRTQNEbXI-MO2e-7" target="VCpXL3aRTQNEbXI-MO2e-76">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1890" y="1537" as="sourcePoint" />
<mxPoint x="2400" y="1758" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VCpXL3aRTQNEbXI-MO2e-96" value="" style="endArrow=block;startArrow=block;endFill=1;startFill=1;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="VCpXL3aRTQNEbXI-MO2e-15" target="IZyeWjeiiD0KSJfyj89O-548">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="2430" y="1820" as="sourcePoint" />
<mxPoint x="2590" y="1820" as="targetPoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
<diagram name="Copy of Page-1" id="BBY4eBihfiS0v4EmiZPu">
<mxGraphModel dx="1032" dy="1558" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-0" />
<mxCell id="Fe6HeiXU6q--ccNWiaIL-1" parent="Fe6HeiXU6q--ccNWiaIL-0" />
<mxCell id="Fe6HeiXU6q--ccNWiaIL-2" value="" style="graphMlID=e0;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=diamond;startFill=0;endFill=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;fontColor=#5AA9E6;entryX=-0.008;entryY=-0.286;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="Fe6HeiXU6q--ccNWiaIL-1" source="Fe6HeiXU6q--ccNWiaIL-17" target="Fe6HeiXU6q--ccNWiaIL-24">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-3" value="" style="graphMlID=e1;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=diamond;startFill=0;endFill=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fontColor=#5AA9E6;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="Fe6HeiXU6q--ccNWiaIL-1" source="Fe6HeiXU6q--ccNWiaIL-18" target="Fe6HeiXU6q--ccNWiaIL-26">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-4" value="" style="graphMlID=e2;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=diamond;startFill=0;endFill=1;fontColor=#5AA9E6;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" edge="1" parent="Fe6HeiXU6q--ccNWiaIL-1" source="Fe6HeiXU6q--ccNWiaIL-25" target="Fe6HeiXU6q--ccNWiaIL-53">
<mxGeometry relative="1" as="geometry">
<mxPoint x="648" y="240" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-5" value="" style="graphMlID=e3;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=diamond;startFill=0;endFill=1;exitX=0.988;exitY=-0.077;exitDx=0;exitDy=0;exitPerimeter=0;fontColor=#5AA9E6;entryX=-0.023;entryY=0.105;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="Fe6HeiXU6q--ccNWiaIL-1" source="Fe6HeiXU6q--ccNWiaIL-20" target="Fe6HeiXU6q--ccNWiaIL-29">
<mxGeometry relative="1" as="geometry">
<mxPoint x="840" y="580" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-6" value="" style="graphMlID=e4;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=diamond;startFill=0;endFill=1;exitX=0.975;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;fontColor=#5AA9E6;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="Fe6HeiXU6q--ccNWiaIL-1" source="Fe6HeiXU6q--ccNWiaIL-20" target="Fe6HeiXU6q--ccNWiaIL-36">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-7" value="" style="graphMlID=e5;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=diamond;startFill=0;endFill=1;fontColor=#5AA9E6;exitX=1.001;exitY=-0.077;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="Fe6HeiXU6q--ccNWiaIL-1" source="Fe6HeiXU6q--ccNWiaIL-22" target="Fe6HeiXU6q--ccNWiaIL-46">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-8" value="" style="graphMlID=e6;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=diamond;startFill=0;endFill=1;fontColor=#5AA9E6;" edge="1" parent="Fe6HeiXU6q--ccNWiaIL-1" source="Fe6HeiXU6q--ccNWiaIL-29" target="Fe6HeiXU6q--ccNWiaIL-58">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-9" value="" style="graphMlID=e7;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=none;startFill=1;endFill=1;fontColor=#5AA9E6;entryX=0;entryY=0.25;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="Fe6HeiXU6q--ccNWiaIL-1" source="Fe6HeiXU6q--ccNWiaIL-32" target="Fe6HeiXU6q--ccNWiaIL-37">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-10" value="" style="graphMlID=e8;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=diamond;startFill=0;endFill=1;fontColor=#5AA9E6;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="Fe6HeiXU6q--ccNWiaIL-1" source="Fe6HeiXU6q--ccNWiaIL-24" target="Fe6HeiXU6q--ccNWiaIL-50">
<mxGeometry relative="1" as="geometry">
<mxPoint x="710" y="80" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-11" value="" style="graphMlID=e9;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=diamond;startFill=0;endFill=1;fontColor=#5AA9E6;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=-0.013;entryY=0.08;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="Fe6HeiXU6q--ccNWiaIL-1" source="Fe6HeiXU6q--ccNWiaIL-50" target="Fe6HeiXU6q--ccNWiaIL-65">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-12" value="" style="graphMlID=e10;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=diamond;startFill=0;endFill=1;fontColor=#5AA9E6;exitX=0.998;exitY=0.132;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.008;entryY=0.345;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="Fe6HeiXU6q--ccNWiaIL-1" source="Fe6HeiXU6q--ccNWiaIL-49" target="Fe6HeiXU6q--ccNWiaIL-62">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-13" value="" style="graphMlID=e11;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=diamond;startFill=0;endFill=1;fontColor=#5AA9E6;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.006;entryY=0.178;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="Fe6HeiXU6q--ccNWiaIL-1" source="Fe6HeiXU6q--ccNWiaIL-58" target="Fe6HeiXU6q--ccNWiaIL-69">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-14" value="" style="graphMlID=e12;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=diamond;startFill=0;endFill=1;fontColor=#5AA9E6;exitX=0.999;exitY=0.387;exitDx=0;exitDy=0;exitPerimeter=0;entryX=-0.014;entryY=0.373;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="Fe6HeiXU6q--ccNWiaIL-1" source="Fe6HeiXU6q--ccNWiaIL-69" target="Fe6HeiXU6q--ccNWiaIL-72">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-15" value="" style="graphMlID=e13;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=none;startFill=1;endFill=1;fontColor=#5AA9E6;entryX=0.528;entryY=0.978;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.57;exitY=-0.037;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="Fe6HeiXU6q--ccNWiaIL-1" source="Fe6HeiXU6q--ccNWiaIL-25" target="Fe6HeiXU6q--ccNWiaIL-24">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-16" value="" style="graphMlID=e14;endArrow=none;strokeColor=#FF6392;strokeWidth=1.0;startArrow=none;startFill=1;endFill=1;fontColor=#5AA9E6;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="Fe6HeiXU6q--ccNWiaIL-1" source="Fe6HeiXU6q--ccNWiaIL-57" target="Fe6HeiXU6q--ccNWiaIL-52">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1177.6990312711996" y="279.6614280464578" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-17" value="VirtualWorld" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=20;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;fillColor=#FFE45E;strokeColor=#FF6392;fontColor=#5AA9E6;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-1">
<mxGeometry x="20" y="150" width="300" height="610" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-18" value="+TIMER_ACTION_PERIOD: int <<static>>
+VIEW_WIDTH: int <<static>>
+VIEW_HEIGHT: int <<static>>
+TILE_WIDTH: int <<static>>
+TILE_HEIGHT: int <<static>>
+WORLD_WIDTH_SCALE: int <<static>>
+WORLD_HEIGHT_SCALE: int <<static>>
+VIEW_COLS: int <<static>>
+VIEW_ROWS: int <<static>>
+WORLD_COLS: int <<static>>
+WORLD_ROWS: int <<static>>
+IMAGE_LIST_FILE_NAME: String <<static>>
+DEFAULT_IMAGE_NAME: String <<static>>
+DEFAULT_IMAGE_COLOR: int <<static>>
+LOAD_FILE_NAME: String <<static>>
+FAST_FLAG: String <<static>>
+FASTER_FLAG: String <<static>>
+FASTEST_FLAG: String <<static>>
+FAST_SCALE: double <<static>>
+FASTER_SCALE: double <<static>>
+FASTEST_SCALE: double <<static>>
+timeScale: double
+imageStore: ImageStore
+world: WorldModel
+view: WorldView
+scheduler: EventScheduler" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#5AA9E6;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-17">
<mxGeometry y="20" width="300" height="380" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-19" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=#FF6392;fontColor=#5AA9E6;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-17">
<mxGeometry y="400" width="300" height="8" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-20" value="+settings()
+setup()
+draw()
+mousePressed()
-mouseToPoint()
+keyPressed()
+createDefaultBackground() <<static>>
+createImageColored() <<static>>
+loadWorld() <<static>>
+loadWorld() <<static>>
+scheduleActions() <<static>>
+parseCommandLine() <<static>>
+main() <<static>>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#5AA9E6;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-17">
<mxGeometry y="408" width="300" height="202" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-21" value="22222WorldModel" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-1">
<mxGeometry x="610" y="-300" width="280" height="230" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-22" value="+numRows: int
+numCols: int
+background: Background[][]
+occupancy: Entity[][]
+entities: Set<Entity>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-21">
<mxGeometry y="26" width="280" height="94" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-23" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=#FF6392;fontColor=#5AA9E6;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-21">
<mxGeometry y="120" width="280" height="8" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-24" value="TODO
+load()
+getBackgroundCell(): Background 
+setBackgroundCell() 
//within bounds
//add entity" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#020405;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-21">
<mxGeometry y="128" width="280" height="102" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-25" value="WorldView" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-1">
<mxGeometry x="480" y="180" width="280" height="168" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-26" value="+screen: PApplet
+world: WorldModel
+tileWidth: int
+tileHeight: int
+viewport: Viewport" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-25">
<mxGeometry y="26" width="280" height="84" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-27" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=#FF6392;fontColor=#5AA9E6;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-25">
<mxGeometry y="110" width="280" height="8" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-28" value="TODO
+drawBackground()
+drawViewport() 
//shiftView" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-25">
<mxGeometry y="118" width="280" height="50" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-29" value="EventScheduler" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-1">
<mxGeometry x="512.57" y="380" width="280" height="170" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-30" value="+eventQueue: PriorityQueue<Event>
+pendingEvents: Map<Entity, List<Event>>
+timeScale: double" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-29">
<mxGeometry y="26" width="280" height="64" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-31" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=#FF6392;fontColor=#5AA9E6;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-29">
<mxGeometry y="90" width="280" height="8" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-32" value="TODO
+unscheduleAllEvents()
+scheduleEvent() " style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-29">
<mxGeometry y="98" width="280" height="72" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-33" value="ImageStore" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-1">
<mxGeometry x="460" y="571.54" width="280" height="160" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-34" value="+images: Map<String, List<PImage>>
+defaultImages: List<PImage>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-33">
<mxGeometry y="26" width="280" height="54" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-35" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=#FF6392;fontColor=#5AA9E6;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-33">
<mxGeometry y="80" width="280" height="8" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-36" value="TODO
+getImageList(): List<PImage> 
+loadImages() 
" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-33">
<mxGeometry y="88" width="280" height="72" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-37" value="EventComparator" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-1">
<mxGeometry x="850" y="580" width="240" height="134" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-38" value="+eventQueue: PriorityQueue<Event>
+pendingEvents: Map<Entity, List<Event>>
+timeScale: double" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-37">
<mxGeometry y="26" width="240" height="74" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-39" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=#FF6392;fontColor=#5AA9E6;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-37">
<mxGeometry y="100" width="240" height="8" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-40" value="TODO" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-37">
<mxGeometry y="108" width="240" height="26" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-41" value="Functions" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-1">
<mxGeometry x="512.57" y="750" width="360" height="2170" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-42" value="+rand: Random <<static>>

+COLOR_MASK: int <<static>>
+KEYED_IMAGE_MIN: int <<static>>
+KEYED_RED_IDX: int <<static>>
+KEYED_GREEN_IDX: int <<static>>
+KEYED_BLUE_IDX: int <<static>>

+PROPERTY_KEY: int <<static>>

+PATH_KEYS: List<String <<static>>

+SAPLING_KEY: String <<static>>
+SAPLING_HEALTH_LIMIT: int <<static>>
+ SAPLING_ACTION_ANIMATION_PERIOD: int <<static>>
+SAPLING_NUM_PROPERTIES: int <<static>>
+SAPLING_ID: String <<static>>
+SAPLING_COL: int <<static>>
+SAPLING_ROW: int <<static>>
+SAPLING_HEALTH: int <<static>>


+BGND_KEY: String <<static>>
+BGND_NUM_PROPERTIES: int <<static>>
+BGND_ID: int <<static>>
+BGND_COL: int <<static>>
+BGND_ROW: int <<static>>

+OBSTACLE_KEY: String <<static>>
+OBSTACLE_NUM_PROPERTIES: int <<static>>
+OBSTACLE_ID: int <<static>>
+OBSTACLE_COL: int <<static>>
+OBSTACLE_ROW: int <<static>>
+OBSTACLE_ANIMATION_PERIOD: int <<static>>

+PERSON_KEY: String <<static>>
+PERSON_NUM_PROPERTIES: int <<static>>
+PERSON_ID: String <<static>>
+PERSON_COL: int <<static>>
+PERSON_ROW: int <<static>>
+PERSON_LIMIT: int <<static>>
+PERSON_ACTION_PERIOD: int <<static>>
+PERSON_ANIMATION_PERIOD: int <<static>>

+HOUSE_KEY: String <<static>>
+HOUSE_NUM_PROPERTIES: int <<static>>
+HOUSE_ID: String <<static>>
+HOUSE_COL: int <<static>>
+HOUSE_ROW: int <<static>>

+FAIRY_KEY: String <<static>>
+FAIRY_NUM_PROPERTIES: int <<static>>
+ FAIRY_ID: String <<static>>
+FAIRY_COL: int <<static>>
+FAIRY_ROW: int <<static>>
+FAIRY_ANIMATION_PERIOD: int <<static>>
+FAIRY_ACTION_PERIOD: int <<static>>

+TREE_KEY: String <<static>>
+TREE_NUM_PROPERTIES: int <<static>>
+TREE_ID: String <<static>>
+TREE_COL: int <<static>>
+TREE_ROW: int <<static>>
+TREE_ANIMATION_PERIOD: int <<static>>
+TREE_ACTION_PERIOD: int <<static>>
+SAPLING_HEALTH: int <<static>>
" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-41">
<mxGeometry y="26" width="360" height="964" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-43" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=#FF6392;fontColor=#5AA9E6;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-41">
<mxGeometry y="990" width="360" height="8" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-44" value=" <<static>>
+getAnimationPeriod(): int <<static>>
 <<static>>
 <<static>>
 <<static>>
 <<static>>

 
+executeTreeActivity() <<static>>
 
 


+adjacent(): boolean <<static>>
+getNumFromRange: int <<static>>

 <<static>>
+processImageLine() <<static>>
+getImages(): List<PImage> <<static>>
+setAlpha() <<static>>

 

 <<static>>
+processLine(): boolean <<static>>

 <<static>>

 <<static>>
+withinBounds(): boolean <<static>>
+isOccupied(): boolean <<static>>

 <<static>>
+distanceSquared(): int <<static>>
+findNearest(): Optional<Entity> <<static>>


+getBackgroundImage(): Optional<PImage> <<static>>
+setBackground() <<static>>
+getOccupant(): Optional<Entity> <<static>>
+getOccupancyCell(): Entity <<static>>
+setOccupancyCell() <<static>>
+getBackgroundCell(): Background <<static>>
 
+clamp() <<static>>
 " style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#000000;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-41">
<mxGeometry y="998" width="360" height="1172" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-45" value="Background" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-1">
<mxGeometry x="820" y="-40" width="250" height="170" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-46" value="+id: String
+images: List<PImage>
+imageIndex: int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-45">
<mxGeometry y="26" width="250" height="84" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-47" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-45">
<mxGeometry y="110" width="250" height="8" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-48" value="TODO
+getCurrentImage(): PImage" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-45">
<mxGeometry y="118" width="250" height="52" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-49" value="Entity" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-1">
<mxGeometry x="1140" y="-630" width="190" height="800" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-50" value="+kind: EntityKind
+id: String
+position: Point
+images: List<PImage>
+imageIndex: int
+resourceLimit: int
+resourceCount: int
+actionPeriod: int
+animationPeriod: int
+health: int
+healthLimit: int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-49">
<mxGeometry y="26" width="190" height="174" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-51" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-49">
<mxGeometry y="200" width="190" height="8" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-52" value="TODO
+executePersonFullActivity()
+getAnimationPeriod(): int 
+nextImage() 
+executeSaplingActivity()
+executeTreeActivity() 
+executeFairyActivity() 
+executePersonSearchingActivity()
+executePersonFullActivity() 
+scheduleEvent() 
+scheduleActions() 
+transformNotFull(): boolean 
+transformFull(): boolean 
+transformPlant(): boolean 
+transformTree(): boolean 
+executeFairyActivity()
+executePersonSearchingActivity()
+tryAddEntity() 
+nearestEntity(): Optional<Entity> 
 +addEntity() 
+moveEntity() 
+removeEntity() 
+removeEntityAt()
+parseBackground(): boolean 
+parseSapling(): boolean 
+parsePerson(): boolean 
+parseFairy(): boolean 
+parseTree(): boolean 
+parseObstacle(): boolean 
+parseHouse(): boolean 
+createHouse(): Entity 
+createObstacle(): Entity
+createTree(): Entity 
+createStump(): Entity 
+createSapling(): Entity 
+createFairy(): Entity 
+createPersonSearching(): Entity
+createPersonFull(): Entity 
+transformFull(): boolean 
+transformSapling(): boolean 
+nextPositionFairy(): Point 
+nextPositionPerson(): Point 

" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-49">
<mxGeometry y="208" width="190" height="592" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-53" value="Viewport" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-1">
<mxGeometry x="850" y="260" width="230" height="200" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-54" value="+row: int
+col: int
+numRows: int
+numCols: int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-53">
<mxGeometry y="26" width="230" height="74" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-55" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-53">
<mxGeometry y="100" width="230" height="8" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-56" value="TODO
+viewportToWorld(): Point
+worldToViewport(): Point
+shiftView()
+shift() //only shift
+contains(): boolean " style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-53">
<mxGeometry y="108" width="230" height="92" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-57" value="Event" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-1">
<mxGeometry x="1115" y="413.54" width="165" height="158" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-58" value="+action: Action
+time: long
+entity: Entity" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-57">
<mxGeometry y="26" width="165" height="64" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-59" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-57">
<mxGeometry y="90" width="165" height="8" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-60" value="TODO
+updateOnTime()
+removePendingEvent() " style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-57">
<mxGeometry y="98" width="165" height="60" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-61" value="<<enumeration>>
EntityKind" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=40;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-1">
<mxGeometry x="1470" y="-272" width="160" height="172" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-62" value="HOUSE
PERSON_FULL
PERSON_SEARCHING
OBSTACLE
FAIRY
STUMP
SAPLING
TREE" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-61">
<mxGeometry y="40" width="160" height="124" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-63" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-61">
<mxGeometry y="164" width="160" height="8" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-64" value="Point" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-1">
<mxGeometry x="1470" y="-20" width="160" height="220" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-65" value="+x: int
+y: int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-64">
<mxGeometry y="26" width="160" height="54" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-66" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-64">
<mxGeometry y="80" width="160" height="8" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-67" value="+toString(): String
+equals(): boolean
+moveToFairy(): boolean 
+moveToNotFull(): boolean
+moveToFull(): boolean 
+drawEntities() " style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-64">
<mxGeometry y="88" width="160" height="132" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-68" value="Action" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-1">
<mxGeometry x="1320" y="413.53999999999996" width="210" height="290" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-69" value="+kind: ActionKind
+entity: Entity
+world: WorldModel
+imageStore: ImageStore
+repeatCount: int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-68">
<mxGeometry y="26" width="210" height="124" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-70" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-68">
<mxGeometry y="150" width="210" height="8" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-71" value="TODO
+createActivityAction(): Action
+createAnimationAction(): Action
+executeActivityAction() 
+executeAnimationAction() 
+executeAction() " style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-68">
<mxGeometry y="158" width="210" height="132" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-72" value="ActionKind" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;hachureGap=4;pointerEvents=0;sketch=0;fontColor=#5AA9E6;strokeColor=#FF6392;fillColor=#FFE45E;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-1">
<mxGeometry x="1600" y="290" width="160" height="68" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-73" value="ACTIVITY
ANIMATION" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-72">
<mxGeometry y="26" width="160" height="34" as="geometry" />
</mxCell>
<mxCell id="Fe6HeiXU6q--ccNWiaIL-74" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="Fe6HeiXU6q--ccNWiaIL-72">
<mxGeometry y="60" width="160" height="8" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>