home *** CD-ROM | disk | FTP | other *** search
- package game
- {
- import flash.display.MovieClip;
- import flash.display.Sprite;
- import flash.events.DataEvent;
- import flash.events.Event;
- import flash.events.KeyboardEvent;
- import flash.events.MouseEvent;
- import flash.geom.Point;
-
- public class Main extends MovieClip
- {
-
-
- private var frameSpr:Sprite;
-
- public var endMovie:EndMovie;
-
- private var cld:*;
-
- private var sdManager:SoundManager;
-
- private var frameRater:FrameRate;
-
- private var model:Model;
-
- private var currentRoomId:uint;
-
- private var loading:MovieClip;
-
- private var currentExit:Object;
-
- public var toolBar:ToolBar;
-
- private var broadCaster:BroadCaster;
-
- private var cookie:Cookie;
-
- private var nextRoom:int;
-
- public var splash:MovieClip;
-
- public var mMenu:MainMenu;
-
- public var settingField:*;
-
- private var _frameRate:Number = 30;
-
- private var selectList:UserMenu;
-
- private var currentData:Object;
-
- private var manDir:String = "right";
-
- private var roomContainer:MovieClip;
-
- public function Main()
- {
- _frameRate = 30;
- manDir = "right";
- super();
- frameSpr = new Sprite();
- addChild(frameSpr);
- frameRater = new FrameRate(frameSpr);
- stop();
- stage.tabChildren = false;
- stage.showDefaultContextMenu = false;
- stage.scaleMode = "noScale";
- Language.language = 1;
- loading = new Loading();
- loading.addEventListener("onLoadDone",init,false,0,true);
- addChild(loading);
- }
-
- private function activeRoom(param1:Event) : void
- {
- Model.state = "normal";
- Model.isSleep = false;
- model.currentRoom = cld;
- currentRoomId = nextRoom;
- model.currentRoomId = currentRoomId;
- }
-
- private function movePlayer(param1:KeyboardEvent) : void
- {
- switch(param1.keyCode)
- {
- case 37:
- Model._KEY_LEFT = true;
- break;
- case 38:
- Model._KEY_UP = true;
- break;
- case 39:
- Model._KEY_RIGHT = true;
- break;
- case 40:
- Model._KEY_DOWN = true;
- }
- }
-
- private function init(param1:Event) : void
- {
- removeChild(loading);
- loading.removeEventListener("onLoadDone",init);
- loading = null;
- this.gotoAndStop(3);
- this.gotoAndStop(1);
- sdManager = SoundManager.getInstance();
- sdManager.loadSounds();
- cookie = Cookie.getInstance();
- addEventListener(Event.ENTER_FRAME,motion);
- model = Model.getInstance();
- broadCaster = BroadCaster.getInstance();
- broadCaster.addEventListener("onSplashDone",setToolBar,false,0,true);
- broadCaster.addEventListener("onGameWin",removeRoom,false,0,true);
- broadCaster.addEventListener("onRoomRemoved",showMap,false,0,true);
- broadCaster.addEventListener("onMapRemoved",showLevel,false,0,true);
- broadCaster.addEventListener("onMapReady",activeMap,false,0,true);
- broadCaster.addEventListener("onRoomReady",activeRoom,false,0,true);
- broadCaster.addEventListener("onEnterRoom",enterNextlevel,false,0,true);
- broadCaster.addEventListener("onGameOver",onGameOver,false,0,true);
- broadCaster.addEventListener("onEnterGame",enterGame,false,0,true);
- broadCaster.addEventListener("onQuitGame",initGame,false,0,true);
- broadCaster.addEventListener("doorRemoved",scaleBack,false,0,true);
- broadCaster.addEventListener("onEnterNewRoom",setCurrentRoom,false,0,true);
- broadCaster.addEventListener("onFindFile",addNewFile,false,0,true);
- broadCaster.addEventListener("onPlayerDied",onPlayerDied,false,0,true);
- stage.addEventListener(MouseEvent.MOUSE_MOVE,dragTT);
- stage.addEventListener(MouseEvent.MOUSE_UP,stopddd);
- stage.addEventListener(KeyboardEvent.KEY_UP,changeRotation);
- stage.addEventListener(KeyboardEvent.KEY_DOWN,movePlayer);
- initGame();
- }
-
- private function saveValue(param1:String, param2:Number) : void
- {
- var _loc3_:* = undefined;
- _loc3_ = currentData[param1];
- _loc3_ = _loc3_ == null ? 0 : _loc3_;
- _loc3_ += param2;
- currentData[param1] = _loc3_;
- }
-
- private function showMap(param1:Event) : void
- {
- Model.state = "";
- cld.alpha = 0.1;
- cld.setPlayer(manDir);
- cld.resetPlayerPosition(currentExit.x,currentExit.y);
- cld.showMap();
- }
-
- private function setCurrentRoom(param1:DataEvent) : void
- {
- toolBar.maps.setCurrentRoom(param1);
- }
-
- private function initGame(param1:Event = null) : void
- {
- var e:Event = param1;
- try
- {
- Model.state = "";
- model.currentRoom.remove();
- model.clearState();
- removeChild(toolBar);
- removeChild(roomContainer);
- roomContainer = null;
- toolBar = null;
- }
- catch(e:Error)
- {
- }
- sdManager.clearAllSounds();
- selectList = new UserMenu();
- addChild(selectList);
- stage.focus = stage;
- }
-
- private function removeData() : void
- {
- var _loc1_:* = undefined;
- var _loc2_:Array = null;
- var _loc3_:Object = null;
- var _loc4_:Object = null;
- var _loc5_:Object = null;
- var _loc6_:Object = null;
- var _loc7_:Object = null;
- var _loc8_:Number = NaN;
- var _loc9_:Number = NaN;
- var _loc10_:Number = NaN;
- var _loc11_:Number = NaN;
- var _loc12_:Number = NaN;
- var _loc13_:int = 0;
- var _loc14_:int = 0;
- var _loc15_:Number = NaN;
- var _loc16_:Number = NaN;
- var _loc17_:Number = NaN;
- var _loc18_:Number = NaN;
- var _loc19_:Number = NaN;
- var _loc20_:Object = null;
- var _loc21_:Object = null;
- var _loc22_:Array = null;
- _loc1_ = currentData.cleared;
- _loc1_ = _loc1_ == null ? 0 : _loc1_;
- _loc1_++;
- currentData.cleared = _loc1_;
- _loc2_ = new Array();
- _loc3_ = {
- "time":0,
- "die":0,
- "run":0,
- "rotate":0,
- "jump":0
- };
- _loc4_ = currentData.data1;
- _loc5_ = currentData.data2;
- _loc6_ = currentData.data3;
- _loc7_ = currentData.data4;
- _loc2_.push(_loc4_ == null ? _loc3_ : _loc4_);
- _loc2_.push(_loc5_ == null ? _loc3_ : _loc5_);
- _loc2_.push(_loc6_ == null ? _loc3_ : _loc6_);
- _loc2_.push(_loc7_ == null ? _loc3_ : _loc7_);
- _loc8_ = Number(currentData.time);
- _loc9_ = Number(currentData.died);
- _loc10_ = Number(currentData.ran);
- _loc11_ = Number(currentData.rotated);
- _loc12_ = Number(currentData.jumped);
- _loc9_ = isNaN(_loc9_) ? 0 : _loc9_;
- _loc13_ = 0;
- while(_loc13_ < _loc2_.length)
- {
- if(_loc13_ != -nextRoom - 1)
- {
- _loc8_ -= _loc2_[_loc13_].time;
- _loc9_ -= _loc2_[_loc13_].die;
- _loc10_ -= _loc2_[_loc13_].run;
- _loc11_ -= _loc2_[_loc13_].rotate;
- _loc12_ -= _loc2_[_loc13_].jump;
- }
- _loc13_++;
- }
- _loc14_ = -nextRoom - 1;
- _loc15_ = _loc8_ - _loc2_[_loc14_].time;
- _loc16_ = _loc9_ - _loc2_[_loc14_].die;
- _loc17_ = _loc10_ - _loc2_[_loc14_].run;
- _loc18_ = _loc11_ - _loc2_[_loc14_].rotate;
- _loc19_ = _loc12_ - _loc2_[_loc14_].jump;
- _loc20_ = currentData["minData" + -nextRoom];
- _loc21_ = new Object();
- _loc22_ = new Array();
- _loc21_.newData = _loc22_;
- getMinData(_loc20_,_loc21_,_loc15_,"time");
- getMinData(_loc20_,_loc21_,_loc16_,"die");
- getMinData(_loc20_,_loc21_,_loc17_,"run");
- getMinData(_loc20_,_loc21_,_loc18_,"rotate");
- getMinData(_loc20_,_loc21_,_loc19_,"jump");
- _loc21_.time = _loc20_ != null && _loc20_.time < _loc15_ ? _loc20_.time : _loc15_;
- _loc21_.die = _loc20_ != null && _loc20_.die < _loc16_ ? _loc20_.die : _loc16_;
- _loc21_.run = _loc20_ != null && _loc20_.run < _loc17_ ? _loc20_.run : _loc17_;
- _loc21_.rotate = _loc20_ != null && _loc20_.rotate < _loc18_ ? _loc20_.rotate : _loc18_;
- _loc21_.jump = _loc20_ != null && _loc20_.jump < _loc19_ ? _loc20_.jump : _loc19_;
- _loc21_.id = -nextRoom;
- Model.ExitData = _loc21_;
- currentData["data" + -nextRoom] = {
- "time":_loc8_,
- "die":_loc9_,
- "run":_loc10_,
- "rotate":_loc11_,
- "jump":_loc12_
- };
- currentData["minData" + -nextRoom] = Model.ExitData;
- cookie.saveData();
- cookie.saveValue(null,"currentRoom");
- Model.cData = null;
- }
-
- private function scaleBack(param1:Event) : void
- {
- model.currentRoom.scaleBack();
- }
-
- private function changeRotation(param1:KeyboardEvent) : void
- {
- if(model.currentRoom != null && !Model.disableKeyBoard && !Model.isGameOver)
- {
- switch(param1.keyCode)
- {
- case 88:
- if(Model.state == "normal" && Model.isStatic)
- {
- ++Model.rotated;
- model.clearState(false);
- this.toolBar.maps.setRotation(90);
- model.currentRoom.setRotation(90);
- }
- break;
- case 90:
- if(Model.state == "normal" && Model.isStatic)
- {
- ++Model.rotated;
- model.clearState(false);
- model.currentRoom.setRotation(-90);
- this.toolBar.maps.setRotation(-90);
- }
- }
- }
- switch(param1.keyCode)
- {
- case 37:
- Model._KEY_LEFT = false;
- break;
- case 38:
- Model._KEY_UP = false;
- break;
- case 39:
- Model._KEY_RIGHT = false;
- break;
- case 40:
- Model._KEY_DOWN = false;
- }
- }
-
- private function showLevel(param1:Event) : void
- {
- }
-
- private function enterNextlevel(param1:DataEvent) : void
- {
- var _loc2_:Array = null;
- var _loc3_:uint = 0;
- var _loc4_:* = undefined;
- var _loc5_:Object = null;
- var _loc6_:Point = null;
- Model.state = "";
- _loc2_ = param1.data.split(":");
- nextRoom = Number(_loc2_[0]);
- _loc3_ = Number(_loc2_[1]);
- if(nextRoom >= 0)
- {
- model.currentRoom.removeMap();
- _loc4_ = model.currentRoom.getBorder();
- _loc5_ = model.getRoomLocation(nextRoom);
- cld = new Room(nextRoom,_loc3_);
- cld.setPlayer(manDir);
- Model.cData.roomId = nextRoom;
- Model.cData.entranceId = _loc3_;
- Model.cData.rotation = Model.rotation;
- Model.cData.ateBooks = toolBar.files.files;
- cookie.saveValue(Model.cData,"currentRoom");
- broadCaster.run("onEnterNewRoom",String(nextRoom));
- roomContainer.addChild(cld);
- _loc6_ = model.currentRoom.container.localToGlobal(new Point(_loc5_.x * 50,_loc5_.y * 50));
- cld.x = _loc6_.x;
- cld.y = _loc6_.y;
- cld.scaleX = cld.scaleY = 2 / 9;
- model.clearState();
- cld.showRoom();
- }
- else
- {
- onGameWin();
- }
- }
-
- private function removeRoom(param1:DataEvent) : void
- {
- var _loc2_:Object = null;
- var _loc3_:Array = null;
- var _loc4_:* = undefined;
- var _loc5_:Point = null;
- saveData();
- _loc2_ = model.getRoomLocation(currentRoomId);
- _loc3_ = param1.data.split(":");
- manDir = _loc3_[1];
- currentExit = model.getExit(currentRoomId,_loc3_[0]);
- cld = new Room(0);
- cld.alpha = 0;
- roomContainer.addChild(cld);
- _loc4_ = cld.getBorder();
- _loc5_ = cld.container.localToGlobal(new Point(_loc2_.x * 50,_loc2_.y * 50));
- model.currentRoom.removeRoom(_loc5_.x,_loc5_.y);
- model.clearState();
- }
-
- private function activeMap(param1:Event) : void
- {
- Model.state = "map";
- model.currentRoom = cld;
- }
-
- private function setToolBar(param1:Event = null) : void
- {
- frameRater.cFrameRate = 60;
- removeChild(splash);
- splash = null;
- toolBar = new ToolBar();
- settingField = toolBar.settting;
- sdManager.playSound("mainBg",SoundManager.TYPE_BG);
- roomContainer = new MovieClip();
- addChild(roomContainer);
- addChild(toolBar);
- startGame();
- }
-
- private function addNewFile(param1:DataEvent) : void
- {
- toolBar.files.addNewFile(param1);
- }
-
- private function stopddd(param1:MouseEvent) : void
- {
- var e:MouseEvent = param1;
- try
- {
- toolBar.files._stopDrag();
- }
- catch(e:Error)
- {
- }
- }
-
- private function showScore(param1:Event) : void
- {
- var _loc2_:MovieClip = null;
- endMovie.removeEventListener("onEndMovieDone",showScore);
- removeChild(endMovie);
- endMovie = null;
- _loc2_ = new GameWin();
- addChild(_loc2_);
- _loc2_.addEventListener("onGameWinMovieDone",initGame,false,0,true);
- }
-
- private function onPlayerDied(param1:DataEvent) : void
- {
- Model.isGameOver = true;
- Model.getInstance().clearState(false);
- model.currentRoom.player.onPlayerDied();
- }
-
- private function dragTT(param1:MouseEvent) : void
- {
- var e:MouseEvent = param1;
- try
- {
- toolBar.files.setTxt();
- }
- catch(e:Error)
- {
- }
- }
-
- private function motion(param1:Event) : void
- {
- var e:Event = param1;
- try
- {
- settingField.update();
- }
- catch(e:Error)
- {
- }
- if(model.currentRoom != null && !Model.disableKeyBoard)
- {
- Model.isStatic = true;
- model.currentRoom.update();
- if(Model.isGameOver)
- {
- Model.isSleep = false;
- }
- else if(Model.isStatic)
- {
- Model.isSleep = true;
- }
- }
- }
-
- private function onGameWin() : void
- {
- removeData();
- Model.state = "";
- model.currentRoom.remove();
- model.clearState();
- removeChild(toolBar);
- removeChild(roomContainer);
- roomContainer = null;
- toolBar = null;
- sdManager.clearAllSounds();
- endMovie = new EndMovie();
- endMovie.x = 320;
- endMovie.y = 240;
- frameRater.cFrameRate = 30;
- addChild(endMovie);
- endMovie.addEventListener("onEndMovieDone",showScore,false,0,true);
- }
-
- private function saveData() : void
- {
- var _loc1_:Room = null;
- _loc1_ = model.currentRoom;
- saveValue("jumped",Model.jumped);
- saveValue("rotated",Model.rotated);
- saveValue("died",Model.died);
- saveValue("ran",Model.ran);
- toolBar.files.saveBook();
- currentData.hasP = Model.hasP;
- currentData["room" + currentRoomId] = {
- "keys":_loc1_._keys,
- "doors":_loc1_._doors
- };
- toolBar.maps.saveHiddenMap();
- toolBar.maps.setPrevRoom(String(currentRoomId));
- saveTime();
- cookie.saveData();
- Model.resetData();
- }
-
- private function startGame(param1:Event = null) : void
- {
- var _loc2_:int = 0;
- var _loc3_:Room = null;
- stage.focus = stage;
- Model.isGameOver = false;
- if(Model.cData == null)
- {
- currentRoomId = 1;
- _loc2_ = -2;
- Model.rotation = 0;
- Model.cData = {
- "roomId":currentRoomId,
- "entranceId":_loc2_,
- "rotation":Model.rotation
- };
- }
- else
- {
- currentRoomId = Model.cData.roomId;
- _loc2_ = int(Model.cData.entranceId);
- Model.rotation = Model.cData.rotation;
- }
- model.currentRoomId = currentRoomId;
- Model.state = "normal";
- toolBar.reset();
- _loc3_ = new Room(currentRoomId,_loc2_);
- _loc3_.setPlayer(manDir);
- broadCaster.run("onEnterNewRoom",String(currentRoomId));
- roomContainer.addChild(_loc3_);
- model.currentRoom = _loc3_;
- }
-
- private function onGameOver(param1:DataEvent) : void
- {
- ++Model.died;
- Model.disableKeyBoard = false;
- Model.state = "";
- model.currentRoom.remove();
- model.clearState();
- startGame();
- }
-
- private function getMinData(param1:Object, param2:Object, param3:*, param4:String) : void
- {
- if(param1 == null || param3 < param1[param4])
- {
- param2[param4] = param3;
- param2.newData.push(param4);
- }
- else
- {
- param2[param4] = param1[param4];
- }
- }
-
- private function enterGame(param1:Event) : void
- {
- currentData = model.getCurrentData();
- Model.cData = cookie.getValue("currentRoom");
- selectList = null;
- splash = new SplashMovie();
- frameRater.cFrameRate = 30;
- addChild(splash);
- sdManager.playSound("splash",SoundManager.TYPE_BG);
- Model.resetData();
- stage.focus = stage;
- }
-
- private function saveTime() : void
- {
- toolBar.settting.saveTime();
- }
- }
- }
-