home *** CD-ROM | disk | FTP | other *** search
- package
- {
- import flash.display.Shape;
- import flash.display.Sprite;
- import flash.events.Event;
- import flash.events.KeyboardEvent;
- import flash.events.MouseEvent;
-
- public class Editor extends Level
- {
-
- private static const TEST_MODE:int = 2;
-
- private static const colorSize:Number = 18;
-
- private static const ARRANGE_MODE:int = 1;
-
- private static const CONNECTIONS_MODE:int = 0;
-
- protected static var EditInstructions:Class = Editor_EditInstructions;
-
-
- private var shift:Boolean = false;
-
- private var arrangeButton:TextButton;
-
- private var tunnelGhost:Sprite;
-
- private var shuffleButton:TextButton;
-
- private var colorHighlight:Shape;
-
- private var mode:int = 0;
-
- private var instructions:Sprite;
-
- private var minusButton:TextButton;
-
- private var helpButton:TextButton;
-
- private var modeHighlight:Shape;
-
- private var colorPanel:Sprite;
-
- private var color:int;
-
- private var testButton:TextButton;
-
- private var plusButton:TextButton;
-
- private var connButton:TextButton;
-
- public function Editor(param1:Board = null)
- {
- var _loc2_:TextButton = null;
- tunnelGhost = Tile.getTunnelGhost();
- super(param1,CUSTOM,true,false);
- connButton = _loc2_ = new TextButton(TextButton.LONG,"Connections");
- _loc2_.scaleX = _loc2_.scaleY = 0.8;
- _loc2_.x = 45;
- _loc2_.y = 15;
- _loc2_.addEventListener(MouseEvent.CLICK,connMode,false,0,true);
- addChild(_loc2_);
- arrangeButton = _loc2_ = new TextButton(TextButton.LONG,"Arrange");
- _loc2_.scaleX = _loc2_.scaleY = 0.8;
- _loc2_.x = 45;
- _loc2_.y = 35;
- _loc2_.addEventListener(MouseEvent.CLICK,arrangeMode,false,0,true);
- addChild(_loc2_);
- testButton = _loc2_ = new TextButton(TextButton.LONG,"Test");
- _loc2_.scaleX = _loc2_.scaleY = 0.8;
- _loc2_.x = 45;
- _loc2_.y = 55;
- _loc2_.addEventListener(MouseEvent.CLICK,testMode,false,0,true);
- addChild(_loc2_);
- shuffleButton = _loc2_ = new TextButton(TextButton.LONG,"Shuffle");
- _loc2_.scaleX = _loc2_.scaleY = 0.8;
- _loc2_.x = 127;
- _loc2_.y = 15;
- _loc2_.addEventListener(MouseEvent.CLICK,shuffleClick,false,0,true);
- addChild(_loc2_);
- plusButton = _loc2_ = new TextButton(TextButton.SQUARE,"-");
- _loc2_.scaleX = _loc2_.scaleY = 0.8;
- _loc2_.x = 97;
- _loc2_.y = 15;
- _loc2_.addEventListener(MouseEvent.CLICK,minusClick,false,0,true);
- addChild(_loc2_);
- minusButton = _loc2_ = new TextButton(TextButton.SQUARE,"+");
- _loc2_.scaleX = _loc2_.scaleY = 0.8;
- _loc2_.x = 119;
- _loc2_.y = 15;
- _loc2_.addEventListener(MouseEvent.CLICK,plusClick,false,0,true);
- addChild(_loc2_);
- helpButton = _loc2_ = new TextButton(TextButton.SQUARE,"?");
- _loc2_.scaleX = _loc2_.scaleY = 0.76;
- _loc2_.x = 96;
- _loc2_.y = 35;
- _loc2_.addEventListener(MouseEvent.CLICK,helpClick,false,0,true);
- addChild(_loc2_);
- color = 1;
- colorPanel = new Sprite();
- colorPanel.y = 70;
- colorPanel.x = 5;
- var _loc3_:int = 1;
- while(_loc3_ < Tile.COLORS.length)
- {
- colorPanel.graphics.beginFill(Tile.colorRGB(_loc3_,0.85));
- colorPanel.graphics.drawRect((_loc3_ - 1) * colorSize,0,colorSize,colorSize);
- colorPanel.graphics.endFill();
- _loc3_++;
- }
- addChild(colorPanel);
- colorPanel.buttonMode = true;
- colorPanel.addEventListener(MouseEvent.CLICK,colorClick,false,0,true);
- colorHighlight = new Shape();
- colorHighlight.graphics.lineStyle(0,16777181);
- colorHighlight.graphics.drawRect(0,0,colorSize - 1,colorSize - 1);
- colorPanel.addChild(colorHighlight);
- modeHighlight = new Shape();
- modeHighlight.graphics.lineStyle(0,16777181);
- modeHighlight.graphics.drawRect(-40,-10,79,19);
- addChild(modeHighlight);
- instructions = new EditInstructions();
- _loc2_ = new TextButton(TextButton.LONG,"Close");
- _loc2_.x = 200;
- _loc2_.y = 355;
- _loc2_.addEventListener(MouseEvent.CLICK,closeHelpClick,false,0,true);
- instructions.addChild(_loc2_);
- setMode(CONNECTIONS_MODE);
- if(!Game.cookie.data.editHelpShown)
- {
- showHelp();
- }
- }
-
- private function shuffleClick(param1:MouseEvent) : void
- {
- board.shuffleStart();
- }
-
- override protected function victory() : void
- {
- var _loc1_:Tile = null;
- SoundBar.playSound(SoundBar.VICTORY_SOUND,0);
- for each(_loc1_ in tiles)
- {
- _loc1_.flash();
- }
- }
-
- private function plusClick(param1:MouseEvent) : void
- {
- SoundBar.playSound(SoundBar.BUTTON_CLICK_SOUND,mouseX / Game.MIDX - 1);
- var _loc2_:int = board.size + 1;
- if(_loc2_ > Board.MAX_SIZE)
- {
- return;
- }
- disableMouse();
- removeBoard();
- addBoard(new Board(_loc2_));
- enableMouse();
- }
-
- override protected function disableMouse() : void
- {
- var _loc1_:Slot = null;
- super.disableMouse();
- for each(_loc1_ in slots)
- {
- _loc1_.removeEventListener(MouseEvent.MOUSE_DOWN,slotDown);
- }
- }
-
- private function keyDown(param1:KeyboardEvent) : void
- {
- switch(param1.keyCode)
- {
- case 16:
- shift = true;
- }
- }
-
- override protected function addedToStage(param1:Event) : void
- {
- super.addedToStage(param1);
- stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDown,false,0,true);
- stage.addEventListener(KeyboardEvent.KEY_UP,keyUp,false,0,true);
- }
-
- public function setMode(param1:int) : void
- {
- var _loc2_:Tile = null;
- for each(_loc2_ in tiles)
- {
- if(_loc2_.confirmed)
- {
- _loc2_.unconfirm();
- }
- }
- mode = param1;
- switch(mode)
- {
- case CONNECTIONS_MODE:
- Game.background.setColor(Background.GREEN);
- modeHighlight.x = connButton.x;
- modeHighlight.y = connButton.y;
- board.homePositions();
- break;
- case ARRANGE_MODE:
- Game.background.setColor(Background.YELLOW);
- modeHighlight.x = arrangeButton.x;
- modeHighlight.y = arrangeButton.y;
- board.startPositions();
- break;
- case TEST_MODE:
- Game.background.setColor(Background.ORANGE);
- modeHighlight.x = testButton.x;
- modeHighlight.y = testButton.y;
- board.startPositions();
- }
- shuffleButton.visible = mode == ARRANGE_MODE;
- plusButton.visible = mode == CONNECTIONS_MODE;
- minusButton.visible = mode == CONNECTIONS_MODE;
- colorPanel.visible = mode == CONNECTIONS_MODE;
- board.slotLayer.mouseChildren = mode == CONNECTIONS_MODE;
- }
-
- private function closeHelpClick(param1:MouseEvent) : void
- {
- SoundBar.playSound(SoundBar.BUTTON_CLICK_SOUND,mouseX / Game.MIDX - 1);
- if(instructions.parent == this)
- {
- removeChild(instructions);
- }
- }
-
- override protected function checkWin() : void
- {
- if(mode == TEST_MODE)
- {
- super.checkWin();
- }
- }
-
- private function slotDown(param1:MouseEvent) : void
- {
- var _loc2_:Slot = null;
- var _loc3_:Tile = null;
- if(mode == CONNECTIONS_MODE)
- {
- _loc2_ = param1.currentTarget as Slot;
- if(!_loc2_)
- {
- return;
- }
- _loc3_ = _loc2_.tile;
- if(!_loc3_)
- {
- return;
- }
- editTile(_loc3_,param1.shiftKey);
- }
- }
-
- override protected function addBoard(param1:Board) : void
- {
- super.addBoard(param1);
- param1.addChild(tunnelGhost);
- }
-
- protected function helpClick(param1:MouseEvent) : void
- {
- SoundBar.playSound(SoundBar.BUTTON_CLICK_SOUND,mouseX / Game.MIDX - 1);
- showHelp();
- }
-
- override public function update(param1:Event) : void
- {
- var _loc3_:Tile = null;
- var _loc4_:Number = NaN;
- if(mode != CONNECTIONS_MODE)
- {
- tunnelGhost.visible = false;
- super.update(param1);
- return;
- }
- tileGhost.visible = false;
- tunnelGhost.visible = false;
- if(shift)
- {
- return;
- }
- var _loc2_:Slot = overSlot();
- if(_loc2_)
- {
- _loc3_ = _loc2_.tile;
- }
- if(_loc3_)
- {
- tunnelGhost.visible = true;
- tunnelGhost.x = _loc3_.x;
- tunnelGhost.y = _loc3_.y;
- _loc4_ = Math.atan2(_loc3_.mouseY,_loc3_.mouseX);
- tunnelGhost.rotation = Math.floor(_loc4_ * 180 / Math.PI / 60) * 60 - 60;
- if(_loc4_ > Math.PI * 2 / 3)
- {
- if(!_loc3_.slot.sw)
- {
- tunnelGhost.visible = false;
- }
- }
- else if(_loc4_ > Math.PI / 3)
- {
- if(!_loc3_.slot.s)
- {
- tunnelGhost.visible = false;
- }
- }
- else if(_loc4_ > 0)
- {
- if(!_loc3_.slot.se)
- {
- tunnelGhost.visible = false;
- }
- }
- else if(_loc4_ > -Math.PI / 3)
- {
- if(!_loc3_.slot.ne)
- {
- tunnelGhost.visible = false;
- }
- }
- else if(_loc4_ > -Math.PI * 2 / 3)
- {
- if(!_loc3_.slot.n)
- {
- tunnelGhost.visible = false;
- }
- }
- else if(!_loc3_.slot.nw)
- {
- tunnelGhost.visible = false;
- }
- }
- }
-
- private function testMode(param1:MouseEvent = null) : void
- {
- setMode(TEST_MODE);
- SoundBar.playSound(SoundBar.BUTTON_CLICK_SOUND,mouseX / Game.MIDX - 1);
- }
-
- private function keyUp(param1:KeyboardEvent) : void
- {
- switch(param1.keyCode)
- {
- case 16:
- shift = false;
- }
- }
-
- private function showHelp() : void
- {
- Game.cookie.data.editHelpShown = true;
- addChild(instructions);
- }
-
- private function editTile(param1:Tile, param2:Boolean) : void
- {
- var _loc3_:Tile = null;
- var _loc4_:Number = NaN;
- var _loc5_:int = 0;
- if(param2)
- {
- if(param1.locked)
- {
- param1.unlock();
- }
- else
- {
- for each(_loc3_ in tiles)
- {
- if(_loc3_ != param1 && _loc3_.startSlot == param1.homeSlot)
- {
- _loc3_.startSlot = param1.startSlot;
- param1.startSlot = param1.homeSlot;
- break;
- }
- }
- param1.lock();
- }
- SoundBar.playSound(SoundBar.LOCK_SOUND,mouseX / Game.MIDX - 1);
- }
- else
- {
- _loc4_ = Math.atan2(param1.mouseY,param1.mouseX);
- _loc5_ = color;
- if(_loc4_ > Math.PI * 2 / 3)
- {
- if(param1.slot.sw)
- {
- if(param1.sw == color)
- {
- _loc5_ = 0;
- }
- param1.setSW(_loc5_);
- param1.slot.sw.tile.setNE(_loc5_);
- }
- }
- else if(_loc4_ > Math.PI / 3)
- {
- if(param1.slot.s)
- {
- if(param1.s == color)
- {
- _loc5_ = 0;
- }
- param1.setS(_loc5_);
- param1.slot.s.tile.setN(_loc5_);
- }
- }
- else if(_loc4_ > 0)
- {
- if(param1.slot.se)
- {
- if(param1.se == color)
- {
- _loc5_ = 0;
- }
- param1.setSE(_loc5_);
- param1.slot.se.tile.setNW(_loc5_);
- }
- }
- else if(_loc4_ > -Math.PI / 3)
- {
- if(param1.slot.ne)
- {
- if(param1.ne == color)
- {
- _loc5_ = 0;
- }
- param1.setNE(_loc5_);
- param1.slot.ne.tile.setSW(_loc5_);
- }
- }
- else if(_loc4_ > -Math.PI * 2 / 3)
- {
- if(param1.slot.n)
- {
- if(param1.n == color)
- {
- _loc5_ = 0;
- }
- param1.setN(_loc5_);
- param1.slot.n.tile.setS(_loc5_);
- }
- }
- else if(param1.slot.nw)
- {
- if(param1.nw == color)
- {
- _loc5_ = 0;
- }
- param1.setNW(_loc5_);
- param1.slot.nw.tile.setSE(_loc5_);
- }
- SoundBar.playSound(SoundBar.PICKUP_SOUND,mouseX / Game.MIDX - 1);
- }
- }
-
- override protected function enableMouse() : void
- {
- var _loc1_:Slot = null;
- super.enableMouse();
- for each(_loc1_ in slots)
- {
- _loc1_.buttonMode = true;
- _loc1_.addEventListener(MouseEvent.MOUSE_DOWN,slotDown,false,0,true);
- }
- }
-
- private function colorClick(param1:MouseEvent) : void
- {
- SoundBar.playSound(SoundBar.BUTTON_CLICK_SOUND,mouseX / Game.MIDX - 1);
- color = Math.max(1,Math.min(Tile.COLORS.length,colorPanel.mouseX / colorPanel.width * (Tile.COLORS.length - 1) + 1));
- colorHighlight.x = colorSize * (color - 1);
- }
-
- override protected function swapSlots(param1:Slot, param2:Slot) : void
- {
- super.swapSlots(param1,param2);
- if(mode == ARRANGE_MODE)
- {
- if(param1.tile)
- {
- param1.tile.startSlot = param1;
- }
- if(param2.tile)
- {
- param2.tile.startSlot = param2;
- }
- }
- }
-
- private function connMode(param1:MouseEvent = null) : void
- {
- setMode(CONNECTIONS_MODE);
- SoundBar.playSound(SoundBar.BUTTON_CLICK_SOUND,mouseX / Game.MIDX - 1);
- }
-
- override protected function tileDown(param1:MouseEvent) : void
- {
- var _loc2_:Tile = param1.currentTarget as Tile;
- if(!_loc2_)
- {
- return;
- }
- switch(mode)
- {
- case CONNECTIONS_MODE:
- editTile(_loc2_,param1.shiftKey);
- break;
- case TEST_MODE:
- case ARRANGE_MODE:
- super.tileDown(param1);
- }
- }
-
- override protected function removedFromStage(param1:Event) : void
- {
- super.removedFromStage(param1);
- stage.removeEventListener(KeyboardEvent.KEY_DOWN,keyDown);
- stage.removeEventListener(KeyboardEvent.KEY_UP,keyUp);
- }
-
- private function arrangeMode(param1:MouseEvent = null) : void
- {
- setMode(ARRANGE_MODE);
- SoundBar.playSound(SoundBar.BUTTON_CLICK_SOUND,mouseX / Game.MIDX - 1);
- }
-
- private function minusClick(param1:MouseEvent) : void
- {
- SoundBar.playSound(SoundBar.BUTTON_CLICK_SOUND,mouseX / Game.MIDX - 1);
- var _loc2_:int = board.size - 1;
- if(_loc2_ < Board.MIN_SIZE)
- {
- return;
- }
- disableMouse();
- removeBoard();
- addBoard(new Board(_loc2_));
- enableMouse();
- }
-
- override protected function resetClick(param1:MouseEvent) : void
- {
- var _loc2_:Tile = null;
- var _loc3_:int = 0;
- SoundBar.playSound(SoundBar.RESET_LEVEL_SOUND,0);
- if(mode == CONNECTIONS_MODE)
- {
- _loc3_ = board.size;
- disableMouse();
- removeBoard();
- addBoard(new Board(_loc3_));
- enableMouse();
- }
- else if(mode == TEST_MODE)
- {
- reset();
- }
- else
- {
- board.homePositions();
- }
- for each(_loc2_ in tiles)
- {
- _loc2_.flash();
- }
- }
- }
- }
-