package { import com.rubenswieringa.*; import com.rubenswieringa.ai.*; import flash.display.MovieClip; import flash.display.Shape; import flash.display.StageScaleMode; import flash.events.ContextMenuEvent; import flash.events.KeyboardEvent; import flash.net.URLRequest; import flash.net.navigateToURL; import flash.ui.ContextMenu; import flash.ui.ContextMenuItem; import flash.ui.Keyboard; public class Main extends MovieClip { private var ecoSystem:EcoSystem; private var gridVisualiser:GridVisualiser; private var shape:Shape = new Shape(); private const SPAWN_AMOUNT_EACH:int = 4; public function Main ():void { this.bootEcoSystem(); this.addChildAt(this.shape, 0); this.gridVisualiser = new GridVisualiser(ecoSystem.getGrid(), shape.graphics); this.stage.addEventListener(KeyboardEvent.KEY_UP, toggleGridVisualiser); this.stage.scaleMode = StageScaleMode.NO_SCALE; this.allowViewSource(); } private function bootEcoSystem ():void { this.ecoSystem = new EcoSystem(this); this.ecoSystem.limit = 60; var i:int; for (i=0; i<SPAWN_AMOUNT_EACH; i++){ this.ecoSystem.spawn(RockOrganism); } for (i=0; i<SPAWN_AMOUNT_EACH; i++){ this.ecoSystem.spawn(PaperOrganism); } for (i=0; i<SPAWN_AMOUNT_EACH; i++){ this.ecoSystem.spawn(ScissorsOrganism); } } private function toggleGridVisualiser (event:KeyboardEvent=null):void { if (event.keyCode != Keyboard.SPACE){ return; } this.gridVisualiser.enabled = !this.gridVisualiser.enabled; } private function allowViewSource ():void { var menu:ContextMenu = new ContextMenu(); var item:ContextMenuItem = new ContextMenuItem("View Source"); menu.hideBuiltInItems(); menu.customItems = [item]; item.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, this.viewSource); this.contextMenu = menu; } private function viewSource (event:ContextMenuEvent):void { navigateToURL(new URLRequest("source/index.html")) } } }