PageRenderTime 59ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/ItemMenu.hx

http://portable-monsters.googlecode.com/
Haxe | 403 lines | 344 code | 43 blank | 16 comment | 20 complexity | 3666872484edaae8f1d5443abfcba66a MD5 | raw file
  1. import flash.events.Event;
  2. import flash.display.Sprite;
  3. import flash.events.MouseEvent;
  4. import flash.display.BitmapData;
  5. import flash.display.Bitmap;
  6. import flash.geom.Matrix;
  7. import flash.geom.Rectangle;
  8. import flash.geom.Point;
  9. import flash.text.TextField;
  10. import flash.text.TextFieldAutoSize;
  11. import flash.text.TextFormat;
  12. import flash.text.TextFormatAlign;
  13. import MonsterButton;
  14. import ItemButton;
  15. import MonsterMenu;
  16. import Images;
  17. class ItemMenuEvent extends Event{
  18. public function new(customEventString:String){
  19. super(customEventString, true, false);
  20. }
  21. }
  22. class ItemMenu extends Sprite
  23. {
  24. public var currentMonsterMenu:MonsterMenu;
  25. public var currentTrainer:Trainer;
  26. public var Text:TextField;
  27. public var ItemMenu:Sprite;
  28. public var ItemPage:Int;
  29. public var PrevItemPage:Sprite;
  30. public var NextItemPage:Sprite;
  31. public var currentItem:String;
  32. public var ItemState:String;
  33. public var ItemConfirmBackground:Sprite;
  34. public var ItemYes:Sprite;
  35. public var ItemNo:Sprite;
  36. public var ItemConfirm:TextField;
  37. public var ExitMenu:Sprite;
  38. public var background:Sprite;
  39. // public var volume:Bool;
  40. // public var sound:Bool;
  41. public function new(inTrainer:Trainer)
  42. {
  43. super();
  44. //Resize Image
  45. currentTrainer = inTrainer;
  46. background = new Sprite();
  47. background.graphics.lineStyle(1);
  48. background.graphics.beginFill(0xFFFFFF);
  49. background.graphics.drawRect(0, 0,640-150,Constants.flashHeight);
  50. background.graphics.endFill();
  51. background.x = 0 ; background.y = 0;
  52. //End Resize
  53. addChild(background);
  54. ExitMenu = new CustomSprite();
  55. ExitMenu.graphics.beginFill(0xFFFFFF);
  56. ExitMenu.graphics.lineStyle(1);
  57. ExitMenu.graphics.drawRect(0,0,25,25);
  58. ExitMenu.graphics.beginBitmapFill(new XButton());
  59. ExitMenu.graphics.drawRect(0, 0, 25, 25);
  60. ExitMenu.graphics.endFill();
  61. ExitMenu.x=background.width-35;
  62. ExitMenu.y = 10;
  63. ExitMenu.buttonMode = true;
  64. ExitMenu.addEventListener(MouseEvent.CLICK, onExitMenuClick);
  65. addChild(ExitMenu);
  66. Text = new TextField();
  67. Text.x = 160; Text.y = 0;
  68. Text.width = 330; Text.height = 55;
  69. background.addChild(Text);
  70. Text.multiline = true;
  71. Text.wordWrap = true;
  72. Text.selectable = false;
  73. var myFormat:TextFormat = new TextFormat();
  74. myFormat.size = 16;
  75. myFormat.align = TextFormatAlign.CENTER;
  76. Text.defaultTextFormat = myFormat;
  77. this.addEventListener("Item",onItemSelected);
  78. ItemPage = 1;
  79. PrevItemPage = new Sprite();
  80. var PrevItemPageText = new TextField();
  81. PrevItemPageText.htmlText = "<font size='14'>Prev</font>";
  82. //
  83. background.addChild(PrevItemPageText);
  84. PrevItemPageText.width = 70;
  85. PrevItemPageText.autoSize = TextFieldAutoSize.CENTER;
  86. PrevItemPageText.selectable = false;
  87. PrevItemPageText.mouseEnabled = false;
  88. PrevItemPage.buttonMode = true;
  89. PrevItemPage.addChild(PrevItemPageText);
  90. PrevItemPage.addEventListener(MouseEvent.CLICK, onPrevItemPageClick);
  91. PrevItemPage.graphics.beginFill(0xFFFFFF);
  92. PrevItemPage.graphics.lineStyle(1);
  93. PrevItemPage.graphics.drawRect(0,0,70,32);
  94. PrevItemPage.graphics.endFill();
  95. PrevItemPage.y = 480;
  96. PrevItemPage.x = 165;
  97. NextItemPage = new Sprite();
  98. var NextItemPageText = new TextField();
  99. NextItemPageText.htmlText = "<font size='14'>Next</font>";
  100. //
  101. NextItemPage.addChild(NextItemPageText);
  102. NextItemPageText.width = 70;
  103. NextItemPageText.autoSize = TextFieldAutoSize.CENTER;
  104. NextItemPageText.selectable = false;
  105. NextItemPageText.mouseEnabled = false;
  106. NextItemPage.buttonMode = true;
  107. NextItemPage.addChild(NextItemPageText);
  108. NextItemPage.addEventListener(MouseEvent.CLICK, onNextItemPageClick);
  109. NextItemPage.graphics.beginFill(0xFFFFFF);
  110. NextItemPage.graphics.lineStyle(1);
  111. NextItemPage.graphics.drawRect(0,0,70,32);
  112. NextItemPage.graphics.endFill();
  113. NextItemPage.y = 480; NextItemPage.x = 245;
  114. Text.htmlText = "Items";
  115. ItemMenu = new Sprite();
  116. background.addChild(ItemMenu);
  117. drawItemMenu(ItemPage);
  118. currentMonsterMenu = new MonsterMenu(currentTrainer);
  119. //addChild(QuitButton);
  120. }
  121. public function redraw()
  122. {
  123. drawItemMenu();
  124. }
  125. private function onExitMenuClick(event:MouseEvent) {
  126. dispatchEvent(new Event("Back"));
  127. }
  128. private function onItemSelected (event:ItemButtonEvent) {
  129. var count = 0;
  130. currentItem = event.Name;
  131. ItemState = "UseItem";
  132. var Item = currentTrainer.CurrentInventory.getItemByName(currentItem);
  133. if(!Item.useOnMonster())
  134. {
  135. ItemState ="Confirm";
  136. //addChild Confirm Menu
  137. ItemMenu.addChild(ItemConfirmBackground);
  138. ItemMenu.addChild(ItemConfirm);
  139. ItemMenu.addChild(ItemNo);
  140. ItemMenu.addChild(ItemYes);
  141. }
  142. else
  143. {
  144. ItemState = "FindMonster";
  145. currentMonsterMenu.redraw();
  146. background.addChild(currentMonsterMenu);
  147. currentMonsterMenu.CurrentState = "UseItem";
  148. currentMonsterMenu.StatusText.htmlText = "<font size='16'>Use Item</font>";
  149. currentMonsterMenu.addChild(currentMonsterMenu.ItemConfirmBackground);
  150. currentMonsterMenu.addChild(currentMonsterMenu.ItemConfirm);
  151. currentMonsterMenu.addChild(currentMonsterMenu.ItemNo);
  152. currentMonsterMenu.addEventListener("Cancel",onMonsterItemCancel);
  153. currentMonsterMenu.addEventListener("Use",onMonsterItemUse);
  154. //currentMonsterMenu.addChild(currentMonsterMenu.ItemYes);
  155. }
  156. }
  157. private function onMonsterItemCancel(event:Event)
  158. {
  159. currentMonsterMenu.removeEventListener("Cancel",onMonsterItemCancel);
  160. currentItem = "";
  161. ItemState = "";
  162. background.removeChild(currentMonsterMenu);
  163. currentMonsterMenu.CurrentState = "";
  164. currentMonsterMenu.StatusText.htmlText = "<font size='16'></font>";
  165. currentMonsterMenu.removeChild(currentMonsterMenu.ItemConfirmBackground);
  166. currentMonsterMenu.removeChild(currentMonsterMenu.ItemConfirm);
  167. currentMonsterMenu.removeChild(currentMonsterMenu.ItemNo);
  168. }
  169. private function onMonsterItemUse(event:MonsterMenuEvent)
  170. {
  171. currentMonsterMenu.removeEventListener("Cancel",onMonsterItemCancel);
  172. currentMonsterMenu.removeEventListener("Use",onMonsterItemUse);
  173. ItemState = "";
  174. background.removeChild(currentMonsterMenu);
  175. currentMonsterMenu.CurrentState = "";
  176. currentMonsterMenu.StatusText.htmlText = "<font size='16'></font>";
  177. currentMonsterMenu.removeChild(currentMonsterMenu.ItemConfirmBackground);
  178. currentMonsterMenu.removeChild(currentMonsterMenu.ItemConfirm);
  179. currentMonsterMenu.removeChild(currentMonsterMenu.ItemNo);
  180. var itemMonster:Monster = null;
  181. for(monster in currentTrainer.Monsters)
  182. {
  183. if(monster.ID == event.ID)
  184. {
  185. itemMonster = monster;
  186. break;
  187. }
  188. }
  189. for(monster in currentTrainer.MonstersArchive)
  190. {
  191. if(monster.ID == event.ID)
  192. {
  193. itemMonster = monster;
  194. break;
  195. }
  196. }
  197. currentTrainer.CurrentInventory.useItem(currentItem,itemMonster,null,null);
  198. currentItem = "";
  199. drawItemMenu();
  200. }
  201. private function onPrevItemPageClick(event:MouseEvent)
  202. {
  203. ItemPage--;
  204. drawItemMenu(ItemPage);
  205. }
  206. private function onNextItemPageClick(event:MouseEvent)
  207. {
  208. ItemPage++;
  209. drawItemMenu(ItemPage);
  210. }
  211. private function drawItemMenu(?Page:Int=1)
  212. {
  213. background.removeChild(ItemMenu);
  214. ItemMenu = new Sprite();
  215. ItemMenu.x = 0;
  216. var start = 39*(Page-1);
  217. var finish = 39*Page;
  218. var buttonPosition = 0;
  219. var Title = new TextField();
  220. Title.selectable = false;
  221. Title.htmlText = "<u><font size = '16'>Items</font></u>";
  222. Title.width = 490;
  223. Title.autoSize = TextFieldAutoSize.CENTER;
  224. ItemMenu.addChild(Title);
  225. var countedItems = new List<String>();
  226. for(item in currentTrainer.CurrentInventory)
  227. {
  228. var skip = false;
  229. for(name in countedItems)
  230. {
  231. if(name == item.ID)
  232. {
  233. skip = true;
  234. break;
  235. }
  236. }
  237. if(skip)
  238. {continue;}
  239. var count = currentTrainer.CurrentInventory.getItemsByName(item.ID);
  240. if(buttonPosition < start || buttonPosition >=finish)
  241. {
  242. if(buttonPosition == 0)
  243. {
  244. ItemMenu.addChild(PrevItemPage);
  245. }
  246. if(buttonPosition == finish+1)
  247. {
  248. ItemMenu.addChild(NextItemPage);
  249. }
  250. buttonPosition++;
  251. continue;
  252. }
  253. countedItems.add(item.ID);
  254. var Item = new ItemButton(item.ID,count,!item.useOutsideBattle());
  255. var pagePosition = (buttonPosition-((Page-1)*39));
  256. var column = 0;
  257. column = Math.floor(pagePosition / 13);
  258. Item.x = 15+155*column;Item.y=26+(((pagePosition-(column*13))*35));
  259. ItemMenu.addChild(Item);
  260. buttonPosition++;
  261. }
  262. var menuSize = ((buttonPosition-((Page-1)*13))*35);
  263. ItemMenu.y = 0;
  264. ItemMenu.graphics.beginFill(0xFFFFFF);
  265. ItemMenu.graphics.lineStyle(1);
  266. ItemMenu.graphics.drawRect(0,0,490,512);
  267. ItemMenu.graphics.endFill();
  268. background.addChild(ItemMenu);
  269. ItemConfirmBackground = new Sprite();
  270. //ItemConfirmBackground.y = (Math.max(512-(31+((buttonPosition)*35)),0))/2;
  271. ItemConfirmBackground.graphics.beginFill(0xFFFFFF);
  272. ItemConfirmBackground.graphics.lineStyle(1);
  273. ItemConfirmBackground.graphics.drawRect(0,0,490,512);
  274. ItemConfirmBackground.graphics.endFill();
  275. ItemConfirmBackground.alpha = 0.5;
  276. ItemConfirm = new TextField();
  277. ItemConfirm.background = true;
  278. ItemConfirm.backgroundColor = 0xFFFFFF;
  279. ItemConfirm.htmlText = "<font size='14'>Use Item?</font>";
  280. ItemConfirm.autoSize = TextFieldAutoSize.CENTER;
  281. ItemConfirm.width = (490 - ItemConfirm.width/2);
  282. ItemConfirm.y = 150;
  283. ItemConfirm.selectable = false;
  284. ItemConfirm.mouseEnabled = false;
  285. //ItemConfirm.y = 12;
  286. ItemYes = new Sprite();
  287. var ItemYesText = new TextField();
  288. ItemYesText.htmlText = "<font size='14'>Confirm</font>";
  289. ItemYes.addChild(ItemYesText);
  290. ItemYesText.width = 70;
  291. ItemYesText.autoSize = TextFieldAutoSize.CENTER;
  292. ItemYesText.selectable = false;
  293. ItemYesText.mouseEnabled = false;
  294. ItemYes.buttonMode = true;
  295. ItemYes.addChild(ItemYesText);
  296. ItemYes.addEventListener(MouseEvent.CLICK, onItemYesClick);
  297. ItemYes.graphics.beginFill(0xFFFFFF);
  298. ItemYes.graphics.lineStyle(1);
  299. ItemYes.graphics.drawRect(0,0,70,32);
  300. ItemYes.graphics.endFill();
  301. ItemYes.y = 170;
  302. ItemYes.x = 175;
  303. ItemNo = new Sprite();
  304. ItemNo.mouseChildren = false;
  305. var ItemNoText = new TextField();
  306. ItemNoText.htmlText = "<font size='14'>Cancel</font>";
  307. //
  308. ItemNo.addChild(ItemNoText);
  309. ItemNoText.width = 70;
  310. ItemNoText.autoSize = TextFieldAutoSize.CENTER;
  311. ItemNoText.selectable = false;
  312. ItemNoText.mouseEnabled = false;
  313. ItemNo.buttonMode = true;
  314. ItemNo.addChild(ItemNoText);
  315. ItemNo.addEventListener(MouseEvent.CLICK, onItemNoClick);
  316. ItemNo.graphics.beginFill(0xFFFFFF);
  317. ItemNo.graphics.lineStyle(1);
  318. ItemNo.graphics.drawRect(0,0,70,32);
  319. ItemNo.graphics.endFill();
  320. ItemNo.y = 170;ItemNo.x = 250;
  321. }
  322. private function onItemYesClick(event:MouseEvent)
  323. {
  324. //State = "Finish";
  325. var Item = currentTrainer.CurrentInventory.getItemByName(currentItem);
  326. if(!Item.useOnMonster())
  327. {
  328. ItemMenu.removeChild(ItemConfirmBackground);
  329. ItemMenu.removeChild(ItemConfirm);
  330. ItemMenu.removeChild(ItemNo);
  331. //addChild Confirm Menu
  332. ItemMenu.removeChild(ItemYes);
  333. currentTrainer.CurrentInventory.useItem(currentItem,null,currentTrainer,null);
  334. drawItemMenu(ItemPage);
  335. }
  336. else
  337. {
  338. }
  339. currentItem ="";
  340. ItemState = "";
  341. }
  342. private function onItemNoClick(event:MouseEvent)
  343. {
  344. //State = "Finish";
  345. ItemMenu.removeChild(ItemConfirmBackground);
  346. ItemMenu.removeChild(ItemConfirm);
  347. ItemMenu.removeChild(ItemNo);
  348. var Item = currentTrainer.CurrentInventory.getItemByName(currentItem);
  349. if(!Item.useOnMonster())
  350. {
  351. //addChild Confirm Menu
  352. ItemMenu.removeChild(ItemYes);
  353. }
  354. else
  355. {
  356. }
  357. currentItem ="";
  358. ItemState = "";
  359. }
  360. }