ClanRootScreen.as 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. import flash.external.*;
  2. import gfx.controls.TextInput;
  3. import gfx.controls.Button;
  4. import Screens.ClanGeneralScreen;
  5. class Screens.ClanRootScreen extends ScreenWithPageNavigator
  6. {
  7. private var btnCreateClan:Button;
  8. private var btnPending:Button;
  9. private var btnMyClans:Button;
  10. private var btnSearch:Button;
  11. private var tiSearch:TextInput;
  12. private var mClanNames:Array;
  13. private static var mInstance:ClanRootScreen;
  14. public function ClanRootScreen()
  15. {
  16. ConsoleWindow.Trace("Constructing ClanRootScreen");
  17. mScreenId = ScreenID.CLAN_ROOT;
  18. mScreenTabId = ScreenTab.ID_CLANS;
  19. mEntriesPerPage = 10;
  20. mFirstEntryX = 435;
  21. mFirstEntryY = -280;
  22. mDeltaY = 10;
  23. mInstance = this;
  24. }
  25. public static function get Instance():ClanRootScreen { return mInstance; }
  26. public function VOnFinishedLoading():Void
  27. {
  28. //Add click event for buttons
  29. //btnCreateClan.addEventListener("click", this, "SetStateToClanFunctionsGeneral");
  30. btnCreateClan.addEventListener("click", this, "CreateClan");
  31. btnPending.addEventListener("click", this, "SetStateToClanFunctionsInvolvingEmail");
  32. btnMyClans.addEventListener("click", this, "GoToMyClans");
  33. btnSearch.addEventListener("click", this, "Search");
  34. //Add callbacks for C++
  35. ExternalInterface.addCallback("c2f_Clans_GetList", this, c2f_Clans_GetList);
  36. super.VOnFinishedLoading();
  37. }
  38. public function OnShow():Void
  39. {
  40. super.OnShow();
  41. if ( mMovieClipList.length > 0 )
  42. {
  43. CleanUpMoveClipList( mMovieClipList );
  44. }
  45. mMovieClipList = new Array();
  46. mCurrentPage = 0;
  47. GoToPage( 1 );
  48. ExternalInterface.call("f2c_Clans_GetList");
  49. }
  50. public function CreateClan():Void
  51. {
  52. LobbyInterface.Instance.ShowScreen( ScreenID.CLAN_CREATE );
  53. }
  54. public function GoToMyClans():Void
  55. {
  56. LobbyInterface.Instance.ShowScreen( ScreenID.CLAN_MY_CLANS );
  57. }
  58. public function SetStateToClanFunctionsGeneral():Void
  59. {
  60. //_root.gotoAndStop("ClanFunctionsGeneral");
  61. LobbyInterface.Instance.ShowScreen( ScreenID.CLAN_GENERAL );
  62. }
  63. public function SetStateToClanFunctionsInvolvingEmail():Void
  64. {
  65. //_root.gotoAndStop("ClanFunctionsInvolvingEmail");
  66. //LobbyInterface.Instance.ShowScreen( ScreenID.CLAN_EMAIL );
  67. LobbyInterface.Instance.ShowScreen( ScreenID.CLAN_INVITED_REQUESTED );
  68. }
  69. public function SetStateToClanFunctionsQuery():Void
  70. {
  71. //_root.gotoAndStop("ClanFunctionsQuery");
  72. LobbyInterface.Instance.ShowScreen( ScreenID.CLAN_QUERY );
  73. }
  74. public function Search():Void
  75. {
  76. var targetClan:String = tiSearch.text.toLowerCase();
  77. if ( targetClan.length > 0 )
  78. {
  79. if ( mMovieClipList.length > 0 )
  80. {
  81. CleanUpMoveClipList( mMovieClipList );
  82. }
  83. mMovieClipList = new Array();
  84. mCurrentPage = 0;
  85. GoToPage( 1 );
  86. ConsoleWindow.Trace("Search()... " + targetClan);
  87. var length:Number = mClanNames.length;
  88. for ( var i:Number = 0; i < length; i++ )
  89. {
  90. var clan:String = mClanNames[i].toLowerCase();
  91. //ConsoleWindow.Trace("... looking at " + clan);
  92. if ( clan.length >= targetClan.length )
  93. {
  94. var length2:Number = clan.length;
  95. var lettersFound:Number = 0;
  96. for ( var m:Number = 0; m < length2; m++ )
  97. {
  98. //ConsoleWindow.Trace("... letter " + clan.charAt(m));
  99. //ConsoleWindow.Trace("... comparing " + targetClan.charAt(lettersFound) + " and " + clan.charAt(m));
  100. if ( targetClan.charAt(lettersFound) == clan.charAt(m) )
  101. {
  102. lettersFound++;
  103. //ConsoleWindow.Trace("... found " + lettersFound);
  104. if ( lettersFound == targetClan.length )
  105. {
  106. //ConsoleWindow.Trace("Adding entry! " + clan);
  107. AddListEntry( clan, 1 );
  108. m = length2;
  109. }
  110. }
  111. else
  112. {
  113. if ( lettersFound > 0 )
  114. {
  115. m--;
  116. }
  117. lettersFound = 0;
  118. }
  119. }
  120. }
  121. }
  122. OnMoveClipListUpdated();
  123. ShowPage(1);
  124. }
  125. }
  126. public function c2f_Clans_GetList():Void
  127. {
  128. var resultIdentifier:String = arguments[0];
  129. ConsoleWindow.Trace("c2f_Clans_GetList, resultIdentifier = " + resultIdentifier);
  130. switch (resultIdentifier)
  131. {
  132. case "DATABASE_CONSTRAINT_FAILURE":
  133. break;
  134. case "SUCCESS":
  135. {
  136. mClanNames = new Array();
  137. var numClanNames = arguments.length-1;
  138. for (var i:Number=0; i < numClanNames; i++)
  139. {
  140. var clanName:String = arguments[1+i];
  141. ConsoleWindow.Trace("clanName = " + clanName);
  142. AddListEntry(clanName);
  143. mClanNames.push( clanName );
  144. }
  145. OnMoveClipListUpdated();
  146. ShowPage(1);
  147. break;
  148. }
  149. }
  150. if ( resultIdentifier != "SUCCESS" )
  151. {
  152. LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
  153. }
  154. }
  155. private function AddListEntry( clanToAdd:String, _profileImageIndex:Number ):MovieClip
  156. {
  157. var clanEntry:MovieClip = attachMovie("ClanListEntry", "mcClanEntry" + mMovieClipList.length, getNextHighestDepth() );
  158. clanEntry._visible = false;
  159. clanEntry.tfClanName.text = clanToAdd;
  160. mMovieClipList.push( clanEntry );
  161. ConsoleWindow.Trace("Adding entry: " + clanEntry);
  162. var self:ClanRootScreen = this;
  163. clanEntry.onPress = function() { self.OnSelectClan( this ); }
  164. return clanEntry;
  165. }
  166. public function OnSelectClan( clanEntry:MovieClip ):Void
  167. {
  168. ConsoleWindow.Trace("clanRootScreen.OnSelectClan, clan = " + clanEntry._name);
  169. ClanGeneralScreen.Instance.SetClanName( clanEntry.tfClanName.text );
  170. LobbyInterface.Instance.ShowScreen( ScreenID.CLAN_GENERAL );
  171. }
  172. }
粤ICP备19079148号