ClanBlockListScreen.as 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. import flash.external.*;
  2. import gfx.controls.TextInput;
  3. import gfx.controls.Button;
  4. import gfx.controls.ScrollBar;
  5. import mx.utils.Delegate;
  6. class Screens.ClanBlockListScreen extends ScreenWithPageNavigator
  7. {
  8. private var ignoreUsernameEditBox:TextInput;
  9. private var startIgnoreButton:Button;
  10. private var btnBack:Button;
  11. private var tfClanName:TextField;
  12. private var mIsWaitingForResponseFromServer:Boolean; //true when user hit ignore or stop ignore to wait for server to verify the action
  13. private var mUsernameOnHold:String;
  14. private var mcMail:Mail;
  15. private var mUserToUnblock:MovieClip;
  16. private static var mInstance:ClanBlockListScreen;
  17. public function ClanBlockListScreen()
  18. {
  19. ConsoleWindow.Trace("Constructing ClanBlockListScreen");
  20. mScreenId = ScreenID.CLAN_BLOCK_LIST;
  21. mScreenTabId = ScreenTab.ID_CLANS;
  22. mIsWaitingForResponseFromServer = false;
  23. mEntriesPerPage = 10;
  24. mFirstEntryX = 440;
  25. mFirstEntryY = -245;
  26. mDeltaY = 10;
  27. mInstance = this;
  28. }
  29. public static function get Instance():ClanBlockListScreen
  30. {
  31. return mInstance;
  32. }
  33. public function VOnFinishedLoading():Void
  34. {
  35. //Add click event for buttons
  36. startIgnoreButton.addEventListener("click", this, "ShowKickAndBlockMail");
  37. //stopIgnoreButton.addEventListener("click", this, "f2c_StopIgnore");
  38. btnBack.addEventListener("click", this, "Back");
  39. //Add callbacks for C++
  40. // ExternalInterface.addCallback("c2f_StartIgnore", this, c2f_StartIgnore);
  41. // ExternalInterface.addCallback("c2f_StopIgnore", this, c2f_StopIgnore);
  42. // ExternalInterface.addCallback("c2f_GetIgnoreListResult", this, c2f_GetIgnoreListResult);
  43. ExternalInterface.addCallback("c2f_Clans_KickAndBlacklistUser", this, c2f_Clans_KickAndBlacklistUser);
  44. ExternalInterface.addCallback("c2f_Clans_UnblacklistUser", this, c2f_Clans_UnblacklistUser);
  45. ExternalInterface.addCallback("c2f_Clans_GetBlacklist", this, c2f_Clans_GetBlacklist);
  46. super.VOnFinishedLoading();
  47. }
  48. public function OnShow():Void
  49. {
  50. super.OnShow();
  51. mcMail._visible = false;
  52. //ConsoleWindow.Trace("blocked user list length = " + mMovieClipList.length);
  53. if ( mMovieClipList.length > 0 )
  54. {
  55. CleanUpMoveClipList( mMovieClipList );
  56. }
  57. mMovieClipList = new Array();
  58. mCurrentPage = 0;
  59. GoToPage( 1 );
  60. f2c_GetIgnoreList();
  61. mIsWaitingForResponseFromServer = false;
  62. }
  63. public function SetClanName( name:String ):Void { tfClanName.text = name; }
  64. public function Back():Void
  65. {
  66. LobbyInterface.Instance.ShowLastScreen();
  67. }
  68. public function ShowKickAndBlockMail():Void
  69. {
  70. mcMail.Clear();
  71. mcMail.SetButton( 1, "CANCEL", Delegate.create(this, HideMail) );
  72. mcMail.SetButton( 2, "KICK", Delegate.create(this, f2c_Clans_KickAndBlacklistUser) );
  73. mcMail.SetTitle( "KICK AND BLOCK USER FROM CLAN" );
  74. mcMail.SetToField( ignoreUsernameEditBox.text );
  75. mcMail.SetSubjectField( "Kicked From " + tfClanName.text );
  76. mcMail.SetCheckBox( "BLOCK USER" );
  77. mcMail.swapDepths( getNextHighestDepth() );
  78. mcMail._visible = true;
  79. }
  80. public function f2c_Clans_KickAndBlacklistUser():Void
  81. {
  82. if ( !mIsWaitingForResponseFromServer )
  83. {
  84. mIsWaitingForResponseFromServer = true;
  85. //ExternalInterface.call("f2c_StartIgnore", ignoreUsernameEditBox.text);
  86. mUsernameOnHold = ignoreUsernameEditBox.text;
  87. ExternalInterface.call("f2c_Clans_KickAndBlacklistUser", tfClanName.text, mcMail.GetSubjectField(), mcMail.GetMsgField(), "0",
  88. mcMail.GetToField(),
  89. true,
  90. mcMail.IsCheckBoxOn(),
  91. "Unknown Reason" //The 'reason' field is sent to all clan members and is a short message or identifier. It is also stored in the database along with their username, so that if say a moderator later wanted to know why the guy was kicked, you could tell why. As it is defined by the application, this could be a text string, a phrase, a paragraph, or just some identifier.
  92. );
  93. }
  94. }
  95. public function ShowStopIgnoreMail( blockedUserEntry:MovieClip ):Void
  96. {
  97. if ( !mIsWaitingForResponseFromServer )
  98. {
  99. mIsWaitingForResponseFromServer = true;
  100. mUserToUnblock = blockedUserEntry;
  101. mcMail.Clear();
  102. mcMail.SetButton( 1, "CANCEL", Delegate.create(this, HideMail) );
  103. mcMail.SetButton( 2, "UNBLOCK", Delegate.create(this, StopIgnore) );
  104. mcMail.SetTitle( "UNBLOCK USER FROM CLAN" );
  105. mcMail.SetToField( blockedUserEntry.tfUsername.text );
  106. mcMail.DisableToField();
  107. mcMail.SetSubjectField( "Unblocked From " + tfClanName.text );
  108. mcMail.swapDepths( getNextHighestDepth() );
  109. mcMail._visible = true;
  110. }
  111. }
  112. public function StopIgnore():Void
  113. {
  114. ConsoleWindow.Trace("StopIgnore: " + mUserToUnblock);
  115. if ( mUserToUnblock )
  116. {
  117. //f2c_StopIgnore( blockedUserEntry.tfUsername.text );
  118. ExternalInterface.call("f2c_Clans_UnblacklistUser", tfClanName.text, mcMail.GetSubjectField(), mcMail.GetMsgField(), "0",
  119. mUserToUnblock.tfUsername.text);
  120. RemoveEntryFromList( mUserToUnblock, mMovieClipList );
  121. }
  122. }
  123. public function f2c_StopIgnore( _username:String ):Void
  124. {
  125. if ( !mIsWaitingForResponseFromServer )
  126. {
  127. ExternalInterface.call("f2c_StopIgnore", _username);
  128. }
  129. }
  130. public function f2c_GetIgnoreList():Void
  131. {
  132. //ExternalInterface.call("f2c_GetIgnoreList");
  133. ExternalInterface.call("f2c_Clans_GetBlacklist", tfClanName.text);
  134. }
  135. public function c2f_GetIgnoreListResult():Void
  136. {
  137. ConsoleWindow.Trace("c2f_GetIgnoreListResult...");
  138. for (var i:Number = 0; i < arguments.length; i++)
  139. {
  140. // Array of handles (string)
  141. ConsoleWindow.Trace(arguments[i]);
  142. }
  143. //TODO: remove this once c++ sends down proper data
  144. for ( var n:Number = 0; n < 25; n++ )
  145. {
  146. /*var userEntry:MovieClip = attachMovie("BlockListEntry", "blockedUser" + mMovieClipList.length, getNextHighestDepth() );
  147. userEntry._visible = false;
  148. userEntry.tfUsername.text = "testUser" + mMovieClipList.length;
  149. mMovieClipList.push( userEntry );
  150. var self:BlockListScreen = this;
  151. userEntry.mcDelete.onPress = function() { self.StopIgnore( this._parent ); }*/
  152. AddBlockListEntry( "testUser" + mMovieClipList.length );
  153. }
  154. OnMoveClipListUpdated();
  155. ShowPage(1);
  156. }
  157. public function IgnoreUser( _username:String, _profileImageIndex:Number ):Void
  158. {
  159. /* var userEntry:MovieClip = attachMovie("BlockListEntry", "blockedUser" + mMovieClipList.length, getNextHighestDepth() );
  160. userEntry._visible = false;
  161. userEntry.tfUsername.text = _username;
  162. mMovieClipList.push( userEntry );
  163. var self:BlockListScreen = this;
  164. userEntry.mcDelete.onPress = function() { self.StopIgnore( this._parent ); }*/
  165. AddBlockListEntry( _username );
  166. TogglePageVisibility(mCurrentPage, true );
  167. OnMoveClipListUpdated();
  168. }
  169. public function HideMail():Void
  170. {
  171. mcMail._visible = false;
  172. }
  173. public function AddBlockListEntry( _username:String ):Void
  174. {
  175. var userEntry:MovieClip = attachMovie("BlockListEntry", "blockedUser" + mMovieClipList.length, getNextHighestDepth() );
  176. userEntry._visible = false;
  177. userEntry.tfUsername.text = _username;
  178. mMovieClipList.push( userEntry );
  179. ConsoleWindow.Trace("Ignoring user: " + userEntry);
  180. var self:ClanBlockListScreen = this;
  181. userEntry.mcDelete.onPress = function() { self.ShowStopIgnoreMail( this._parent ); }
  182. }
  183. private function OnShowMovieClipEntry( mcEntry:MovieClip, index:Number ):Void
  184. {
  185. //ConsoleWindow.Trace("BlockList... OnShowMovieClipEntry: " + mcEntry.mcDelete.onPress);
  186. super.OnShowMovieClipEntry( mcEntry, index );
  187. }
  188. private function OnHideMovieClipEntry( mcEntry:MovieClip ):Void
  189. {
  190. //ConsoleWindow.Trace("BlockList... OnHideMovieClipEntry: " + mcEntry.mcDelete.onPress );
  191. mcEntry.mcDelete.onPress = null;
  192. }
  193. public function c2f_Clans_GetBlacklist(resultIdentifier:String):Void
  194. {
  195. ConsoleWindow.Trace("c2f_Clans_GetBlacklist(), arguments = " + arguments);
  196. switch (resultIdentifier)
  197. {
  198. case "Clans_GetBlacklist_UNKNOWN_CLAN":
  199. break;
  200. case "DATABASE_CONSTRAINT_FAILURE":
  201. break;
  202. case "SUCCESS":
  203. ConsoleWindow.Trace("c2f_Clans_GetBlacklist(), success!");
  204. var length:Number = arguments.length;
  205. for ( var i:Number = 1; i < length; i++ )
  206. {
  207. AddBlockListEntry( arguments[i] );
  208. }
  209. OnMoveClipListUpdated();
  210. ShowPage(1);
  211. break;
  212. }
  213. if ( resultIdentifier != "SUCCESS" )
  214. {
  215. LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
  216. }
  217. }
  218. public function c2f_Clans_KickAndBlacklistUser(resultIdentifier:String):Void
  219. {
  220. switch (resultIdentifier)
  221. {
  222. case "Clans_KickAndBlacklistUser_UNKNOWN_CLAN":
  223. break;
  224. case "Clans_KickAndBlacklistUser_NOT_IN_CLAN":
  225. break;
  226. case "Clans_KickAndBlacklistUser_MUST_BE_LEADER_OR_SUBLEADER":
  227. break;
  228. case "Clans_KickAndBlacklistUser_UNKNOWN_TARGET_HANDLE":
  229. break;
  230. case "Clans_KickAndBlacklistUser_CANNOT_PERFORM_ON_SELF":
  231. break;
  232. case "Clans_KickAndBlacklistUser_CANNOT_PERFORM_ON_LEADER":
  233. break;
  234. case "Clans_KickAndBlacklistUser_ALREADY_BLACKLISTED":
  235. break;
  236. case "SUCCESS":
  237. ConsoleWindow.Trace("c2f_Clans_KickAndBlacklistUser(), success!");
  238. HideMail();
  239. break;
  240. }
  241. mIsWaitingForResponseFromServer = false;
  242. if ( resultIdentifier != "SUCCESS" )
  243. {
  244. LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
  245. }
  246. }
  247. public function c2f_Clans_UnblacklistUser(resultIdentifier:String):Void
  248. {
  249. switch (resultIdentifier)
  250. {
  251. case "Clans_UnblacklistUser_UNKNOWN_CLAN":
  252. break;
  253. case "Clans_UnblacklistUser_NOT_IN_CLAN":
  254. break;
  255. case "Clans_UnblacklistUser_MUST_BE_LEADER_OR_SUBLEADER":
  256. break;
  257. case "Clans_UnblacklistUser_UNKNOWN_TARGET_HANDLE":
  258. break;
  259. case "Clans_UnblacklistUser_NOT_BLACKLISTED":
  260. break;
  261. case "SUCCESS":
  262. ConsoleWindow.Trace("c2f_Clans_UnblacklistUser(), success");
  263. HideMail();
  264. break;
  265. }
  266. mIsWaitingForResponseFromServer = false;
  267. if ( resultIdentifier != "SUCCESS" )
  268. {
  269. LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
  270. }
  271. }
  272. }
粤ICP备19079148号