forked from rotwurstesser/UnillamaEditor
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathController.as
More file actions
executable file
·245 lines (235 loc) · 8.22 KB
/
Controller.as
File metadata and controls
executable file
·245 lines (235 loc) · 8.22 KB
1
package{ // adobe import com.kiko.ui.BoxConfig; import com.kiko.ui.buttons.TextButton; import flash.automation.KeyboardAutomationAction; import flash.display.Loader; import flash.display.LoaderInfo; import flash.display.Sprite; import flash.display.MovieClip; import flash.display.InteractiveObject; import flash.display.DisplayObject import flash.events.Event; import flash.events.KeyboardEvent; import flash.events.MouseEvent; import flash.net.FileFilter; import flash.net.FileReference; import flash.text.TextField; import flash.text.TextFieldType; import flash.text.TextFormat; import flash.text.TextFieldAutoSize; import flash.utils.ByteArray; import flash.ui.Keyboard; // // own import com.greensock.easing.Circ; import com.greensock.events.LoaderEvent; import com.kiko.display.Circle; import com.kiko.display.Rect; import com.kiko.ui.Box; import com.sorcerer.*; import com.sorcerer.LevelElement; import flash.net.URLRequest; // public class Controller extends Sprite { // managers // graphics private var format:TextFormat; private var whiteBox:Box; private var manager:LevelElementManager; // // private var graphicArrayTf:TextField; private var numElemsTf:TextField; // // public function Controller():void { this.addEventListener(Event.ADDED_TO_STAGE, toStage); } private function toStage(e:Event):void { removeEventListener(Event.ADDED_TO_STAGE, toStage); addEventListener(Event.ENTER_FRAME, loop); createManager(); addTestElements(); createFormats(); createUi(); } private function createManager(){ manager = new LevelElementManager(stage); } private function addTestElements(){ addGraphic("evil_cloud.swf", Math.random() * 100, Math.random() * 100); addGraphic("unillama.swf", Math.random() * 100, Math.random() * 100); addGraphic("spike_snail.swf", Math.random() * 100, Math.random() * 100); addGraphic("yellow_jelly.swf", Math.random() * 100, Math.random() * 100); addGraphic("purple_jelly.swf", Math.random() * 100, Math.random() * 100); addGraphic("dark_eye.swf", Math.random() * 100, Math.random() * 100); } private function loop(e:Event):void { graphicArrayTf.text = "ActiveArray: " + manager.activeArray.length; numElemsTf.text = "LevelElements: "+manager.graphicArray.length; } private function createFormats():void { format = new TextFormat("Arial", 12); } /** * Kiko UI Elements */ private function createUi():void { whiteBox = new Box( new BoxConfig({minimizeMode:true}) ); stage.addChild(whiteBox); whiteBox.title = "Stage"; whiteBox.x = stage.stageWidth - whiteBox.width; whiteBox.active = true; // std-color: 0x00aaff whiteBox.addTextButton("Browse", 0xEB147A).addEventListener(MouseEvent.CLICK, function(){ browse(); }); whiteBox.addTextButton("Export", 0xEB147A).addEventListener(MouseEvent.CLICK, function() { var b:Box = new Box( new BoxConfig({circleMode:false, contentMode:BoxConfig.CONTENT_SINGLE }) ); stage.addChild(b); b.active = true; b.title = "Level Data"; b.x = stage.mouseX - b.width; b.y = stage.mouseY; var tf:TextField = new TextField(); addChild(tf); tf.text = manager.generateLevelData(); b.addContent( tf ); tf.multiline = true; tf.wordWrap = true; tf.background = true; tf.setTextFormat( format ); tf.defaultTextFormat = format; }); whiteBox.addTextButton("Import", 0xEB147A).addEventListener(MouseEvent.CLICK, function() { var b:Box = new Box( new BoxConfig( { circleMode:false, contentMode: BoxConfig.CONTENT_FILL} )); stage.addChild(b); var tf:TextField = new TextField(); tf.type = TextFieldType.INPUT; tf.border = true; tf.borderColor = 0xC7C7C7; tf.setTextFormat(format); tf.defaultTextFormat = format; tf.multiline = true; tf.wordWrap = true; tf.height = 200; b.addContent( tf ); b.addTextButton("Generate Level").addEventListener(MouseEvent.CLICK, function() { var s:String = tf.text; var first:Array = s.split("|"); var last:Array for ( var i:uint = 0; i < first.length; i++) { var second:Array = (first[i] as String).split(","); addGraphic( second[0], second[1], second[2], second[3] ); trace(second[0]); } }); b.title = "Import"; b.active = true; b.x = stage.mouseX - b.width; b.y = stage.mouseY; }); whiteBox.addTextButton("About").addEventListener(MouseEvent.CLICK, function() { var b:Box = new Box(new BoxConfig({contentMode:BoxConfig.CONTENT_SINGLE, circleMode:false})); stage.addChild(b); b.x = stage.mouseX - b.width; b.y = stage.mouseY; b.title = "About"; b.active = true; var tf:TextField = new TextField(); tf.setTextFormat(format); tf.defaultTextFormat = format; tf.multiline = true; tf.wordWrap = true; tf.text = "Funktionalitäten: \n- Drag & Drop\n- Löschen\n- Dublizieren\n- Verschieben\n- Mehrfach-Auswahl\n- Pixelgenaue Auswahl\n- Export als String\n- Import & Level Generierung"; tf.appendText( "\n\nTasten: \nD = Dublizieren\nE | Del = Löschen\nArrows = Bewegen\nB = In den Hintergrund\nV = In den Vordergrund\nSpace = Stage bewegen" ); b.addContent(tf); }); graphicArrayTf = new TextField(); graphicArrayTf.setTextFormat(format); graphicArrayTf.defaultTextFormat = format; graphicArrayTf.multiline = true; graphicArrayTf.wordWrap = true; graphicArrayTf.height = 20; graphicArrayTf.width = 150; graphicArrayTf.text = String(manager.activeArray.length); whiteBox.addContent(graphicArrayTf); // numElemsTf = new TextField(); numElemsTf.text = "LevelElements on Stage: " + manager.graphicArray.length; numElemsTf.multiline = true; numElemsTf.wordWrap = true; numElemsTf.height = 20; numElemsTf.width = 150; numElemsTf.setTextFormat( format ); numElemsTf.defaultTextFormat = format; whiteBox.addContent( numElemsTf ); stage.addEventListener(Event.RESIZE, function resizeStage(e:Event) { whiteBox.x = stage.stageWidth - whiteBox.width - 50; whiteBox.y = 50; } ); stage.doubleClickEnabled = true; // disable right click stage.addEventListener(MouseEvent.DOUBLE_CLICK, function() { }); } /** * Lädt eine Datei(swf) und bringt sie als LevelElement auf die Stage. * @param filename Dateiname ohne den ganzen Pfad * @param ex Element x Position * @param ey Element y Position * @param zindex */ private function addGraphic(filename:String, ex:Number = 0, ey:Number = 0, zindex:uint = 0 ) { trace(filename); var l:Loader = new Loader(); var request:URLRequest = new URLRequest("swf/"+filename); l.load( request ); var loaded_file:DisplayObject; l.contentLoaderInfo.addEventListener(Event.COMPLETE, function fileLoaded(e:Event){ var loaded_swf:DisplayObject = LoaderInfo(e.target).content; var level_element:LevelElement = new LevelElement(manager); level_element.path = filename; level_element.setGraphicContent(loaded_swf); stage.addChild(level_element); //stage.setChildIndex( level_element, zindex); level_element.x = ex; level_element.y = ey; manager.addGraphicElement(level_element); }); } private function browse(){ var f:FileReference = new FileReference(); var filter:FileFilter = new FileFilter("*.swf (LevelElement)", "*.swf"); f.browse([filter]); f.addEventListener(Event.SELECT, function(e:Event) { f.load(); f.addEventListener(Event.COMPLETE, function(e:Event) { f.removeEventListener(Event.COMPLETE, function(e:Event) { } ); var ref:FileReference = e.target as FileReference; var swf:Loader = new Loader(); swf.loadBytes(ref.data); swf.contentLoaderInfo.addEventListener(Event.COMPLETE, function swfLoaded(e:Event) { var loaded_swf:DisplayObject = LoaderInfo(e.target).content; var level_element:LevelElement = new LevelElement(manager); level_element.path = f.name; level_element.setGraphicContent(loaded_swf); stage.addChild(level_element); manager.addGraphicElement(level_element); }); }); }); } // overrides /** * todo: auslagern in viewmanager */ override public function setChildIndex (child:DisplayObject, index:int) : void { super.setChildIndex(child, index); } }//end-class}//end-pack