PageRenderTime 44ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/BuySellMenu.hx

http://portable-monsters.googlecode.com/
Haxe | 572 lines | 482 code | 66 blank | 24 comment | 40 complexity | b29d5acbfe76e52300575255377db7f7 MD5 | raw file
  1. import flash.events.Event;
  2. import flash.events.FocusEvent;
  3. import flash.display.Sprite;
  4. import flash.events.MouseEvent;
  5. import flash.display.BitmapData;
  6. import flash.display.Bitmap;
  7. import flash.geom.Matrix;
  8. import flash.geom.Rectangle;
  9. import flash.geom.Point;
  10. import flash.text.TextField;
  11. import flash.text.TextFieldAutoSize;
  12. import flash.text.TextFieldType;
  13. import flash.text.TextFormat;
  14. import flash.text.TextFormatAlign;
  15. import MonsterButton;
  16. import ItemButton;
  17. import BuyItemButton;
  18. import MonsterMenu;
  19. import Images;
  20. class BuySellMenuEvent extends Event{
  21. public function new(customEventString:String){
  22. super(customEventString, true, false);
  23. }
  24. }
  25. class BuySellMenu extends Sprite
  26. {
  27. public var currentMonsterMenu:MonsterMenu;
  28. public var currentTrainer:Trainer;
  29. public var Text:TextField;
  30. public var BuyItemMenu:Sprite;
  31. public var BuyItemPage:Int;
  32. public var PrevBuyItemPage:Sprite;
  33. public var NextBuyItemPage:Sprite;
  34. public var ItemsLayer:Sprite;
  35. public var ItemMenu:Sprite;
  36. public var ItemPage:Int;
  37. public var PrevItemPage:Sprite;
  38. public var NextItemPage:Sprite;
  39. public var currentItem:String;
  40. public var ItemState:String;
  41. public var ItemConfirmBackground:Sprite;
  42. public var ItemNumber:TextField;
  43. public var ItemYes:Sprite;
  44. public var ItemNo:Sprite;
  45. public var ItemConfirm:TextField;
  46. public var BuyableItems:List<Item>;
  47. private var tableExit:Sprite;
  48. // public var volume:Bool;
  49. // public var sound:Bool;
  50. public function new(inTrainer:Trainer,inBuyableItems:List<Item>)
  51. {
  52. super();
  53. //Resize Image
  54. currentTrainer = inTrainer;
  55. BuyableItems = inBuyableItems;
  56. var background = new Sprite();
  57. background.graphics.lineStyle(1);
  58. background.graphics.beginFill(0xFFFFFF);
  59. background.graphics.drawRect(0, 0,640,Constants.flashHeight);
  60. background.graphics.endFill();
  61. background.x = 0 ; background.y = 0;
  62. //End Resize
  63. addChild(background);
  64. Text = new TextField();
  65. Text.x = 160; Text.y = 0;
  66. Text.width = 330; Text.height = 55;
  67. addChild(Text);
  68. Text.multiline = true;
  69. Text.wordWrap = true;
  70. Text.selectable = false;
  71. var myFormat:TextFormat = new TextFormat();
  72. myFormat.size = 16;
  73. myFormat.align = TextFormatAlign.CENTER;
  74. Text.defaultTextFormat = myFormat;
  75. this.addEventListener("Item",onItemSelected);
  76. ItemPage = 1;
  77. PrevItemPage = new Sprite();
  78. var PrevItemPageText = new TextField();
  79. PrevItemPageText.htmlText = "<font size='14'>Prev</font>";
  80. //
  81. this.addChild(PrevItemPageText);
  82. PrevItemPageText.width = 70;
  83. PrevItemPageText.autoSize = TextFieldAutoSize.CENTER;
  84. PrevItemPageText.selectable = false;
  85. PrevItemPageText.mouseEnabled = false;
  86. PrevItemPage.buttonMode = true;
  87. PrevItemPage.addChild(PrevItemPageText);
  88. PrevItemPage.addEventListener(MouseEvent.CLICK, onPrevItemPageClick);
  89. PrevItemPage.graphics.beginFill(0xFFFFFF);
  90. PrevItemPage.graphics.lineStyle(1);
  91. PrevItemPage.graphics.drawRect(0,0,70,32);
  92. PrevItemPage.graphics.endFill();
  93. PrevItemPage.y = 480;
  94. PrevItemPage.x = 165;
  95. NextItemPage = new Sprite();
  96. var NextItemPageText = new TextField();
  97. NextItemPageText.htmlText = "<font size='14'>Next</font>";
  98. //
  99. NextItemPage.addChild(NextItemPageText);
  100. NextItemPageText.width = 70;
  101. NextItemPageText.autoSize = TextFieldAutoSize.CENTER;
  102. NextItemPageText.selectable = false;
  103. NextItemPageText.mouseEnabled = false;
  104. NextItemPage.buttonMode = true;
  105. NextItemPage.addChild(NextItemPageText);
  106. NextItemPage.addEventListener(MouseEvent.CLICK, onNextItemPageClick);
  107. NextItemPage.graphics.beginFill(0xFFFFFF);
  108. NextItemPage.graphics.lineStyle(1);
  109. NextItemPage.graphics.drawRect(0,0,70,32);
  110. NextItemPage.graphics.endFill();
  111. NextItemPage.y = 480; NextItemPage.x = 245;
  112. //Text.htmlText = "Items";
  113. ItemsLayer = new Sprite();
  114. addChild(ItemsLayer);
  115. ItemMenu = new Sprite();
  116. ItemsLayer.addChild(ItemMenu);
  117. drawItemMenu(ItemPage);
  118. this.addEventListener("BuyItem",onBuyItemSelected);
  119. BuyItemPage = 1;
  120. PrevBuyItemPage = new Sprite();
  121. var PrevBuyItemPageText = new TextField();
  122. PrevBuyItemPageText.htmlText = "<font size='14'>Prev</font>";
  123. //
  124. this.addChild(PrevBuyItemPageText);
  125. PrevBuyItemPageText.width = 70;
  126. PrevBuyItemPageText.autoSize = TextFieldAutoSize.CENTER;
  127. PrevBuyItemPageText.selectable = false;
  128. PrevBuyItemPageText.mouseEnabled = false;
  129. PrevBuyItemPage.buttonMode = true;
  130. PrevBuyItemPage.addChild(PrevBuyItemPageText);
  131. PrevBuyItemPage.addEventListener(MouseEvent.CLICK, onPrevBuyItemPageClick);
  132. PrevBuyItemPage.graphics.beginFill(0xFFFFFF);
  133. PrevBuyItemPage.graphics.lineStyle(1);
  134. PrevBuyItemPage.graphics.drawRect(0,0,70,32);
  135. PrevBuyItemPage.graphics.endFill();
  136. PrevBuyItemPage.y = 480;
  137. PrevBuyItemPage.x = 165;
  138. NextBuyItemPage = new Sprite();
  139. var NextBuyItemPageText = new TextField();
  140. NextBuyItemPageText.htmlText = "<font size='14'>Next</font>";
  141. //
  142. NextBuyItemPage.addChild(NextBuyItemPageText);
  143. NextBuyItemPageText.width = 70;
  144. NextBuyItemPageText.autoSize = TextFieldAutoSize.CENTER;
  145. NextBuyItemPageText.selectable = false;
  146. NextBuyItemPageText.mouseEnabled = false;
  147. NextBuyItemPage.buttonMode = true;
  148. NextBuyItemPage.addChild(NextBuyItemPageText);
  149. NextBuyItemPage.addEventListener(MouseEvent.CLICK, onNextBuyItemPageClick);
  150. NextBuyItemPage.graphics.beginFill(0xFFFFFF);
  151. NextBuyItemPage.graphics.lineStyle(1);
  152. NextBuyItemPage.graphics.drawRect(0,0,70,32);
  153. NextBuyItemPage.graphics.endFill();
  154. NextBuyItemPage.y = 480; NextBuyItemPage.x = 245;
  155. BuyItemMenu = new Sprite();
  156. ItemsLayer.addChild(BuyItemMenu);
  157. drawBuyItemMenu(BuyItemPage);
  158. currentMonsterMenu = new MonsterMenu(currentTrainer);
  159. tableExit = new CustomSprite();
  160. tableExit.graphics.beginFill(0xFFFFFF);
  161. tableExit.graphics.lineStyle(1);
  162. tableExit.graphics.drawRect(0,0,25,25);
  163. tableExit.graphics.beginBitmapFill(new XButton());
  164. tableExit.graphics.drawRect(0, 0, 25, 25);
  165. tableExit.graphics.endFill();
  166. tableExit.x=background.width-35;
  167. tableExit.y = 10;
  168. tableExit.buttonMode = true;
  169. tableExit.addEventListener(MouseEvent.CLICK, ontableExitClick);
  170. addChild(tableExit);
  171. ItemConfirmBackground = new Sprite();
  172. //ItemConfirmBackground.y = (Math.max(512-(31+((buttonPosition)*35)),0))/2;
  173. ItemConfirmBackground.graphics.beginFill(0xFFFFFF);
  174. ItemConfirmBackground.graphics.lineStyle(1);
  175. ItemConfirmBackground.graphics.drawRect(0,0,6440,512);
  176. ItemConfirmBackground.graphics.endFill();
  177. ItemConfirmBackground.alpha = 0.5;
  178. ItemNumber = new TextField();
  179. ItemNumber.type = TextFieldType.INPUT;
  180. ItemNumber.border = true;
  181. ItemNumber.x = 225;
  182. ItemNumber.y = 175;
  183. ItemNumber.width = 35;
  184. ItemNumber.height = 35;
  185. ItemNumber.multiline = true;
  186. ItemNumber.wordWrap = true;
  187. ItemNumber.addEventListener(FocusEvent.FOCUS_OUT,ItemNumberOut);
  188. ItemConfirm = new TextField();
  189. ItemConfirm.background = true;
  190. ItemConfirm.backgroundColor = 0xFFFFFF;
  191. ItemConfirm.htmlText = "<font size='14'>Use Item?</font>";
  192. ItemConfirm.autoSize = TextFieldAutoSize.CENTER;
  193. ItemConfirm.width = (490 - ItemConfirm.width/2);
  194. ItemConfirm.y = 150;
  195. ItemConfirm.selectable = false;
  196. ItemConfirm.mouseEnabled = false;
  197. //ItemConfirm.y = 12;
  198. ItemYes = new Sprite();
  199. var ItemYesText = new TextField();
  200. ItemYesText.htmlText = "<font size='14'>Confirm</font>";
  201. ItemYes.addChild(ItemYesText);
  202. ItemYesText.width = 70;
  203. ItemYesText.autoSize = TextFieldAutoSize.CENTER;
  204. ItemYesText.selectable = false;
  205. ItemYesText.mouseEnabled = false;
  206. ItemYes.buttonMode = true;
  207. ItemYes.addChild(ItemYesText);
  208. ItemYes.addEventListener(MouseEvent.CLICK, onItemYesClick);
  209. ItemYes.graphics.beginFill(0xFFFFFF);
  210. ItemYes.graphics.lineStyle(1);
  211. ItemYes.graphics.drawRect(0,0,70,32);
  212. ItemYes.graphics.endFill();
  213. ItemYes.y = 215;
  214. ItemYes.x = 175;
  215. ItemNo = new Sprite();
  216. ItemNo.mouseChildren = false;
  217. var ItemNoText = new TextField();
  218. ItemNoText.htmlText = "<font size='14'>Cancel</font>";
  219. //
  220. ItemNo.addChild(ItemNoText);
  221. ItemNoText.width = 70;
  222. ItemNoText.autoSize = TextFieldAutoSize.CENTER;
  223. ItemNoText.selectable = false;
  224. ItemNoText.mouseEnabled = false;
  225. ItemNo.buttonMode = true;
  226. ItemNo.addChild(ItemNoText);
  227. ItemNo.addEventListener(MouseEvent.CLICK, onItemNoClick);
  228. ItemNo.graphics.beginFill(0xFFFFFF);
  229. ItemNo.graphics.lineStyle(1);
  230. ItemNo.graphics.drawRect(0,0,70,32);
  231. ItemNo.graphics.endFill();
  232. ItemNo.y = 215;ItemNo.x = 250;
  233. //addChild(QuitButton);
  234. }
  235. public function redraw()
  236. {
  237. drawItemMenu();
  238. drawBuyItemMenu();
  239. }
  240. private function ItemNumberOut(event:FocusEvent) {
  241. try
  242. {
  243. var count = currentTrainer.CurrentInventory.getItemsByName(currentItem);
  244. var number = Std.parseInt(ItemNumber.text);
  245. var input = Std.string(number);
  246. if(ItemState == "Buy")
  247. {
  248. var BuyItem = new Item();
  249. BuyItem.updateItem(new Point(),currentItem);
  250. if(BuyItem.getValue() == 0)
  251. {count = 100;}
  252. else
  253. {count = Std.int(currentTrainer.Money/BuyItem.getValue());}
  254. }
  255. if(input == "" || input == null || input == "null")
  256. {
  257. ItemNumber.text = "0";
  258. }
  259. else
  260. {
  261. if(number < 0)
  262. {
  263. number = 0;
  264. }
  265. else if(number > count)
  266. {
  267. number = count;
  268. }
  269. ItemNumber.text = Std.string(number);
  270. }
  271. }
  272. catch (e:Dynamic)
  273. {
  274. ItemNumber.text = "0";
  275. }
  276. }
  277. private function onItemSelected (event:ItemButtonEvent) {
  278. var count = 0;
  279. currentItem = event.Name;
  280. ItemState = "Sell";
  281. count = currentTrainer.CurrentInventory.getItemsByName(currentItem);
  282. //add child Confirm Dialog.
  283. addChild(ItemConfirmBackground);
  284. ItemConfirm.htmlText = "<font size='14'>Sell "+currentItem + "? (Max "+count+")</font>";
  285. //ItemConfirm.width = (490 - ItemConfirm.width/2);
  286. addChild(ItemConfirm);
  287. ItemNumber.text = "0";
  288. addChild(ItemNumber);
  289. addChild(ItemYes);
  290. addChild(ItemNo);
  291. }
  292. private function onBuyItemSelected (event:BuyItemButtonEvent) {
  293. var count = 0;
  294. currentItem = event.Name;
  295. var buyItem = new Item();
  296. buyItem.updateItem(new Point(),currentItem);
  297. ItemState = "Buy";
  298. //add child Confirm Dialog.
  299. addChild(ItemConfirmBackground);
  300. ItemConfirm.htmlText = "<font size='14'>Buy "+currentItem + "? (Cost "+buyItem.getValue()+")</font>";
  301. //ItemConfirm.width = (490 - ItemConfirm.width/2);
  302. addChild(ItemConfirm);
  303. ItemNumber.text = "0";
  304. addChild(ItemNumber);
  305. addChild(ItemYes);
  306. addChild(ItemNo);
  307. }
  308. private function onMonsterItemCancel(event:Event)
  309. {
  310. currentMonsterMenu.removeEventListener("Cancel",onMonsterItemCancel);
  311. currentItem = "";
  312. ItemState = "";
  313. removeChild(currentMonsterMenu);
  314. currentMonsterMenu.CurrentState = "";
  315. currentMonsterMenu.StatusText.htmlText = "<font size='16'></font>";
  316. currentMonsterMenu.removeChild(currentMonsterMenu.ItemConfirmBackground);
  317. currentMonsterMenu.removeChild(currentMonsterMenu.ItemConfirm);
  318. currentMonsterMenu.removeChild(currentMonsterMenu.ItemNo);
  319. }
  320. private function onPrevItemPageClick(event:MouseEvent)
  321. {
  322. ItemPage--;
  323. drawItemMenu(ItemPage);
  324. }
  325. private function onNextItemPageClick(event:MouseEvent)
  326. {
  327. ItemPage++;
  328. drawItemMenu(ItemPage);
  329. }
  330. private function onPrevBuyItemPageClick(event:MouseEvent)
  331. {
  332. BuyItemPage--;
  333. drawBuyItemMenu(BuyItemPage);
  334. }
  335. private function onNextBuyItemPageClick(event:MouseEvent)
  336. {
  337. BuyItemPage++;
  338. drawBuyItemMenu(BuyItemPage);
  339. }
  340. private function drawBuyItemMenu(?Page:Int=1)
  341. {
  342. ItemsLayer.removeChild(BuyItemMenu);
  343. BuyItemMenu = new Sprite();
  344. BuyItemMenu.x = 0;
  345. var start = 26*(Page-1);
  346. var finish = 26*Page;
  347. var buttonPosition = 0;
  348. var Title = new TextField();
  349. Title.selectable = false;
  350. Title.htmlText = "<u><font size = '16'>Buy</font></u>";
  351. Title.width = 320;
  352. Title.autoSize = TextFieldAutoSize.CENTER;
  353. BuyItemMenu.addChild(Title);
  354. var countedItems = new List<String>();
  355. for(item in BuyableItems)
  356. {
  357. var skip = false;
  358. for(name in countedItems)
  359. {
  360. if(name == item.ID)
  361. {
  362. skip = true;
  363. break;
  364. }
  365. }
  366. if(skip)
  367. {continue;}
  368. if(buttonPosition < start || buttonPosition >=finish)
  369. {
  370. if(buttonPosition == 0)
  371. {
  372. BuyItemMenu.addChild(PrevBuyItemPage);
  373. }
  374. if(buttonPosition == finish+1)
  375. {
  376. BuyItemMenu.addChild(NextBuyItemPage);
  377. }
  378. buttonPosition++;
  379. continue;
  380. }
  381. countedItems.add(item.ID);
  382. var BuyItem = new BuyItemButton(item.ID,1);
  383. var pagePosition = (buttonPosition-((Page-1)*26));
  384. var column = 0;
  385. column = Math.floor(pagePosition / 13);
  386. BuyItem.x = 5+155*column;BuyItem.y=26+(((pagePosition-(column*13))*35));
  387. BuyItemMenu.addChild(BuyItem);
  388. buttonPosition++;
  389. }
  390. var menuSize = ((buttonPosition-((Page-1)*13))*35);
  391. BuyItemMenu.x = 0;
  392. BuyItemMenu.y = 0;
  393. BuyItemMenu.graphics.beginFill(0xFFFFFF);
  394. BuyItemMenu.graphics.lineStyle(1);
  395. BuyItemMenu.graphics.drawRect(0,0,320,512);
  396. BuyItemMenu.graphics.endFill();
  397. ItemsLayer.addChild(BuyItemMenu);
  398. // removeChild(tableExit);
  399. // addChild(tableExit);
  400. }
  401. private function drawItemMenu(?Page:Int=1)
  402. {
  403. ItemsLayer.removeChild(ItemMenu);
  404. ItemMenu = new Sprite();
  405. ItemMenu.x = 0;
  406. var start = 26*(Page-1);
  407. var finish = 26*Page;
  408. var buttonPosition = 0;
  409. var Title = new TextField();
  410. Title.selectable = false;
  411. Title.htmlText = "<font size = '16'><u>Sell</u></font>";
  412. Title.width = 320;
  413. Title.autoSize = TextFieldAutoSize.CENTER;
  414. ItemMenu.addChild(Title);
  415. var MoneyText = new TextField();
  416. MoneyText.selectable = false;
  417. MoneyText.htmlText = "<font size = '14'> Money: "+currentTrainer.Money+"</font>";
  418. MoneyText.width = 320;
  419. MoneyText.y = 480;
  420. MoneyText.autoSize = TextFieldAutoSize.LEFT;
  421. ItemMenu.addChild(MoneyText);
  422. var countedItems = new List<String>();
  423. for(item in currentTrainer.CurrentInventory)
  424. {
  425. var skip = false;
  426. for(name in countedItems)
  427. {
  428. if(name == item.ID)
  429. {
  430. skip = true;
  431. break;
  432. }
  433. }
  434. if(skip)
  435. {continue;}
  436. var count = currentTrainer.CurrentInventory.getItemsByName(item.ID);
  437. if(buttonPosition < start || buttonPosition >=finish)
  438. {
  439. if(buttonPosition == 0)
  440. {
  441. ItemMenu.addChild(PrevItemPage);
  442. }
  443. if(buttonPosition == finish+1)
  444. {
  445. ItemMenu.addChild(NextItemPage);
  446. }
  447. buttonPosition++;
  448. continue;
  449. }
  450. countedItems.add(item.ID);
  451. var Item = new ItemButton(item.ID,count);
  452. var pagePosition = (buttonPosition-((Page-1)*26));
  453. var column = 0;
  454. column = Math.floor(pagePosition / 13);
  455. Item.x = 5+155*column;Item.y=26+(((pagePosition-(column*13))*35));
  456. ItemMenu.addChild(Item);
  457. buttonPosition++;
  458. }
  459. var menuSize = ((buttonPosition-((Page-1)*13))*35);
  460. ItemMenu.x = 320;
  461. ItemMenu.y = 0;
  462. ItemMenu.graphics.beginFill(0xFFFFFF);
  463. ItemMenu.graphics.lineStyle(1);
  464. ItemMenu.graphics.drawRect(0,0,320,512);
  465. ItemMenu.graphics.endFill();
  466. ItemsLayer.addChild(ItemMenu);
  467. // removeChild(tableExit);
  468. // addChild(tableExit);
  469. }
  470. private function onItemYesClick(event:MouseEvent)
  471. {
  472. //State = "Finish";
  473. var number = Std.parseInt(ItemNumber.text);
  474. if(ItemState == "Sell")
  475. {
  476. currentTrainer.CurrentInventory.sellItem(currentItem,number,currentTrainer);
  477. }
  478. else if(ItemState == "Buy")
  479. {
  480. currentTrainer.CurrentInventory.buyItem(currentItem,number,currentTrainer);
  481. }
  482. removeChild(ItemConfirmBackground);
  483. removeChild(ItemConfirm);
  484. removeChild(ItemNo);
  485. //addChild Confirm Menu
  486. removeChild(ItemYes);
  487. removeChild(ItemNumber);
  488. drawItemMenu(ItemPage);
  489. currentItem ="";
  490. ItemState = "";
  491. }
  492. private function onItemNoClick(event:MouseEvent)
  493. {
  494. //State = "Finish";
  495. removeChild(ItemConfirmBackground);
  496. removeChild(ItemConfirm);
  497. removeChild(ItemNo);
  498. removeChild(ItemYes);
  499. removeChild(ItemNumber);
  500. currentItem ="";
  501. ItemState = "";
  502. }
  503. private function ontableExitClick(event:MouseEvent) {
  504. dispatchEvent(new Event("Back"));
  505. }
  506. }