LobbyInterface.as 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. import flash.external.*;
  2. class LobbyInterface extends MovieClip
  3. {
  4. private static var mSingletonInstance:LobbyInterface;
  5. private var mScreens:Array;
  6. private var mCurScreenID:Number;
  7. private var mLastScreenID:Number;
  8. private var mScreensRegistered:Number;
  9. private var mIsLoggedIn:Boolean;
  10. private var mScreenTabManager:ScreenTabManager;
  11. private var mcNavigationPanel:NavigationMenu;
  12. private var mFlashMode:Boolean = false;
  13. //====================================================
  14. //User data
  15. private var mProfileImageIndex:Number;
  16. private var mAccountInfo:AccountInfo;
  17. public function LobbyInterface()
  18. {
  19. ConsoleWindow.Trace("Constructing LobbyInterface");
  20. mSingletonInstance = this;
  21. mScreens = new Array();
  22. mCurScreenID = 0;
  23. mScreensRegistered = 0;
  24. mProfileImageIndex = 1; //TODO: get this from c++
  25. mScreenTabManager = new ScreenTabManager();
  26. onLoad = Initialize;
  27. }
  28. //All screens should be constructed by now, but not neccessarily loaded
  29. public function Initialize():Boolean
  30. {
  31. ConsoleWindow.Trace("LobbyInterface.Initialize()....");
  32. mAccountInfo = new AccountInfo();
  33. ExternalInterface.addCallback("c2f_NotifyConnectionLost", this, c2f_NotifyConnectionLost);
  34. ExternalInterface.addCallback("c2f_GetAccountDetailsResult", mAccountInfo, ServerSetAccountInfo);
  35. return true;
  36. }
  37. public function blah():Void
  38. {
  39. ConsoleWindow.Trace("blah..");
  40. }
  41. public static function get Instance():LobbyInterface
  42. {
  43. return mSingletonInstance;
  44. }
  45. public function GetCurrentScreen():Screen
  46. {
  47. return mScreens[mCurScreenID];
  48. }
  49. public function GetScreen( _screenID:Number ):Screen
  50. {
  51. return mScreens[_screenID];
  52. }
  53. //TODO: get this from c++
  54. //player might get to a page that has a profile image before seeing this screen so we have to make sure this is loaded from c++ first
  55. public function GetProfileImageIndex():Number
  56. {
  57. return mProfileImageIndex;
  58. }
  59. public function GetUsername():String
  60. {
  61. if ( mIsLoggedIn )
  62. {
  63. return mScreens[ScreenID.LOGIN].GetUsername();
  64. }
  65. return null;
  66. }
  67. public function SetLoginState( _state:Boolean ):Void
  68. {
  69. if ( mIsLoggedIn != _state )
  70. {
  71. mIsLoggedIn = _state;
  72. if ( mIsLoggedIn )
  73. {
  74. mcNavigationPanel.OnPlayerLoggedIn();
  75. }
  76. else
  77. {
  78. mcNavigationPanel.OnPlayerLoggedOut();
  79. }
  80. }
  81. }
  82. public function IsLoggedIn():Boolean
  83. {
  84. return mIsLoggedIn;
  85. }
  86. public function RegisterScreen( _screenID:Number, _screen ):Void
  87. {
  88. mScreens[_screenID] = _screen;
  89. mScreensRegistered++;
  90. //trace("Registering screen: " + this[ ScreenID.GetScreenName(_screenID) ] );
  91. ConsoleWindow.Trace("Registering screen: " + mScreens[_screenID] );
  92. //All screens are done loading
  93. if ( mScreensRegistered == ScreenID.TOTAL_SCREENS )
  94. {
  95. ConsoleWindow.Trace( "Finished registering all " + mScreensRegistered + " screens!" );
  96. ShowScreen( ScreenID.CONNECTION );
  97. //GetCurrentScreen()["f2c_Connect"]();
  98. }
  99. }
  100. public function ShowScreen( _id:Number ):Void
  101. {
  102. //mScreens[mCurScreenID].Hide();
  103. mScreenTabManager.ShowScreen( _id );
  104. mLastScreenID = mCurScreenID;
  105. mCurScreenID = _id;
  106. //mScreens[mCurScreenID].Show();
  107. }
  108. public function GetLastScreenId():Number
  109. {
  110. return mLastScreenID;
  111. }
  112. public function ShowLastScreen():Void
  113. {
  114. ShowScreen( mLastScreenID );
  115. }
  116. public function CreateMessageBox( message:String, callback:Function ):Void
  117. {
  118. var messageBox = attachMovie("MessageBox", "MessageBox" + getNextHighestDepth(), getNextHighestDepth() );
  119. messageBox.SetMessage( message, callback );
  120. }
  121. public function IsInFlashMode():Boolean { return mFlashMode; }
  122. //===============================================================================================================================
  123. //Functions called by C++
  124. public function c2f_NotifyConnectionLost(resultIdentifier:String):Void
  125. {
  126. switch (resultIdentifier)
  127. {
  128. case "LCR_CLOSED_BY_USER":
  129. // Programmer closed the connection to the server intentionally
  130. break;
  131. case "LCR_DISCONNECTION_NOTIFICATION":
  132. // Server disconnected us intentionally
  133. break;
  134. case "LCR_CONNECTION_LOST":
  135. // Lost connection to the server
  136. break;
  137. }
  138. // If the user is in any state where you have to be connected (anything other than Disconnected and ConnectingToServer)
  139. // And you get this callback, then show an error dialog, immediately leave whatever screen they are on once they click ok,
  140. // and go to the disconnected state
  141. //gotoAndStop("Disconnected");
  142. ShowScreen(ScreenID.CONNECTION);
  143. }
  144. }
粤ICP备19079148号