//Tiina Vuorenmaa //Sr Proj - Itera //Started: 6/3/2010 //Updated: 9/30/2010 //Main.as //here is where everything is put together package { //import from flash import flash.system.Security; import flash.system.System; import flash.display.MovieClip; import flash.geom.ColorTransform; import flash.events.MouseEvent; import flash.events.KeyboardEvent; import flash.ui.Keyboard; //for saving to php/mysql import flash.net.URLVariables; import flash.net.URLRequest; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequestMethod; import flash.net.navigateToURL; import flash.external.ExternalInterface; import flash.events.Event; import flash.ui.Mouse; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundTransform; //mvc imports import model.* import view.*; import controller.*; public class Main extends MovieClip { //variables //for the customize section private var _clothingModel:ClothingModel; private var _clothingController:ClothingController; private var _extrasModel:ExtrasModel; private var _extrasController:ExtrasController; private var _avatarModel:AvatarModel; private var _avatarController:AvatarController; private var _myAvatar:AvatarView; //view avatar clothing and extras private var _nexusModel:NexusModel; private var _nexusController:NexusController; private var _myNexus:NexusView; //views nexus (seat, bkg and tint) //different parts of the user model private var _userModel:UserModel; private var _userController:UserController; //level, energy, xp - things that change private var _userStaticModel:UserStaticModel; private var _userStaticController:UserStaticController; //id,name - only get once private var _userLockedModel:UserLockedModel; private var _userLockedController:UserLockedController; //deals with karma and customize btns that are locked private var _userNeighborsModel:UserNeighborsModel; private var _userNeighborsController:UserNeighborsController; private var _userFriendsModel:UserFriendsModel; private var _userFriendsController:UserFriendsController; private var _friendsView:FriendsView; private var _userAvatarModel:UserAvatarModel; private var _userAvatarController:UserAvatarController; private var _userPostModel:UserPostModel; private var _userPostController:UserPostController; private var _dailyQuoteModel:DailyQuoteModel; private var _dailyQuoteController:DailyQuoteController; private var _neighborModel:CurrentNeighborModel; private var _neighborController:CurrentNeighborController; private var _neighborsView:NeighborsView; private var _receiveKarmaModel:ReceiveKarmaModel; private var _receiveKarmaController:ReceiveKarmaController; private var _sendKarmaModel:SendKarmaModel; private var _sendKarmaController:SendKarmaController; private var _karmaModel:KarmaModel; private var _karmaController:KarmaController; private var _karmaView:KarmaView; private var _postsModel:PostsModel; private var _postsController:PostsController; private var _postsView:PostsView; private var _customizeModel:CustomizeModel; private var _tabModel:TabModel; private var _sectionModel:CustomizeSectionModel; private var _customizeController:CustomizeController; private var _tabController:TabController; private var _sectionController:CustomizeSectionController; private var _customizeView:CustomizeView; private var _avatarPrice:Number; private var _newNeighbor:String; //saving to file private var uploadedVariables:URLVariables; private var uploadRequest:URLRequest; private var uploader:URLLoader; //loading info private var downloadedVariables:URLVariables; private var downloadRequest:URLRequest; private var downloader:URLLoader; var downloadedAvatarArray:Array = new Array(); //zoom variables private var zoomDragY:Number; private var zoomY:Number; private const ZOOMBARMIDDLE:Number = 258.10; //exit and saving from customize menu private var saveExitCustomizeBtn:SaveAvatarBtn = new SaveAvatarBtn(); private var cancelCustomizeBtn:RoundCancelBtn = new RoundCancelBtn(); //if there are no posts or neighbors // the buttons for the mini message private var _inviteBtn:InviteSimpleButton; private var _addNeighborBtn:AddNeighborSimpleButton; private var _sendDailyBtn:DailyKarmaSimpleButton; private var _sendGiftBtn:GiftKarmaSimpleButton; private var _invitedBy:String; private var _invitedByID:String; private var _currentPage:String; //helpscreen scrollbars private var _scrollBar:TallScrollBar = new TallScrollBar(); //scroll bar colors private var scrollColorTransform:ColorTransform = new ColorTransform(); // mini tutorial private var _tutorial:Boolean; //sounds private var _bkgMusic:Sound = new Sound(); private var _rewardSound:Sound = new Sound(); private var _dingSound:Sound = new Sound(); private var _musicChannel:SoundChannel = new SoundChannel(); private var _soundChannel:SoundChannel = new SoundChannel(); private var _musicVolume:SoundTransform; private var _soundVolume:SoundTransform; private var _basicLevelXPArray:Array; private var _tempBoughtPartsSectionArray:Array; private var _tempBoughtPartsArray:Array; public function Main ():void { //this begins the game //in setupMain, there is a "cover" //the cover is removed when the user info is done dowloading //ExternalInterface.addCallback("sendInviteInfoToFlash", getInviteInfoFromJavaScript); //for security issues since the index.php is now on apps.facebook.com and the swf is still on itera-game.com Security.allowDomain("itera-game.com"); setupMain(); trace("in Main class"); _currentPage = "Home"; _tutorial = true; _tempBoughtPartsSectionArray = new Array(); _tempBoughtPartsArray = new Array(); _bkgMusic.load(new URLRequest("sounds/itera_bkgsound.mp3")); _rewardSound.load(new URLRequest("sounds/itera_ding_reward.mp3")); _dingSound.load(new URLRequest("sounds/itera_ding_message.mp3")); //_musicChannel = _bkgMusic.play(0,999); _musicVolume = new SoundTransform(0.8,0); _musicChannel.soundTransform = _musicVolume; _soundVolume = new SoundTransform(0.8,0); _soundChannel.soundTransform = _soundVolume; //_soundChannel = _rewardSound.play(5,0); //_soundChannel = _dingSound.play(15,0); }//end contructor //beginning functions with javascript function getInviteIDFromJavaScript(a_inviteID:String):void { _invitedByID = a_inviteID; } function getInviteNameFromJavaScript(a_inviteName:String):void { _invitedBy = a_inviteName; showMiniMessage("Welcome to Itera"); } function getKarmaInfoFromJavaScript(str:String):void { trace("Karma From JavaScript: " + str); } private function setupMain():void { //for the avatar _avatarModel = new AvatarModel(); _avatarController = new AvatarController(_avatarModel); _clothingModel = new ClothingModel(); _clothingController = new ClothingController(_clothingModel); _extrasModel = new ExtrasModel(); _extrasController = new ExtrasController(_extrasModel); //views avatar, clothing and extras _myAvatar = new AvatarView(_avatarModel, _clothingModel, _extrasModel); //for the nexus _nexusModel = new NexusModel(); _nexusController = new NexusController(_nexusModel); _myNexus = new NexusView(_nexusModel); //customize section _customizeModel = new CustomizeModel(); _tabModel = new TabModel(); _sectionModel = new CustomizeSectionModel(); _customizeController = new CustomizeController(_customizeModel); _tabController = new TabController(_tabModel); _sectionController = new CustomizeSectionController(_sectionModel); _customizeView = new CustomizeView(_customizeModel,_tabModel, _sectionModel, _customizeController, _tabController, _sectionController, _avatarController, _clothingController, _extrasController, _nexusController); //user model and variations _userModel = new UserModel(); _userController = new UserController(_userModel); //energy, level, xp _userAvatarModel = new UserAvatarModel(); _userAvatarController = new UserAvatarController(_userAvatarModel); //avatar _userNeighborsModel = new UserNeighborsModel(); _userNeighborsController = new UserNeighborsController(_userNeighborsModel); //neighbors array _userFriendsModel = new UserFriendsModel(); _userFriendsController = new UserFriendsController(_userFriendsModel); //friends array _userPostModel = new UserPostModel(); _userPostController = new UserPostController(_userPostModel); //my posts _userLockedModel = new UserLockedModel(); _userLockedController = new UserLockedController(_userLockedModel); //locked animal array for karma/customize (only on level up) _userStaticModel = new UserStaticModel(); _userStaticController = new UserStaticController(_userStaticModel); //id and name and animal array (once) _dailyQuoteModel = new DailyQuoteModel(); _dailyQuoteController = new DailyQuoteController(_dailyQuoteModel); //daily quote (once) //posts (view is below) _postsModel = new PostsModel(); _postsController = new PostsController(_postsModel); //neighbor (view is below) _neighborModel = new CurrentNeighborModel(); _neighborController = new CurrentNeighborController(_neighborModel); //karma section _karmaModel = new KarmaModel(); _karmaController = new KarmaController(_karmaModel); _sendKarmaModel = new SendKarmaModel(); _sendKarmaController = new SendKarmaController(_sendKarmaModel); _receiveKarmaModel = new ReceiveKarmaModel(); _receiveKarmaController = new ReceiveKarmaController(_receiveKarmaModel); _karmaView = new KarmaView(_karmaModel, _sendKarmaModel, _receiveKarmaModel, _userModel, _userStaticModel, _sendKarmaController, _userController); //_friendsView view uses neighbor model and a bunch others so it needs to be below them _friendsView = new FriendsView(_userFriendsModel, _customizeModel, _neighborModel, _neighborController, _customizeView); //postsview needs to be down here because it uses the neighborcontroller _postsView = new PostsView(_postsModel, _userStaticModel, _userPostModel, _karmaModel, _sendKarmaController, _neighborController); //neighbors view uses the posts view so it needs to be below it _neighborsView = new NeighborsView(_userNeighborsModel, _neighborModel, _neighborController, _customizeModel, _sendKarmaModel, _postsView, _customizeView); _myNexus.x = 0; _myNexus.y = 0; nexusHolder.addChild(_myNexus); _myAvatar.x = 0; _myAvatar.y = 75; avatarHolder.addChild(_myAvatar); avatarHolder.scaleX = 0.8; avatarHolder.scaleY = 0.8; avatarHolder.x = 380; avatarHolder.y = 316; zoomDragBtn.y = 254.3; _neighborsView.x = 0; _neighborsView.y = 450; addChild(_neighborsView); _customizeView.x = 0; _customizeView.y = 1425; addChild(_customizeView); _customizeController.setUpArrays(); addZoomFeature(); mainMenu.x = 688; mainMenu.y = 368; myPost.scaleX = 0; createPost.scaleX = 0; dailyQuote.scaleX = 0; mainMenu.scaleX = 1; mainMenuBtn.x = 688; mainMenuBtn.y = 362; mainMenuBtn.buttonMode = true; mainMenu.myAvatarBtn.addEventListener(MouseEvent.CLICK, closeMainMenu); mainMenu.myPostBtn.addEventListener(MouseEvent.CLICK, closeMainMenu); mainMenu.sendKarmaBtn.addEventListener(MouseEvent.CLICK, closeMainMenu); mainMenu.viewPostsBtn.addEventListener(MouseEvent.CLICK, closeMainMenu); mainMenu.dailyQuoteBtn.addEventListener(MouseEvent.CLICK, closeMainMenu); mainMenuBtn.addEventListener(MouseEvent.CLICK, closeMainMenu); //top nav buttons topNexusBtn.addEventListener(MouseEvent.CLICK, topNavBtnClicked); topCustomizeBtn.addEventListener(MouseEvent.CLICK, topNavBtnClicked); topCreateBtn.addEventListener(MouseEvent.CLICK, topNavBtnClicked); topReadAllBtn.addEventListener(MouseEvent.CLICK, topNavBtnClicked); topGiftBtn.addEventListener(MouseEvent.CLICK, topNavBtnClicked); topInviteBtn.addEventListener(MouseEvent.CLICK, openFacebookInviteWindow); topHelpBtn.addEventListener(MouseEvent.CLICK, topNavBtnClicked); windowScreen.x = 1000; windowScreen.y = 1000; windowScreen.addChild(_scrollBar); //custom events from neighbors section and others _neighborsView.addEventListener("go to SendKarmaView", dispatchEventsToMain); _friendsView.addEventListener("go to SendKarmaView", dispatchEventsToMain); _neighborsView.addEventListener("go to RespondKarmaView", dispatchEventsToMain); _postsView.addEventListener("go to RespondKarmaView", dispatchEventsToMain); //same but from posts _postsView.addEventListener("noPosts", dispatchEventsToMain); _postsView.addEventListener("noMyPosts", dispatchEventsToMain); _neighborsView.addEventListener("noNeighbors", dispatchEventsToMain); _neighborsView.addEventListener("go to NeighborPostsView", dispatchEventsToMain); _neighborsView.addEventListener("close NeighborPostsView", dispatchEventsToMain); _neighborsView.addEventListener("close RespondKarmaView", dispatchEventsToMain); _postsView.addEventListener("close AllPostsView", dispatchEventsToMain); _neighborsView.addEventListener("viewing Neighbor Nexus", dispatchEventsToMain); _friendsView.addEventListener("viewing Neighbor Nexus", dispatchEventsToMain); _friendsView.addEventListener("send neighbor request", dispatchEventsToMain); _karmaView.addEventListener("send karma request", dispatchEventsToMain); _karmaView.addEventListener("send karma multifriend request", dispatchEventsToMain); _neighborsView.addEventListener("view list of friends", dispatchEventsToMain); _userController.addEventListener("level up the User", dispatchEventsToMain); gotKarmaBtn.buttonMode = false; gotKarmaBtn.mouseChildren = false; gotKarmaBtn.alpha = 0; gotKarmaBtn.scaleX = 0; addChild(openingCover); downloadUserInfo("fake"); _basicLevelXPArray= [0,0,25,500,1500,2600,3800,5100,6500,8000,9600]; //top xp for each level starting with level 1=0, level2=25; //openingCover.enterIteraBtn.addEventListener(MouseEvent.CLICK, mouseEnterItera); //this.addEventListener(KeyboardEvent.KEY_DOWN, keyboardEnterItera); //openingCover.inputName.addEventListener(MouseEvent.CLICK, clearField); //listen for change in the user model and change the view //the user model will change once the user info is done downloading _userModel.addEventListener(UserModel.UPDATE, updateUserInfo); _userAvatarModel.addEventListener(UserAvatarModel.UPDATE, viewCurrentUser); //_userNeighborsModel.addEventListener(UserNeighborModel.UPDATE, viewCurrentNeighbors); _userModel.addEventListener(UserModel.UPDATE, viewCurrentPost); var theResult = ExternalInterface.call("checkingInvitesFromFlash", "yes"); } //top nav buttons click private function topNavBtnClicked(event:MouseEvent):void { //clear all windowScreen.x = 1000; windowScreen.y = 1000; _neighborsView.closeNeighborInfoAndBigBox(); saveExitCustomizeBtn.x = 6880; cancelCustomizeBtn.y = 6880; _customizeView.y = 1425; mainMenuBtn.gotoAndStop("off"); mainMenu.scaleX =0; myPost.scaleX = 0; createPost.scaleX = 0; dailyQuote.scaleX = 0; switch (event.target.name) { case "topNexusBtn": trace("closing all and viewing my nexus"); //all closed above break; case "topCustomizeBtn": trace("closing window and neighbor screens to customize"); openCustomizeView(); mainMenuBtn.gotoAndStop("on"); break; case "topCreateBtn": trace("closing all to view create my post"); openCreatePostView(); break; case "topReadAllBtn": trace("viewing window screen - all posts"); downloadPostArray("0"); break; case "topGiftBtn": trace("viewing window screen: Gift a Karma"); openSendKarmaView("mainMenu"); break; case "topHelpBtn": trace("viewing help screen"); showHelpScreen(); break; default: break; }//end switch } /// CHANGING the USER VIEW /// //loading the avatar public function viewCurrentUser(event:Event):void { _customizeView.loadCurrentAvatar(_userAvatarModel.savedAvatarArray); } public function updateUserInfo(event:Event):void { energyNum.text = String(_userModel.userEnergy); xpBar.xpNum.text = String(_userModel.userXP); updateXPBar(); level.levelNum.text = String(_userModel.userLevel); nexusName.text = _userStaticModel.userName +"'s Nexus"; } public function updateXPBar():void { //get the total number of XP to next level var totalXP:Number = _basicLevelXPArray[_userModel.userLevel+1] - _basicLevelXPArray[_userModel.userLevel]; var xpRatio:Number = ((_userModel.userXP - _basicLevelXPArray[_userModel.userLevel])/totalXP) * 180; //find how far the user has gone xpBar.xpScale.x = -93 + xpRatio; } function viewHomeNexus(event:MouseEvent):void { topNexusBtn.removeEventListener(MouseEvent.CLICK, viewHomeNexus); mainMenuBtn.removeEventListener(MouseEvent.CLICK, viewHomeNexus); mainMenuBtn.gotoAndStop("off"); mainMenuBtn.addEventListener(MouseEvent.CLICK, goBackToMainMenu); _customizeView.loadCurrentAvatar(_userAvatarModel.savedAvatarArray); _customizeView.y = 1425; _userModel.homeNexus = true; } // DISPATCH EVENTS TO MAIN // private function dispatchEventsToMain(event:Event):void { trace(event.type); switch(event.type) { case "noPosts": showMiniMessage("noPosts"); break; case "noMyPosts": showMiniMessage("noMyPosts"); break; case "noNeighbors": showMiniMessage("noNeighbors"); break; case "level up the User": _userLockedController.createLockedArray(_userStaticModel.userAnimalArray, _userModel.userLevel); showMiniMessage("levelUp"); break; case "view list of friends": openAddNeighborView(); break; case "send neighbor request": uploadNewNeighborRequest(); //showMiniMessage("Confirm Neighbor Request"); break; case "send karma request": trace("sending karma request"); uploadNewKarmaRequest(); // showMiniMessage("Confirm Karma Request"); break; case "sendMultiKarmaRequest": sendMultiKarmaRequest(); break; case "viewing Neighbor Nexus": windowScreen.x = 1000; windowScreen.y = 1000; _userModel.homeNexus = false; energyNum.text = String(_neighborModel.neighborEnergy); xpBar.xpNum.text = String(_neighborModel.neighborXP); level.levelNum.text = String(_neighborModel.neighborLevel); nexusName.text = _neighborModel.neighborName +"\'s Nexus"; mainMenu.scaleX = 0; topNexusBtn.addEventListener(MouseEvent.CLICK, viewHomeNexus); mainMenuBtn.addEventListener(MouseEvent.CLICK, viewHomeNexus); mainMenuBtn.gotoAndStop("goHome"); break; case "close AllPostsView": //this one is coming from posts view windowScreen.closeBtn.removeEventListener(MouseEvent.CLICK, closeAllPostsView); windowScreen.x = 1000; windowScreen.y = 1000; _postsView.x = 4535; break; case "go to SendKarmaView": openSendKarmaView(_neighborModel.neighborName); break; case "go to RespondKarmaView": openResponseKarmaView(_neighborModel.neighborName); break; case "go to NeighborPostsView": downloadPostArray(_neighborModel.neighborID); break; case "close NeighborPostsView": _postsView.x = 4535; break; case "close RespondKarmaView": _karmaView.x = 4535; break; default: trace("problem"); break; } } ////////// USER INFO: AVATARS etc. downloading and uploading // //uploads the saved avatar to the correct userID private function uploadUserInfo(a_userID:String):void { //flash variables I'm sending with the urlrequest var uploadedVariables:URLVariables = new URLVariables; var arrayToUpload:Array = createCurrentAvatarArray(); //trace("uploading = "+arrayToUpload); trace("uploading info for = " +a_userID); uploadedVariables.userID = a_userID; uploadedVariables.userLevel = _userModel.userLevel; uploadedVariables.userEnergy = _userModel.userEnergy; uploadedVariables.userXP = _userModel.userXP; //trace("uploading = "+uploadedVariables); //the url request //the file should be a separate processing php file to connect with the database var uploadRequest = new URLRequest("http://www.itera-game.com/upload_user_info.php"); //the method is POST so that the variables don't show in the http url //but since it is a processing php file, it won't show up at all uploadRequest.method = URLRequestMethod.POST; // the variables are added to the data to send to the php file //php file can get the variable using $_POST["filename"] uploadRequest.data = uploadedVariables; //the load will load the requiest var uploader = new URLLoader(); uploader.dataFormat = URLLoaderDataFormat.VARIABLES; //when it is loaded let me know (plus other stuff) uploader.addEventListener(Event.COMPLETE,doneUploadingUserInfo); //load it try { uploader.load(uploadRequest); } catch (error:Error) { trace("Unable to load URL: " + error); } } private function doneUploadingUserInfo(event:Event):void { trace("uploaded"); //once it is loaded, you can get data from the php file with uploader //in this instance the php file created an xml file as output var checkLoader:URLLoader = URLLoader(event.target); var checkUploadedVariables:URLVariables = new URLVariables(checkLoader.data); trace(checkLoader.data); //trace(checkUploadedVariables.theResult); //trace(checkUploadedVariables.theResult); } private function uploadSavedAvatar(a_userID:String):void { //flash variables I'm sending with the urlrequest var uploadedVariables:URLVariables = new URLVariables; var arrayToUpload:Array = createCurrentAvatarArray(); //trace("uploading = "+arrayToUpload); trace("uploading = " +a_userID); uploadedVariables.userID = a_userID; uploadedVariables.userEnergy = _userModel.userEnergy; uploadedVariables.avatarPart00 = arrayToUpload[0]; uploadedVariables.avatarPart01 = arrayToUpload[1]; uploadedVariables.avatarPart02 = arrayToUpload[2]; uploadedVariables.avatarPart03 = arrayToUpload[3]; uploadedVariables.avatarPart04 = arrayToUpload[4]; uploadedVariables.avatarPart05 = arrayToUpload[5]; uploadedVariables.avatarPart06 = arrayToUpload[6]; uploadedVariables.avatarPart07 = arrayToUpload[7]; uploadedVariables.avatarPart08 = arrayToUpload[8]; uploadedVariables.avatarPart09 = arrayToUpload[9]; uploadedVariables.avatarPart10 = arrayToUpload[10]; uploadedVariables.avatarPart11 = arrayToUpload[11]; uploadedVariables.avatarPart12 = arrayToUpload[12]; uploadedVariables.avatarPart13 = arrayToUpload[13]; uploadedVariables.avatarPart14 = arrayToUpload[14]; uploadedVariables.avatarPart15 = arrayToUpload[15]; uploadedVariables.avatarPart16 = arrayToUpload[16]; uploadedVariables.avatarPart17 = arrayToUpload[17]; uploadedVariables.avatarPart18 = arrayToUpload[18]; uploadedVariables.avatarPart19 = arrayToUpload[19]; trace("_tempBoughtPartsArray.length = " + _tempBoughtPartsArray.length); trace("_tempBoughtPartsArray = " + _tempBoughtPartsArray.toString()); //upload bought parts if(_tempBoughtPartsArray.length > 0) { //add the bought parts when uploading the saved avatar uploadedVariables.boughtPartsSection = _tempBoughtPartsSectionArray.toString(); uploadedVariables.boughtParts = _tempBoughtPartsArray.toString(); } else { uploadedVariables.boughtPartsSection = 0; uploadedVariables.boughtParts = 0; } //trace("uploading = "+uploadedVariables); //the url request //the file should be a separate processing php file to connect with the database var uploadRequest = new URLRequest("http://www.itera-game.com/save_avatar.php"); //the method is POST so that the variables don't show in the http url //but since it is a processing php file, it won't show up at all uploadRequest.method = URLRequestMethod.POST; // the variables are added to the data to send to the php file //php file can get the variable using $_POST["filename"] uploadRequest.data = uploadedVariables; //the load will load the requiest var uploader = new URLLoader(); uploader.dataFormat = URLLoaderDataFormat.VARIABLES; //when it is loaded let me know (plus other stuff) uploader.addEventListener(Event.COMPLETE,doneUploadingAvatar); //load it try { uploader.load(uploadRequest); } catch (error:Error) { trace("Unable to load URL: " + error); } } private function doneUploadingAvatar(event:Event):void { trace("uploaded"); //once it is loaded, you can get data from the php file with uploader //in this instance the php file created an xml file as output var checkLoader:URLLoader = URLLoader(event.target); var checkUploadedVariables:URLVariables = new URLVariables(checkLoader.data); trace(checkLoader.data); //trace(checkUploadedVariables.theResult); //trace(checkUploadedVariables.theResult); } //gets the current look of the avatar and translates it into a saved avatar array private function createCurrentAvatarArray():Array { //finds the number for each part and puts it into an array to upload var tempArray:Array = new Array(); var a:int = 0; while(a<_customizeModel.faceShapeArray.length) { if (_avatarModel.faceShape == _customizeModel.faceShapeArray[a]) { tempArray.push(a); a = _customizeModel.faceShapeArray.length + 1; } a++; } a = 0; while(a<_customizeModel.eyesArray.length) { if (_avatarModel.eyes == _customizeModel.eyesArray[a]) { tempArray.push(a); a = _customizeModel.eyesArray.length + 1; } a++; } a = 0; while(a<_customizeModel.noseArray.length) { if (_avatarModel.nose == _customizeModel.noseArray[a]) { tempArray.push(a); a = _customizeModel.noseArray.length + 1; } a++; } a = 0; while(a<_customizeModel.earsArray.length) { if (_avatarModel.ears == _customizeModel.earsArray[a]) { tempArray.push(a); a = _customizeModel.earsArray.length + 1; } a++; } a = 0; while(a<_customizeModel.mouthArray.length) { if (_avatarModel.mouth == _customizeModel.mouthArray[a]) { tempArray.push(a); a = _customizeModel.mouthArray.length + 1; } a++; } a = 0; while(a<_customizeModel.browsArray.length) { if (_avatarModel.brows == _customizeModel.browsArray[a]) { tempArray.push(a); a = _customizeModel.browsArray.length + 1; } a++; } a = 0; while(a<_customizeModel.hairArray.length) { if (_avatarModel.hair == _customizeModel.hairArray[a]) { tempArray.push(a); a = _customizeModel.hairArray.length + 1; } a++; } a = 0; while(a<_customizeModel.skinColorArray.length) { if (_avatarModel.skinColor == _customizeModel.skinColorArray[a]) { tempArray.push(a); a = _customizeModel.skinColorArray.length + 1; } a++; } a = 0; while(a<_customizeModel.eyeColorArray.length) { if (_avatarModel.eyeColor == _customizeModel.eyeColorArray[a]) { tempArray.push(a); a = _customizeModel.eyeColorArray.length + 1; } a++; } a = 0; while(a<_customizeModel.hairColorArray.length) { if (_avatarModel.hairColor == _customizeModel.hairColorArray[a]) { tempArray.push(a); a = _customizeModel.hairColorArray.length + 1; } a++; } a = 0; while(a<_customizeModel.clothingColorArray.length) { if (_clothingModel.topClothingColor == _customizeModel.clothingColorArray[a]) { tempArray.push(a); a = _customizeModel.clothingColorArray.length + 1; } a++; } a = 0; while(a<_customizeModel.clothingColorArray.length) { if (_clothingModel.bottomClothingColor == _customizeModel.clothingColorArray[a]) { tempArray.push(a); a = _customizeModel.clothingColorArray.length + 1; } a++; } a = 0; while(a<_customizeModel.topClothingArray.length) { if (_clothingModel.topClothing == _customizeModel.topClothingArray[a]) { tempArray.push(a); a = _customizeModel.topClothingArray.length + 1; } a++; } a = 0; while(a<_customizeModel.bottomClothingArray.length) { if (_clothingModel.bottomClothing == _customizeModel.bottomClothingArray[a]) { tempArray.push(a); a = _customizeModel.bottomClothingArray.length + 1; } a++; } a = 0; while(a<_customizeModel.headExtraArray.length) { if (_clothingModel.headExtra == _customizeModel.headExtraArray[a]) { tempArray.push(a); a = _customizeModel.headExtraArray.length + 1; } a++; } a = 0; while(a<_customizeModel.backExtraArray.length) { if (_clothingModel.backExtra == _customizeModel.backExtraArray[a]) { tempArray.push(a); a = _customizeModel.backExtraArray.length + 1; } a++; } a = 0; while(a<_customizeModel.seatArray.length) { if (_extrasModel.avatarSeat == _customizeModel.seatArray[a]) { tempArray.push(a); a = _customizeModel.seatArray.length + 1; } a++; } a = 0; while(a<_customizeModel.itemArray.length) { if (_extrasModel.handHeldItem == _customizeModel.itemArray[a]) { tempArray.push(a); a = _customizeModel.itemArray.length + 1; } a++; } a = 0; while(a<_customizeModel.bkgArray.length) { if (_nexusModel.nexusBkg == _customizeModel.bkgArray[a]) { tempArray.push(a); a = _customizeModel.bkgArray.length + 1; } a++; } a = 0; while(a<_customizeModel.bkgColorArray.length) { if (_nexusModel.bkgColor == _customizeModel.bkgColorArray[a]) { tempArray.push(a); a = _customizeModel.bkgColorArray.length + 1; } a++; } trace("the tempArray = " +tempArray); return tempArray; } // downloades all user info at the beginning of the game public function downloadUserInfo(a_username:String):void { trace("getting ready to download"); //the url request //the file should be a separate processing php file to connect with the database var downloadRequest = new URLRequest("http://www.itera-game.com/download_user_info.php"); var downloadVariables:URLVariables = new URLVariables; trace(a_username); //downloadVariables.userID = a_userID; downloadVariables.username = a_username; //username at the moment //downloadVariables.newNeighbor =_newNeighbor; downloadRequest.method = URLRequestMethod.POST; // the variables are added to the data to send to the php file //php file can get the variable using $_POST["filename"] downloadRequest.data = downloadVariables; //the load will load the request downloader = new URLLoader(); //downloader.dataFormat = URLLoaderDataFormat.TEXT; downloader.dataFormat = URLLoaderDataFormat.VARIABLES; //when it is loaded let me know (plus other stuff) downloader.addEventListener(Event.COMPLETE,doneDownloadingUserInfo); //load it try { downloader.load(downloadRequest); } catch (error:Error) { trace("Unable to download URL: " + error); } } private function doneDownloadingUserInfo(event:Event):void { trace("downloaded"); //once it is loaded, you can get data from the php file with uploader //in this instance the php file created an xml file as output var checkDownloader:URLLoader = URLLoader(event.target); trace(checkDownloader.data); var downloaded:URLVariables = new URLVariables(checkDownloader.data); if(downloader.data.newUser =="false") { downloadedAvatarArray.push(downloaded.avatarPart2); downloadedAvatarArray.push(downloaded.avatarPart3); downloadedAvatarArray.push(downloaded.avatarPart4); downloadedAvatarArray.push(downloaded.avatarPart5); downloadedAvatarArray.push(downloaded.avatarPart6); downloadedAvatarArray.push(downloaded.avatarPart7); downloadedAvatarArray.push(downloaded.avatarPart8); downloadedAvatarArray.push(downloaded.avatarPart9); downloadedAvatarArray.push(downloaded.avatarPart10); downloadedAvatarArray.push(downloaded.avatarPart11); downloadedAvatarArray.push(downloaded.avatarPart12); downloadedAvatarArray.push(downloaded.avatarPart13); downloadedAvatarArray.push(downloaded.avatarPart14); downloadedAvatarArray.push(downloaded.avatarPart15); downloadedAvatarArray.push(downloaded.avatarPart16); downloadedAvatarArray.push(downloaded.avatarPart17); downloadedAvatarArray.push(downloaded.avatarPart18); downloadedAvatarArray.push(downloaded.avatarPart19); downloadedAvatarArray.push(downloaded.avatarPart20); downloadedAvatarArray.push(downloaded.avatarPart21); trace("avatarArray = " + downloadedAvatarArray); trace("XP = " + downloaded.userXP); //xp trace("energy = " + downloaded.userEnergy); //energy trace("level = " + downloaded.userLevel); //level trace("animal array = " + downloaded.animalArray); trace("name = " + downloaded.userName); //name? trace("post = " + downloaded.thePost); trace("numresp = " + downloaded.numResponses); trace("userid = " + downloaded.userID); trace("boughtParts = " + downloaded.boughtParts); //once all is set up //Main views userController and UserModel //use only the controller to change the model and hence the view (Main) //added in the user's avatar _userAvatarController.changeSavedAvatarArray(downloadedAvatarArray); _userPostController.changeCurrentResponses(downloaded.numResponses); _userPostController.changeCurrentPost(downloaded.thePost); //get bought parts (sections and parts in 2 arrays) var boughtPartsSectionArray:Array = downloaded.boughtPartsSection.split(","); var zeroSection:String = boughtPartsSectionArray.pop(); trace("boughtPartsSectionArray = " + boughtPartsSectionArray); var boughtPartsArray:Array = downloaded.boughtParts.split(","); var zeroPart:String = boughtPartsArray.pop(); trace("boughtPartsArray = " + boughtPartsArray); _userAvatarController.changeBoughtPartsSectionArray(boughtPartsSectionArray); _userAvatarController.changeBoughtPartsArray(boughtPartsArray); changeCustomizePrices(); } else { _userAvatarController.changeSavedAvatarArray(_customizeView.createRandomAvatarArray()); uploadSavedAvatar(downloaded.userID); } _userStaticController.changeUserID(downloaded.userID); _userStaticController.changeUserName(downloaded.userName); //this one will have to come from facebook _userController.changeUserXP(downloaded.userXP); _userController.changeUserEnergy(downloaded.userEnergy); _userController.changeUserLevel(downloaded.userLevel); _userController.changeHomeNexus(true); //get the animal array and level to get the locked array //_userController.changeUserLevel(9); _userStaticController.changeAnimalArray(downloaded.animalArray.split(",")); _userLockedController.createLockedArray(downloaded.animalArray.split(","), _userModel.userLevel); //get the rest of the info downloadGeneralInfo(downloaded.userID); } //need work! public function downloadGeneralInfo(a_userID:String) : void { trace("getting ready to download general information"); var downloadRequest:URLRequest = new URLRequest("http://www.itera-game.com/download_general_info.php"); var downloadVariables:URLVariables = new URLVariables(); downloadVariables.userID = a_userID; downloadRequest.method = URLRequestMethod.POST; downloadRequest.data = downloadVariables; downloader = new URLLoader(); downloader.dataFormat = URLLoaderDataFormat.VARIABLES; downloader.addEventListener(Event.COMPLETE, doneDownloadingGeneralInfo); try { downloader.load(downloadRequest); } catch (error:Error) { trace("Unable to download URL: " + error); } }// end function private function doneDownloadingGeneralInfo(event:Event) : void { trace("downloaded"); var checkLoader:URLLoader = URLLoader(event.target); trace(checkLoader.data); var downloaded:URLVariables = new URLVariables(checkLoader.data); //dailyquote trace("daily quote = " + downloaded.dailyQuote); trace("dQ ID = " + downloaded.dailyQuoteID); _dailyQuoteController.changeDailyQuoteID(downloaded.dailyQuoteID); _dailyQuoteController.changeDailyQuote(downloaded.dailyQuote); //neighbors and friends //first get all my pending requests to be neighbors var allPendingNeighbors:Array = downloaded.myPendingNeighbors.split(","); var zeroNeighbor:String = allPendingNeighbors.pop(); trace("allPendingNeighbors = " + allPendingNeighbors); //then get all my friends requests to be neighbors var allPendingRequests:Array = downloaded.neighborRequests.split(","); var zeroRequest:String = allPendingRequests.pop(); trace("allPendingRequests = " + allPendingRequests); //find which are the same and those are my neighbors var myNeighbors:Array = new Array(); for (var b:int = 0; b < allPendingRequests.length; b++) { //if its NOT not there, aka if its there if (allPendingNeighbors.indexOf(allPendingRequests[b]) != -1) { //they are both in my pending neighbors and their requests myNeighbors.push(allPendingRequests[b]); } } trace("myNeighbors = " + myNeighbors); _userNeighborsController.changeNeighbors(myNeighbors); //from my neighbors, get the ones not my neighbors, //so they are just my requests or their requests var tempFriends:Array = new Array(); var tempTypes:Array = new Array(); for (var p:int = 0; p < allPendingNeighbors.length; p++) { //if its not a neighbor, then its a request if (myNeighbors.indexOf(allPendingNeighbors[p]) == -1) { tempFriends.push(allPendingNeighbors[p]); //add to friends array tempTypes.push("pending"); //add to types array } } trace("tempFriends = " + tempFriends); for (var r:int = 0; r < allPendingRequests.length; r++) { //if its not a neighbor, then its a request if (myNeighbors.indexOf(allPendingRequests[r]) == -1) { tempFriends.push(allPendingRequests[r]); tempTypes.push("request"); } } trace("tempFriends = " + tempFriends); //now get all my itera friends //right now its all itera users var allIteraFriends:Array= downloaded.userFriends.split(","); var zeroFriend:String = allIteraFriends.pop(); trace("allIteraFriends = " + allIteraFriends); //if its not in the neighbors or the current friends list, then add it for (var f:int = 0; f < allIteraFriends.length; f++) { if ((myNeighbors.indexOf(allIteraFriends[f]) == -1) && (tempFriends.indexOf(allIteraFriends[f]) == -1)) { tempFriends.push(allIteraFriends[f]); tempTypes.push("friend"); } } _userFriendsController.changeFriends(tempFriends); _userFriendsController.changeTypes(tempTypes); trace("tempFriends = " + tempFriends); trace("tempTypes = " + tempTypes); //karmas //get the different types of karma var returnedKarmas:Array = downloaded.returnedKarmas.split(","); var zeroReturned:String = returnedKarmas.pop(); trace("returnedKarmas = " + returnedKarmas); var giftKarmas:Array = downloaded.giftKarmas.split(","); var zeroGift:String = giftKarmas.pop(); trace("giftKarmas = " + giftKarmas); var gotKarmas:Array = downloaded.gotKarmas.split(","); var zeroGot:String = gotKarmas.pop(); trace("gotKarmas = " + gotKarmas); //add them to the karma array with the types var tempKarmas:Array = new Array(); var karmaTypes:Array = new Array(); for (var gk:int = 0; gk < gotKarmas.length; gk++) { tempKarmas.push(gotKarmas[gk]); karmaTypes.push("Received"); } for (var rk:int = 0; rk < returnedKarmas.length; rk++) { tempKarmas.push(returnedKarmas[rk]); karmaTypes.push("Returned"); } for (var g:int = 0; g < giftKarmas.length; g++) { tempKarmas.push(giftKarmas[g]); karmaTypes.push("Gift"); } //if there are any received karmas, then open the received karma view button if (tempKarmas.length > 0) { trace("tempKarmas = " + tempKarmas); trace("karmaTypes = " + karmaTypes); _receiveKarmaController.changeReceivedKarmas(tempKarmas); _receiveKarmaController.changeTypes(karmaTypes); gotKarmaBtn.addEventListener(MouseEvent.CLICK, openReceivedKarmaView); gotKarmaBtn.buttonMode = true; gotKarmaBtn.mouseChildren = false; gotKarmaBtn.alpha = 1; gotKarmaBtn.scaleX = 1; } openingCover.x = 1000; return; }// end function ////////// HELP SCREEN // private function closeHelpScreen(event:MouseEvent):void { trace("closing help screen"); windowScreen.closeBtn.removeEventListener(MouseEvent.CLICK, closeHelpScreen); windowScreen.x = 1000; windowScreen.y = 1000; } private function showHelpScreen():void { trace("viewing help screen"); windowScreen.x = 0; windowScreen.y = 30; addChild(windowScreen); windowScreen.gotoAndStop("help"); windowScreen.windowTitleText.text = "Help Screen"; windowScreen.windowContainer.y = 102.45; windowScreen.closeBtn.addEventListener(MouseEvent.CLICK, closeHelpScreen); //scroll bar _scrollBar.x = 680; _scrollBar.y = 110; //scrollbar scrollColorTransform.color = 0x4E3B31; _scrollBar.transform.colorTransform = scrollColorTransform; //scrolling _scrollBar.upBtn.addEventListener(MouseEvent.CLICK, scrollUp); _scrollBar.downBtn.addEventListener(MouseEvent.CLICK, scrollDown); _scrollBar.dragBtn.addEventListener(MouseEvent.MOUSE_DOWN, dragSlider); } //scrolling functions for help screen private function scrollUp(event:MouseEvent):void { for (var p:int=0; p<8; p++) { if ( (_scrollBar.dragBtn.y > 36 + (238/8*p)) && (_scrollBar.dragBtn.y <= 36 + (238/8)*(p+1)) ) { trace("scrolling up at "+ p); //top of the container minus the scrolling distance windowScreen.windowContainer.y = 102.45 - (windowScreen.windowContainer.height-320)/8*(p); _scrollBar.dragBtn.y = 36 + (238/8)*p; }// end if }//end for loop } private function scrollDown(event:MouseEvent):void { trace("scrolling down"); trace(windowScreen.windowContainer.y); trace(_scrollBar.dragBtn.y); for (var p:int=0; p<8; p++) { //trace("array = "+(274 - scrollDragPosYArray[p])); if ( (_scrollBar.dragBtn.y < 274 -(238/8*p)) && (_scrollBar.dragBtn.y >= 274 - (238/8)*(p+1) ) ) { trace("scrolling down at "+ p); windowScreen.windowContainer.y = (422.45 -windowScreen.windowContainer.height) + (windowScreen.windowContainer.height-320)/8*p; _scrollBar.dragBtn.y = 274 - (238/8)*p; }//end if }//end for loop } private function dragSlider(event:MouseEvent):void { _scrollBar.dragBtn.removeEventListener(MouseEvent.MOUSE_DOWN, dragSlider); stage.addEventListener(MouseEvent.MOUSE_MOVE, startDragging); stage.addEventListener(MouseEvent.MOUSE_UP, stopDragging); } private function startDragging(event:MouseEvent):void { //if the mouse is in range, go ahead and drag trace("mouseX = " +mouseX); trace("mouseY = " +mouseY); if ((mouseY >= 152) && (mouseY <= 390)) { _scrollBar.dragBtn.y = mouseY - 116; var distY:Number = (_scrollBar.dragBtn.y - 36)/238; windowScreen.windowContainer.y = 102.45 - (windowScreen.windowContainer.height-320)*distY; } } private function stopDragging(event:MouseEvent):void { stage.removeEventListener(MouseEvent.MOUSE_MOVE, startDragging); stage.removeEventListener(MouseEvent.MOUSE_UP, stopDragging); _scrollBar.dragBtn.addEventListener(MouseEvent.MOUSE_DOWN, dragSlider); } ////////// MINI MESSAGE // private function closeMiniMessage(event:MouseEvent):void { trace("closing mini message"); miniMessage.okayBtn.removeEventListener(MouseEvent.CLICK, closeMiniMessage); miniMessage.okayBtn.removeEventListener(MouseEvent.CLICK, saveAvatarAndCloseMiniMessage); miniMessage.cancelBtn.removeEventListener(MouseEvent.CLICK, closeMiniMessage); miniMessage.x = 1000; miniMessage.y = 1000; } private function showMiniMessage(a_message:String):void { trace("viewing mini message"); trace("the message is for: "+ a_message); miniMessage.x = 0; miniMessage.y = 0; miniMessage.cancelBtn.x = 426.65; addChild(miniMessage); switch(a_message) { case "levelUp": miniMessage.miniMessageText.text = "Congratulations! You just Leveled Up to Level " + _userModel.userLevel.toString(); miniMessage.miniMessageText.appendText("\n"); miniMessage.miniMessageText.appendText("You have now unlocked another Itera Spirit. Go to the Customize Menu to see what\'s been randomly unlocked!"); miniMessage.okayBtn.addEventListener(MouseEvent.CLICK, closeMiniMessage); uploadUserInfo(_userStaticModel.userID); break; case "postLimit": miniMessage.miniMessageText.text = "Sorry. You already have 3 posts today."; miniMessage.okayBtn.addEventListener(MouseEvent.CLICK, closeMiniMessage); break; case "noPosts": miniMessage.miniMessageText.text = "Looks like there are no posts from your neighbors. Try inviting some friend from Facebook or adding some new neighbors. Send some Daily Karma or Gift Karma as reminders to play Itera."; miniMessage.okayBtn.addEventListener(MouseEvent.CLICK, closeMiniMessage); break; case "noMyPosts": miniMessage.miniMessageText.text = "Hey, you don't have any recent posts!"; miniMessage.okayBtn.addEventListener(MouseEvent.CLICK, closeMiniMessage); break; case "noNeighbors": miniMessage.miniMessageText.text = "Either all your friends playing Itera are already your neighbors, or they haven't had the pleasure of playing this fine game! Invite some more Facebook friends to play Itera with you."; miniMessage.okayBtn.addEventListener(MouseEvent.CLICK, closeMiniMessage); break; case "karmaLimit": miniMessage.miniMessageText.text = "Sorry. You already sent a daily karma to that person."; miniMessage.okayBtn.addEventListener(MouseEvent.CLICK, closeMiniMessage); break; case "responseKarmaLimit": miniMessage.miniMessageText.text = "Sorry. That post already has 5 responses."; miniMessage.okayBtn.addEventListener(MouseEvent.CLICK, closeMiniMessage); break; case "Confirm Neighbor Request": miniMessage.miniMessageText.text = "Please confirm that you want " + _neighborModel.neighborName + " to be your neighbor. This will be posted to their Wall."; miniMessage.okayBtn.addEventListener(MouseEvent.CLICK, sendNeighborRequestAndClose); miniMessage.cancelBtn.x = 526.65; miniMessage.cancelBtn.addEventListener(MouseEvent.CLICK, closeMiniMessage); break; case "Confirm Karma Request": miniMessage.miniMessageText.text = "Please confirm that you want to send Karma to " + _neighborModel.neighborName + ". This will be posted to their Wall."; miniMessage.okayBtn.addEventListener(MouseEvent.CLICK, sendKarmaRequestAndClose); miniMessage.cancelBtn.x = 526.65; miniMessage.cancelBtn.addEventListener(MouseEvent.CLICK, closeMiniMessage); break; case "Welcome to Itera": miniMessage.miniMessageText.text = "Welcome to Itera."; miniMessage.miniMessageText.appendText("\n" + "You were invited by " + _invitedBy + "." + _invitedByID); miniMessage.miniMessageText.appendText("\n" + "Would you like to take a tutorial of the game?"); miniMessage.okayBtn.addEventListener(MouseEvent.CLICK, closeMiniMessage); break; case "dqLimit": miniMessage.miniMessageText.text = "Sorry. You already used the daily quote."; miniMessage.okayBtn.addEventListener(MouseEvent.CLICK, closeMiniMessage); break; case "avatarPriceHigh": miniMessage.miniMessageText.text = "Sorry. You don't have enough energy to spend " + _avatarPrice + " on your new Avatar. Try changing out different features."; miniMessage.okayBtn.addEventListener(MouseEvent.CLICK, closeMiniMessage); break; case "avatarPrice": miniMessage.miniMessageText.text = "Are you sure you want to spend " + _avatarPrice + " on your new Avatar?"; miniMessage.okayBtn.addEventListener(MouseEvent.CLICK, saveAvatarAndCloseMiniMessage); miniMessage.cancelBtn.x = 526.65; miniMessage.cancelBtn.addEventListener(MouseEvent.CLICK, closeMiniMessage); break; default: miniMessage.okayBtn.addEventListener(MouseEvent.CLICK, closeMiniMessage); break; } } private function openMainMenu():void { mainMenuBtn.gotoAndStop("on"); mainMenu.scaleX =1; mainMenuBtn.addEventListener(MouseEvent.CLICK, closeMainMenu); } private function goBackToMainMenu(event:MouseEvent):void { openMainMenu(); mainMenuBtn.removeEventListener(MouseEvent.CLICK, goBackToMainMenu); mainMenuBtn.addEventListener(MouseEvent.CLICK, closeMainMenu); } private function closeMainMenu(event:MouseEvent):void { mainMenuBtn.removeEventListener(MouseEvent.CLICK, closeMainMenu); mainMenu.scaleX =0; //why do we close the main menu? switch(event.target.name) { case "myAvatarBtn": mainMenuBtn.gotoAndStop("Exit"); openCustomizeView(); break; case "myPostBtn": mainMenuBtn.gotoAndStop("off"); mainMenuBtn.addEventListener(MouseEvent.CLICK, goBackToMainMenu); openCreatePostView(); break; case "viewPostsBtn": mainMenuBtn.gotoAndStop("off"); mainMenuBtn.addEventListener(MouseEvent.CLICK, goBackToMainMenu); downloadPostArray("0"); break; case "sendKarmaBtn": mainMenuBtn.gotoAndStop("off"); mainMenuBtn.addEventListener(MouseEvent.CLICK, goBackToMainMenu); openSendKarmaView("mainMenu"); break; case "dailyQuoteBtn": mainMenuBtn.gotoAndStop("off"); mainMenuBtn.addEventListener(MouseEvent.CLICK, goBackToMainMenu); openDailyQuoteView(); break; default: mainMenuBtn.gotoAndStop("off"); mainMenuBtn.addEventListener(MouseEvent.CLICK, goBackToMainMenu); break; }//end switch } ////////// MY POST VIEWS... DQ, CREATE and ALL MY POSTS // private function closeMyPostView(event:MouseEvent):void { trace("closing my post"); switch(event.target.name) { case "dqBtn": myPost.dqBtn.removeEventListener(MouseEvent.CLICK, closeMyPostView); openDailyQuoteView(); break; case "createBtn": myPost.createBtn.removeEventListener(MouseEvent.CLICK, closeMyPostView); openCreatePostView(); break; case "viewMineBtn": myPost.viewMineBtn.removeEventListener(MouseEvent.CLICK, closeMyPostView); downloadPostArray(_userStaticModel.userID); break; case "mainMenuBtn": default: mainMenuBtn.removeEventListener(MouseEvent.CLICK, closeMyPostView); openMainMenu(); break; } myPost.scaleX = 0; } private function openMyPostView():void { trace("viewing my post"); myPost.scaleX = 1; myPost.thePost.text=_userPostModel.currentPost; myPost.responsesLeft.text = (5 - _userPostModel.currentResponses).toString() +" response(s) left!"; mainMenuBtn.addEventListener(MouseEvent.CLICK, closeMyPostView); myPost.dqBtn.addEventListener(MouseEvent.CLICK, closeMyPostView); myPost.createBtn.addEventListener(MouseEvent.CLICK, closeMyPostView); myPost.viewMineBtn.addEventListener(MouseEvent.CLICK, closeMyPostView); } private function viewCurrentPost(event:Event):void { myPost.thePost.text=_userPostModel.currentPost; myPost.responsesLeft.text = (5 - _userPostModel.currentResponses).toString() +" response(s) left!"; } private function closeCreatePostView(event:MouseEvent):void { trace("closing create post"); switch(event.target.name) { case "dqBtn": createPost.dqBtn.removeEventListener(MouseEvent.CLICK, closeCreatePostView); openDailyQuoteView(); break; case "cancelBtn": createPost.cancelBtn.removeEventListener(MouseEvent.CLICK, closeCreatePostView); openMyPostView(); break; case "viewMineBtn": createPost.viewMineBtn.removeEventListener(MouseEvent.CLICK, closeCreatePostView); downloadPostArray(_userStaticModel.userID); break; case "mainMenuBtn": default: mainMenuBtn.removeEventListener(MouseEvent.CLICK, closeCreatePostView); openMainMenu(); break; } createPost.scaleX = 0; } private function openCreatePostView():void { trace("viewing create post form"); createPost.scaleX = 1; createPost.inputPost.text = "Add a new post?"; //clear form createPost.inputPost.addEventListener(MouseEvent.CLICK, clearInputPostForm); createPost.submitBtn.addEventListener(MouseEvent.CLICK, mouseSubmitPost); stage.addEventListener(KeyboardEvent.KEY_DOWN, keyboardSubmitPost); //closing this window createPost.cancelBtn.addEventListener(MouseEvent.CLICK, closeCreatePostView); createPost.dqBtn.addEventListener(MouseEvent.CLICK, closeCreatePostView); createPost.viewMineBtn.addEventListener(MouseEvent.CLICK, closeCreatePostView); mainMenuBtn.addEventListener(MouseEvent.CLICK, closeCreatePostView); } function clearInputPostForm(event:MouseEvent):void { createPost.inputPost.text = ""; } function mouseSubmitPost(event:MouseEvent):void { createPost.submitBtn.removeEventListener(MouseEvent.CLICK, mouseSubmitPost); addNewPost(); } function keyboardSubmitPost(event:KeyboardEvent):void { if (event.keyCode == Keyboard.ENTER) { addNewPost(); } } private function addNewPost():void { if(createPost.inputPost.text == "" || createPost.inputPost.text == "Add a new post?" || createPost.inputPost.text == "There was no post!") { trace("no newPost"); createPost.inputPost.text = "There was no post!" } else { var newPost = createPost.inputPost.text; trace("newPost = "+ newPost); // createPost.inputPost.text = "Got your post!" createPost.scaleX = 0; openMyPostView(); uploadNewPost(newPost, 0); } } //uploads the saved avatar to the correct userID private function uploadNewPost(a_theNewPost:String, a_dailyQuoteID:Number):void { //flash variables I'm sending with the urlrequest //php file can get the variable using $_POST["filename"] var uploadedVariables:URLVariables = new URLVariables; trace("uploading the new post!!!"); trace(a_theNewPost); trace(a_dailyQuoteID); trace(_userStaticModel.userID); uploadedVariables.thePost = a_theNewPost; uploadedVariables.dailyQuote = a_dailyQuoteID; uploadedVariables.userID = _userStaticModel.userID; //trace("uploading = "+uploadedVariables); //the url request //the file should be a separate processing php file to connect with the database var uploadRequest = new URLRequest("http://www.itera-game.com/upload_new_post.php"); uploadRequest.method = URLRequestMethod.POST; // the variables are added to the data to send to the php file uploadRequest.data = uploadedVariables; //the load will load the request var uploader = new URLLoader(); uploader.dataFormat = URLLoaderDataFormat.VARIABLES; //when it is loaded let me know (plus other stuff) uploader.addEventListener(Event.COMPLETE,doneUploadingNewPost); //load it try { uploader.load(uploadRequest); } catch (error:Error) { trace("Unable to load URL: " + error); } } private function doneUploadingNewPost(event:Event):void { trace("uploaded"); var checkLoader:URLLoader = URLLoader(event.target); var postVars:URLVariables = new URLVariables(checkLoader.data); trace(checkLoader.data); if(postVars.dqLimit == "true" ) { showMiniMessage("dqLimit"); } else if(postVars.postLimit == "true" ) { showMiniMessage("postLimit"); } else { _userPostController.changeCurrentResponses(0); _userPostController.changeCurrentPost(postVars.thePost); _userController.changeUserXP(_userModel.userXP+5); uploadUserInfo(_userStaticModel.userID); } } private function closeDailyQuoteView(event:MouseEvent):void { trace("closing daily quote"); switch(event.target.name) { case "createBtn": dailyQuote.createBtn.removeEventListener(MouseEvent.CLICK, closeDailyQuoteView); openCreatePostView(); break; case "cancelBtn": dailyQuote.cancelBtn.removeEventListener(MouseEvent.CLICK, closeDailyQuoteView); openMyPostView(); break; case "viewMineBtn": dailyQuote.viewMineBtn.removeEventListener(MouseEvent.CLICK, closeDailyQuoteView); downloadPostArray(_userStaticModel.userID); break; case "mainMenuBtn": default: mainMenuBtn.removeEventListener(MouseEvent.CLICK, closeDailyQuoteView); openMainMenu(); break; } dailyQuote.scaleX = 0; } private function openDailyQuoteView():void { trace("viewing daily quote"); dailyQuote.scaleX = 1; dailyQuote.thePost.text = _dailyQuoteModel.dailyQuote; dailyQuote.useItBtn.addEventListener(MouseEvent.CLICK, useDailyQuote); dailyQuote.createBtn.addEventListener(MouseEvent.CLICK, closeDailyQuoteView); dailyQuote.cancelBtn.addEventListener(MouseEvent.CLICK, closeDailyQuoteView); dailyQuote.viewMineBtn.addEventListener(MouseEvent.CLICK, closeDailyQuoteView); mainMenuBtn.addEventListener(MouseEvent.CLICK, closeDailyQuoteView); } private function useDailyQuote(event:MouseEvent):void { dailyQuote.useItBtn.removeEventListener(MouseEvent.CLICK, useDailyQuote); uploadNewPost(_dailyQuoteModel.dailyQuote, _dailyQuoteModel.dailyQuoteID); dailyQuote.scaleX = 0; openMyPostView(); } // INVITE // private function closeFriendsView(event:MouseEvent):void { trace("closing all friends"); windowScreen.closeBtn.removeEventListener(MouseEvent.CLICK, closeFriendsView); windowScreen.x = 1000; windowScreen.y = 1000; _friendsView.x = 4535; openMainMenu(); } private function uploadNewNeighborRequest() : void { var uploadedVariables:URLVariables = new URLVariables(); trace("uploading friend as new neighbor = " + _neighborModel.neighborID + "for" + _userStaticModel.userID); uploadedVariables.userID = _userStaticModel.userID; uploadedVariables.iteraFriend = _neighborModel.neighborID; var uploadRequest:URLRequest = new URLRequest("http://www.itera-game.com/upload_neighbor_request.php"); uploadRequest.method = URLRequestMethod.POST; uploadRequest.data = uploadedVariables; var uploader:URLLoader = new URLLoader(); uploader.dataFormat = URLLoaderDataFormat.VARIABLES; uploader.addEventListener(Event.COMPLETE, doneUploadingNewNeighborRequest); try { uploader.load(uploadRequest); } catch (error:Error) { trace("Unable to load URL: " + error); } }// end function private function doneUploadingNewNeighborRequest(event:Event):void { var checkLoader:URLLoader = URLLoader(event.target); trace(checkLoader.data); var jsArgument1:String = _userStaticModel.userName; var jsArgument2:String = checkLoader.data.friendFBID; if(checkLoader.data.areNeighbors == "yes") { trace("to JavaScript: add friend as new neighbor = " + _neighborModel.neighborID + "for" + _userStaticModel.userID); var result1:Object = ExternalInterface.call("addNeighborFromFlash",jsArgument1,jsArgument2); _friendsView.confirmNeighborSent(_neighborModel.neighborID); } else if(checkLoader.data.sentRequest == "yes") { trace("to JavaScript: request new neighbor = " + _neighborModel.neighborID + "for" + _userStaticModel.userID); var result2:Object = ExternalInterface.call("requestNeighborFromFlash",jsArgument1,jsArgument2); _friendsView.confirmNeighborSent(_neighborModel.neighborID); } } private function sendNeighborRequestAndClose(event:MouseEvent) : void { miniMessage.okayBtn.removeEventListener(MouseEvent.CLICK, sendNeighborRequestAndClose); miniMessage.cancelBtn.removeEventListener(MouseEvent.CLICK, closeMiniMessage); miniMessage.x = 1000; miniMessage.y = 1000; uploadNewNeighborRequest(); }// end function private function openAddNeighborView():void { windowScreen.x = 0; windowScreen.y = 30; addChild(windowScreen); windowScreen.gotoAndStop("friends"); _friendsView.x = 45.35; _friendsView.y = 87.25; windowScreen.addChild(_friendsView); _userFriendsController.changeFriends(_userFriendsModel.friendsArray); _userFriendsController.changeTypes(_userFriendsModel.typesArray); windowScreen.windowTitleText.text = "Add Itera Friends as Neighbors"; windowScreen.windowContainer.y=1000; _scrollBar.y = 1100; windowScreen.closeBtn.addEventListener(MouseEvent.CLICK, closeFriendsView); } private function openFacebookInviteWindow (event:MouseEvent):void { var jsArgument:String = _userStaticModel.userID; var result:Object = ExternalInterface.call("getInviteRequestFromFlash",jsArgument); trace("sending invites"); } // ALL POSTS // private function closeAllPostsView(event:MouseEvent):void { trace("closing all posts"); windowScreen.closeBtn.removeEventListener(MouseEvent.CLICK, closeAllPostsView); windowScreen.x = 1000; windowScreen.y = 1000; _postsView.x = 4535; openMainMenu(); } //uploads the saved avatar to the correct userID private function downloadPostArray(a_userID:String):void { //flash variables I'm sending with the urlrequest //php file can get the variable using $_POST["filename"] var uploadVars:URLVariables = new URLVariables; trace("getting the post array"); uploadVars.userID = a_userID; //trace("uploading = "+uploadedVariables); //the url request //the file should be a separate processing php file to connect with the database var uploadRequest = new URLRequest("http://www.itera-game.com/download_post_array.php"); uploadRequest.method = URLRequestMethod.POST; // the variables are added to the data to send to the php file uploadRequest.data = uploadVars; //the load will load the request var uploader = new URLLoader(); uploader.dataFormat = URLLoaderDataFormat.VARIABLES; //when it is loaded let me know (plus other stuff) uploader.addEventListener(Event.COMPLETE,doneDownloadingPostArray); //load it try { uploader.load(uploadRequest); } catch (error:Error) { trace("Unable to load URL: " + error); } } private function doneDownloadingPostArray(event:Event):void { trace("downloaded"); var checkLoader:URLLoader = URLLoader(event.target); trace(checkLoader.data); var postVars:URLVariables = new URLVariables(checkLoader.data); var tempPostArray:Array = postVars.postIDs.split(","); trace("tempPostArray= "+tempPostArray); var noPost = tempPostArray.pop(); trace("tempPostArray= "+tempPostArray); //set text if(postVars.userID == _userStaticModel.userID) { windowScreen.windowTitleText.text = "All My Posts"; _userPostController.changeMyPosts("Mine"); _postsController.changePosts(tempPostArray); openAllPostsView(); } else if(postVars.userID =="0") { windowScreen.windowTitleText.text = "All Posts"; _userPostController.changeMyPosts("Everyone"); _postsController.changePosts(tempPostArray); openAllPostsView(); } else { windowScreen.windowTitleText.text = "All of "+_neighborModel.neighborName +"\'s Posts"; _userPostController.changeMyPosts(postVars.userID); _postsController.changePosts(tempPostArray); openNeighborPostsView(); } } private function openAllPostsView():void { trace("viewing all posts"); windowScreen.x = 0; windowScreen.y = 30; addChild(windowScreen); windowScreen.gotoAndStop("posts"); _postsView.x = 45.35; _postsView.y = 87.25; windowScreen.addChild(_postsView); windowScreen.windowContainer.y=1000; _scrollBar.y = 1100; windowScreen.closeBtn.addEventListener(MouseEvent.CLICK, closeAllPostsView); } private function openNeighborPostsView():void { trace("opening neighbor posts view"); _postsView.x = 45.35; _postsView.y = 113; addChild(_postsView); } // KARMA // private function closeSendKarmaView(event:MouseEvent):void { trace("closing send karma"); windowScreen.closeBtn.removeEventListener(MouseEvent.CLICK, closeSendKarmaView); windowScreen.x = 1000; windowScreen.y = 1000; _karmaView.x = 4535; openMainMenu(); } private function sendKarmaRequestAndClose(event:MouseEvent) : void { miniMessage.okayBtn.removeEventListener(MouseEvent.CLICK, sendKarmaRequestAndClose); miniMessage.cancelBtn.removeEventListener(MouseEvent.CLICK, closeMiniMessage); miniMessage.x = 1000; miniMessage.y = 1000; windowScreen.closeBtn.removeEventListener(MouseEvent.CLICK, closeSendKarmaView); windowScreen.x = 1000; windowScreen.y = 1000; _karmaView.x = 4535; openMainMenu(); uploadNewKarmaRequest(); }// end function private function uploadNewKarmaRequest() : void { var uploadedVariables:URLVariables = new URLVariables(); trace("uploading karma to = " + _neighborModel.neighborID + "from" + _userStaticModel.userID); uploadedVariables.userID = _userStaticModel.userID; uploadedVariables.iteraFriend = _neighborModel.neighborID; uploadedVariables.karmaID = _sendKarmaModel.currentKarmaID; uploadedVariables.days = _karmaModel.karmaTimeArray[_sendKarmaModel.currentKarmaID]; uploadedVariables.karmaName = _karmaModel.karmaArray[_sendKarmaModel.currentKarmaID]; uploadedVariables.karmaImageName = uploadedVariables.karmaName.toLowerCase(); uploadedVariables.postID = _sendKarmaModel.responseID; if (_sendKarmaModel.responseID == "0") { uploadedVariables.responseText = ""; } else { uploadedVariables.responseText = _sendKarmaModel.responseText; } var uploadRequest:URLRequest = new URLRequest("http://www.itera-game.com/upload_karma_request.php"); uploadRequest.method = URLRequestMethod.POST; uploadRequest.data = uploadedVariables; var uploader:URLLoader = new URLLoader(); uploader.dataFormat = URLLoaderDataFormat.VARIABLES; uploader.addEventListener(Event.COMPLETE, doneUploadingNewKarmaRequest); try { uploader.load(uploadRequest); } catch (error:Error) { trace("Unable to load URL: " + error); } }// end function private function doneUploadingNewKarmaRequest(event:Event) : void { trace("uploaded"); trace(event.target.data); var checkLoader:URLLoader = URLLoader(event.target); var downloaded:URLVariables = new URLVariables(checkLoader.data); trace("karmaLimit = " + downloaded.karmaLimit); trace("responseKarmaLimit = " + downloaded.responseKarmaLimit); trace("which karma = " + downloaded.whichKarma); if (downloaded.responseKarmaLimit == "true") { showMiniMessage("responseKarmaLimit"); } else if (downloaded.karmaLimit == "true") { showMiniMessage("karmaLimit"); } else { //post it to the friends wall var jsArgument1:String = downloaded.karmaName; var jsArgument2:String = downloaded.karmaImageName; var jsArgument3:String = downloaded.days; var jsArgument4:String = downloaded.responseText; var jsArgument5:String = downloaded.thePost; var jsArgument6:String = _userStaticModel.userName; var jsArgument7:String = downloaded.friendFBID; if(downloaded.whichKarma == "daily") { var result1:Object = ExternalInterface.call("sendDailyKarmaFromFlash",jsArgument1,jsArgument2,jsArgument3,jsArgument6,jsArgument7); } else if(downloaded.whichKarma == "response") { var result2:Object = ExternalInterface.call("sendResponseKarmaFromFlash",jsArgument1,jsArgument2,jsArgument3,jsArgument4,jsArgument5,jsArgument6,jsArgument7); } _karmaView.x = 4535; windowScreen.x = 1000; windowScreen.y = 1000; openMainMenu(); } }// end function private function sendMultiKarmaRequest() : void { var jsArgument:String = _sendKarmaModel.currentKarmaID; var theCall = ExternalInterface.call("getKarmaRequestFromFlash", jsArgument); trace("sending karma request"); }// end function private function openReceivedKarmaView(event:MouseEvent):void { openSendKarmaView("receivedKarmas"); } private function openResponseKarmaView(toWho:String):void { trace("opening response karma view"); _karmaView.x = 45.35; _karmaView.y = 190.25; addChild(_karmaView); windowScreen.windowTitleText.text = "Send a Response Karma to "+ toWho; _sendKarmaController.changeResponseID(_neighborModel.neighborPostID); //trace("chaing response id tp " + _neighborModel.neighborPostID); //_karmaController.loadKarmas(); //_karmaView.viewKarmas(); } private function openSendKarmaView(toWho:String):void { trace("viewing send karma"); windowScreen.x = 0; windowScreen.y = 30; addChild(windowScreen); windowScreen.gotoAndStop("karma"); _karmaView.x = 45.35; _karmaView.y = 87.25; windowScreen.addChild(_karmaView); _sendKarmaController.changeResponseID("0"); //set text switch(toWho) { case "mainMenu": windowScreen.windowTitleText.text = "Send Gift Karma"; _karmaController.loadKarmas(); _sendKarmaController.changeReceiver("0"); break; case "receivedKarmas": windowScreen.windowTitleText.text = "Congratulations! You Have Karma."; //_receiveKarmaController.loadReceivedKarmas(); _sendKarmaController.changeReceiver("0"); break; default: windowScreen.windowTitleText.text = "Send a Daily Karma to " + toWho; _karmaController.loadKarmas(); _sendKarmaController.changeReceiver(toWho); break; } windowScreen.windowContainer.y=1000; _scrollBar.y = 1100; //listen to close windowScreen.closeBtn.addEventListener(MouseEvent.CLICK, closeSendKarmaView); } // CUSTOMIZE // private function openCustomizeView():void { trace("openCustomizeView"); _customizeController.createLockedArrays(_userLockedModel.userLockedAnimalNamesArray); _customizeView.y = 425; saveExitCustomizeBtn.x = 635; saveExitCustomizeBtn.y = 362; addChild(saveExitCustomizeBtn); saveExitCustomizeBtn.addEventListener(MouseEvent.CLICK, saveAndCloseCustomizeView); cancelCustomizeBtn.x = 700; cancelCustomizeBtn.y = 415; addChild(cancelCustomizeBtn); cancelCustomizeBtn.addEventListener(MouseEvent.CLICK, cancelCustomizeView); } private function closeCustomizeView():void { trace("closeCustomizeView"); openMainMenu(); saveExitCustomizeBtn.x = 6880; cancelCustomizeBtn.y = 6880; _customizeView.y = 1425; } private function cancelCustomizeView(event:MouseEvent):void { //remove listeners cancelCustomizeBtn.removeEventListener(MouseEvent.CLICK, cancelCustomizeView); _userAvatarController.changeSavedAvatarArray(_userAvatarModel.savedAvatarArray); //close view and back to main menu closeCustomizeView(); } private function getAvatarPrice(a_avatarArray:Array):Number { //gets the price and updates the temporary bought parts and section arrays //clear the arrays _tempBoughtPartsSectionArray = new Array(); _tempBoughtPartsArray = new Array(); //clear the price _avatarPrice = 0; _avatarPrice += _customizeModel.faceShapePriceArray[a_avatarArray[0]]; if(_customizeModel.faceShapePriceArray[a_avatarArray[0]] > 0) { //add the ids of the part and section to their temp arrays //sections are based on the avatarArray _tempBoughtPartsSectionArray.push(0); _tempBoughtPartsArray.push(a_avatarArray[0]); } _avatarPrice += _customizeModel.eyesPriceArray[a_avatarArray[1]]; if(_customizeModel.eyesPriceArray[a_avatarArray[1]] > 0) { _tempBoughtPartsSectionArray.push(1); _tempBoughtPartsArray.push(a_avatarArray[1]); } _avatarPrice += _customizeModel.nosePriceArray[a_avatarArray[2]]; if(_customizeModel.nosePriceArray[a_avatarArray[2]] > 0) { _tempBoughtPartsSectionArray.push(2); _tempBoughtPartsArray.push(a_avatarArray[2]); } _avatarPrice += _customizeModel.earsPriceArray[a_avatarArray[3]]; if(_customizeModel.earsPriceArray[a_avatarArray[3]] > 0) { _tempBoughtPartsSectionArray.push(3); _tempBoughtPartsArray.push(a_avatarArray[3]); } _avatarPrice += _customizeModel.mouthPriceArray[a_avatarArray[4]]; if(_customizeModel.mouthPriceArray[a_avatarArray[4]] > 0) { _tempBoughtPartsSectionArray.push(4); _tempBoughtPartsArray.push(a_avatarArray[4]); } _avatarPrice += _customizeModel.browsPriceArray[a_avatarArray[5]]; if(_customizeModel.browsPriceArray[a_avatarArray[5]] > 0) { _tempBoughtPartsSectionArray.push(5); _tempBoughtPartsArray.push(a_avatarArray[5]); } _avatarPrice += _customizeModel.hairPriceArray[a_avatarArray[6]]; if(_customizeModel.hairPriceArray[a_avatarArray[6]] > 0) { _tempBoughtPartsSectionArray.push(6); _tempBoughtPartsArray.push(a_avatarArray[6]); } _avatarPrice += _customizeModel.skinColorPriceArray[a_avatarArray[7]]; if(_customizeModel.skinColorPriceArray[a_avatarArray[7]] > 0) { _tempBoughtPartsSectionArray.push(7); _tempBoughtPartsArray.push(a_avatarArray[7]); } _avatarPrice += _customizeModel.eyeColorPriceArray[a_avatarArray[8]]; if(_customizeModel.eyeColorPriceArray[a_avatarArray[8]] > 0) { _tempBoughtPartsSectionArray.push(8); _tempBoughtPartsArray.push(a_avatarArray[8]); } _avatarPrice += _customizeModel.hairColorPriceArray[a_avatarArray[9]]; if(_customizeModel.hairColorPriceArray[a_avatarArray[9]] > 0) { _tempBoughtPartsSectionArray.push(9); _tempBoughtPartsArray.push(a_avatarArray[9]); } _avatarPrice += _customizeModel.clothingColorPriceArray[a_avatarArray[10]]; if(_customizeModel.clothingColorPriceArray[a_avatarArray[10]] > 0) { _tempBoughtPartsSectionArray.push(10); _tempBoughtPartsArray.push(a_avatarArray[10]); } _avatarPrice += _customizeModel.clothingColorPriceArray[a_avatarArray[11]]; if(_customizeModel.clothingColorPriceArray[a_avatarArray[11]] > 0) { _tempBoughtPartsSectionArray.push(11); _tempBoughtPartsArray.push(a_avatarArray[11]); } _avatarPrice += _customizeModel.topClothingPriceArray[a_avatarArray[12]]; if(_customizeModel.topClothingPriceArray[a_avatarArray[12]] > 0) { _tempBoughtPartsSectionArray.push(12); _tempBoughtPartsArray.push(a_avatarArray[12]); } _avatarPrice += _customizeModel.bottomClothingPriceArray[a_avatarArray[13]]; if(_customizeModel.bottomClothingPriceArray[a_avatarArray[13]] > 0) { _tempBoughtPartsSectionArray.push(13); _tempBoughtPartsArray.push(a_avatarArray[13]); } _avatarPrice += _customizeModel.headExtraPriceArray[a_avatarArray[14]]; if(_customizeModel.headExtraPriceArray[a_avatarArray[14]] > 0) { _tempBoughtPartsSectionArray.push(14); _tempBoughtPartsArray.push(a_avatarArray[14]); } _avatarPrice += _customizeModel.backExtraPriceArray[a_avatarArray[15]]; if(_customizeModel.backExtraPriceArray[a_avatarArray[15]] > 0) { _tempBoughtPartsSectionArray.push(15); _tempBoughtPartsArray.push(a_avatarArray[15]); } _avatarPrice += _customizeModel.seatPriceArray[a_avatarArray[16]]; if(_customizeModel.seatPriceArray[a_avatarArray[16]] > 0) { _tempBoughtPartsSectionArray.push(16); _tempBoughtPartsArray.push(a_avatarArray[16]); } _avatarPrice += _customizeModel.itemPriceArray[a_avatarArray[17]]; if(_customizeModel.itemPriceArray[a_avatarArray[17]] > 0) { _tempBoughtPartsSectionArray.push(17); _tempBoughtPartsArray.push(a_avatarArray[17]); } _avatarPrice += _customizeModel.bkgPriceArray[a_avatarArray[18]]; if(_customizeModel.bkgPriceArray[a_avatarArray[18]] > 0) { _tempBoughtPartsSectionArray.push(18); _tempBoughtPartsArray.push(a_avatarArray[18]); } _avatarPrice += _customizeModel.bkgColorPriceArray[a_avatarArray[19]]; if(_customizeModel.bkgColorPriceArray[a_avatarArray[19]] > 0) { _tempBoughtPartsSectionArray.push(19); _tempBoughtPartsArray.push(a_avatarArray[19]); } trace("_avatarPrice = " + _avatarPrice); return _avatarPrice; } private function changeCustomizePrices():void { //change the prices in customize view for(var p:int = 0; p<_userAvatarModel.boughtPartsArray.length; p++) { _customizeController.adjustPriceArrays(_userAvatarModel.boughtPartsSectionArray[p],_userAvatarModel.boughtPartsArray[p]); } } private function saveAvatarAndCloseMiniMessage(event:MouseEvent):void { //remove listeners miniMessage.cancelBtn.removeEventListener(MouseEvent.CLICK, closeMiniMessage); miniMessage.okayBtn.removeEventListener(MouseEvent.CLICK, saveAvatarAndCloseMiniMessage); miniMessage.x = 1000; miniMessage.y = 1000; saveExitCustomizeBtn.removeEventListener(MouseEvent.CLICK, saveAndCloseCustomizeView); //chang the energy _userController.changeUserEnergy(_userModel.userEnergy - _avatarPrice); //upload saved avatar uploadSavedAvatar(_userStaticModel.userID); _userAvatarController.changeSavedAvatarArray(createCurrentAvatarArray()); //adjust prices on which items were bought _userAvatarController.changeBoughtPartsSectionArray(_tempBoughtPartsSectionArray); _userAvatarController.changeBoughtPartsArray(_tempBoughtPartsArray); changeCustomizePrices(); //close view and back to main menu closeCustomizeView(); } private function saveAndCloseCustomizeView(event:MouseEvent):void { //save and upload to database if(getAvatarPrice(createCurrentAvatarArray()) > _userModel.userEnergy) { //show warning first showMiniMessage("avatarPriceHigh"); } else if(getAvatarPrice(createCurrentAvatarArray()) > 0) { //show warning first showMiniMessage("avatarPrice"); } else { //remove listeners saveExitCustomizeBtn.removeEventListener(MouseEvent.CLICK, saveAndCloseCustomizeView); uploadSavedAvatar(_userStaticModel.userID); _userAvatarController.changeSavedAvatarArray(createCurrentAvatarArray()); //close view and back to main menu closeCustomizeView(); } } ////////// PAN AND ZOOM FEATURES private function addZoomFeature():void { //reset variables zoomDragBtn.y = ZOOMBARMIDDLE; avatarHolder.mainCircle.alpha = 0; //handCursor.gotoAndStop("open"); //handCursor.scaleX = 0.6; //handCursor.scaleY = 0.6; //listen zoomPlusBtn.addEventListener(MouseEvent.CLICK, zoomIn); zoomMinusBtn.addEventListener(MouseEvent.CLICK, zoomOut); zoomDragBtn.addEventListener(MouseEvent.MOUSE_DOWN, zoomStartDrag); //button mode zoomPlusBtn.buttonMode = true; zoomMinusBtn.buttonMode = true; zoomDragBtn.buttonMode = true; avatarHolder.addEventListener(MouseEvent.MOUSE_OVER, showHover); avatarHolder.addEventListener(MouseEvent.MOUSE_OUT, hideHover); avatarHolder.addEventListener(MouseEvent.MOUSE_DOWN, startPan); avatarHolder.addEventListener(MouseEvent.MOUSE_UP, stopPan); } private function showHover(event:MouseEvent):void { avatarHolder.mainCircle.alpha = 0.1; //handCursor.x = mouseX; //handCursor.y = mouseY; //Mouse.hide(); //handCursor.mouseEnabled = false; //handCursor.mouseChildren = false; } private function hideHover(event:MouseEvent):void { avatarHolder.mainCircle.alpha = 0; //handCursor.x = -500; //handCursor.y = -500 //Mouse.show(); } private function startPan(event:MouseEvent):void { avatarHolder.startDrag(); avatarHolder.mainCircle.alpha = 0.25; //handCursor.gotoAndStop("closed"); //handCursor.x = mouseX; //handCursor.y = mouseY; } private function stopPan(event:MouseEvent):void { avatarHolder.stopDrag(); //handCursor.gotoAndStop("open"); //avatarHolder.mainCircle.alpha = 0; } private function zoomIn(event:MouseEvent):void { if(zoomDragBtn.y >= 283) { avatarHolder.scaleX = 0.8; avatarHolder.scaleY = 0.8; zoomDragBtn.y = ZOOMBARMIDDLE; } else { zoomDragBtn.y = 232.3; var bigZoomY:Number = ZOOMBARMIDDLE - zoomDragBtn.y avatarHolder.scaleX = 0.8 +bigZoomY/10; avatarHolder.scaleY = 0.8 +bigZoomY/10; } } private function zoomOut(event:MouseEvent):void { trace(zoomDragBtn.y); if(zoomDragBtn.y <= 233) { avatarHolder.scaleX = 0.8; avatarHolder.scaleY = 0.8; zoomDragBtn.y = ZOOMBARMIDDLE; avatarHolder.x = 380; avatarHolder.y = 316; } else { zoomDragBtn.y = 284.3; var smallZoomY:Number = ZOOMBARMIDDLE - zoomDragBtn.y avatarHolder.scaleX = 0.8 +smallZoomY/55; avatarHolder.scaleY = 0.8 +smallZoomY/55; avatarHolder.x = 380; avatarHolder.y = 316; } } private function zoomStartDrag(event:MouseEvent):void { zoomDragBtn.removeEventListener(MouseEvent.MOUSE_DOWN, zoomStartDrag); stage.addEventListener(MouseEvent.MOUSE_MOVE, zoomStartDragging); stage.addEventListener(MouseEvent.MOUSE_UP, zoomStopDragging); //trace("button = " + zoomDragBtn.y); } private function zoomStartDragging(event:MouseEvent):void { if((mouseY >= 233) && (mouseY <= 283)) { //zoomDragBtn.startDrag(false); zoomDragBtn.x = 730.85; //zoomDragBtn.y = mouseY; //trace("button = " + zoomDragBtn.y); //trace("mouse = " + mouseY); // establish distance from mouse zoomDragY = mouseY-zoomDragBtn.y; // move toward mouse (gets slower as it approaches mouse); // changing the divisor yields different speeds zoomDragBtn.y += zoomDragY; zoomY = ZOOMBARMIDDLE - zoomDragBtn.y; var tempX:Number = avatarHolder.x - 380; var tempY:Number = avatarHolder.y - 316; if(zoomDragY >=0) { avatarHolder.x -= tempX/10; avatarHolder.y -= tempY/10; } //trace(zoomY); if(zoomY >=0) { avatarHolder.scaleX = 0.8 +zoomY/10; avatarHolder.scaleY = 0.8 +zoomY/10; } else { avatarHolder.scaleX = 0.8 +zoomY/55; avatarHolder.scaleY = 0.8 +zoomY/55; } } } private function zoomStopDragging(event:MouseEvent):void { stage.removeEventListener(MouseEvent.MOUSE_MOVE, zoomStartDragging); stage.removeEventListener(MouseEvent.MOUSE_UP, zoomStopDragging); zoomDragBtn.addEventListener(MouseEvent.MOUSE_DOWN, zoomStartDrag); } }//end class }//end package