PageRenderTime 73ms CodeModel.GetById 36ms RepoModel.GetById 0ms app.codeStats 0ms

/ circle-madness-nme/Source/Scene.hx

http://circle-madness-nme.googlecode.com/
Haxe | 1265 lines | 952 code | 120 blank | 193 comment | 145 complexity | 12f19ba62344839dc26e46bf6ec563fc MD5 | raw file
  1. import flash.display.Sprite;
  2. import flash.geom.Point;
  3. import flash.text.TextField;
  4. import flash.text.TextFieldAutoSize;
  5. import haxe.FastList;
  6. import flash.display.Shape;
  7. //import flash.utils.Timer;
  8. import haxe.Timer;
  9. //import flash.utils.Timer;
  10. //import flash.events.TimerEvent;
  11. import flash.events.Event;
  12. import flash.events.MouseEvent;
  13. import flash.events.KeyboardEvent;
  14. import CircleModel;
  15. import CircleView;
  16. import HelperMethods;
  17. import UIController;
  18. import EnemyShipController;
  19. import BossShipController;
  20. import CircleMV;
  21. class BossEnemyInfo
  22. {
  23. public var BossEnemyPoint:Point;
  24. public var BossEnemyType:String;
  25. public var BossEnemyColor:Int;
  26. public function new(inPoint:Point,inType:String,inColor:Int)
  27. {
  28. BossEnemyPoint = inPoint;
  29. BossEnemyType = inType;
  30. BossEnemyColor = inColor;
  31. }
  32. }
  33. class Scene extends Sprite{
  34. //Circle
  35. private var _c1:ShipModel;
  36. private var _UIController:ShipController;
  37. private var _EnemyController:EnemyShipController;
  38. private var _c1_View:ShipView;
  39. private var _UIView:UIView;
  40. public var running:Bool;
  41. public var numOfFrames:Int;
  42. public var TotalMoney:Int;
  43. private var PowerUps:Int;
  44. private var MoneyMultiplier:Float;
  45. public var FadeRate:Int;
  46. public var ShotsFiredRate:Int;
  47. //Particle
  48. private var _circles:FastList<CircleMV>;
  49. private var _enemyCircles:FastList<CircleMV>;
  50. public var BossController:BossShipController;
  51. //private var _views:FastList<CircleView>;
  52. private var _c2:CircleModel;
  53. private var _c2_View:CircleView;
  54. private var _health:HealthBarView;
  55. private var _finishScreen:Sprite;
  56. private var _finished:TextField;
  57. private var _moneyCollected:TextField;
  58. private var _shotsOnScreen:TextField;
  59. private var _framesLasted:TextField;
  60. private var _totalAmount:TextField;
  61. private var _continueButton:Sprite;
  62. //Status box
  63. private var _statusBox:TextField;
  64. private static inline var InvincibleEnemyColor:Int = 0xFFFFFF;
  65. private static inline var EnemyColor:Int = 0xFF0000;
  66. private static inline var ShootingEnemyColor:Int = 0xFFFF00;
  67. private static inline var EnemyShootingEnemyColor:Int = 0xFF7722;
  68. public var State:String;
  69. private var StartBoss:Int;
  70. private var BossDefeated:Int;
  71. private var Difficulty:Int;
  72. private var waitedFrames:Int;
  73. private var _collision:Bool;
  74. private var mKeyDown:Array<Bool>;
  75. private var Pause:String;
  76. public var pauseMenu:PauseMenu;
  77. private var myTimer:Timer;
  78. private static inline var FRAME_RATE:Int = 40;
  79. private var _period:Float;
  80. private var _beforeTime:Int;
  81. private var _afterTime:Int;
  82. private var _timeDiff:Int;
  83. private var _sleepTime:Int;
  84. private var _overSleepTime:Int;
  85. private var _excess:Int;
  86. public function new(shipSize:Int,shipHealth:Int,PowerUpAppearance:Int,
  87. InvincibilityLength:Int,PowerUpFade:Int,inMoneyMultiplier:Float,
  88. inShotsFiredRate:Int,inDifficulty:Int)
  89. {
  90. super();
  91. running = false;
  92. State = "Playing";
  93. Pause = "UnPaused";
  94. Difficulty = inDifficulty;
  95. numOfFrames = 0;
  96. PowerUps = PowerUpAppearance;
  97. MoneyMultiplier = inMoneyMultiplier;
  98. ShotsFiredRate = inShotsFiredRate;
  99. FadeRate = PowerUpFade;
  100. flash.Lib.current.addChild(this);
  101. _collision = false;
  102. //Circle
  103. _c1 = new ShipModel("Player",shipHealth,InvincibilityLength, shipSize,0x000000);
  104. _UIController = new ShipController(_c1);
  105. _c1_View = new ShipView(_c1, _UIController, stage);
  106. _health = new HealthBarView(_c1);
  107. addChild(_health);
  108. //_UIView = new UIView(_c1, _UIController, stage);
  109. _c1.setX = 300;
  110. _c1.setY = 200;
  111. //Circle2
  112. _circles = new FastList<CircleMV>();
  113. _enemyCircles = new FastList<CircleMV>();
  114. //Add the status box
  115. _statusBox = new TextField();
  116. _statusBox.width =200;
  117. addChild(_statusBox);
  118. //myTimer = new Timer(35);
  119. //myTimer.addEventListener("timer", OnEnter);
  120. this.addEventListener(Event.ENTER_FRAME, OnEnter);
  121. _finishScreen = new Sprite();
  122. var shape:Shape = new Shape();
  123. shape.graphics.lineStyle(1);
  124. shape.graphics.beginFill(0xFFFFFF);
  125. shape.graphics.drawCircle(0, 0, 125);
  126. shape.graphics.endFill();
  127. shape.x = 300;
  128. shape.y = 150;
  129. _finishScreen.addChild(shape);
  130. _finished = new TextField();
  131. _finished.x = 225;
  132. _finished.y = 80;
  133. _finished.htmlText = "<u>Finished</u>";
  134. _finished.width = 150;
  135. _finished.autoSize=TextFieldAutoSize.CENTER;
  136. _finishScreen.addChild(_finished);
  137. _moneyCollected = new TextField();
  138. _moneyCollected.x = 225;
  139. _moneyCollected.y = 100;
  140. _moneyCollected.text ="";
  141. _moneyCollected.width = 150;
  142. _moneyCollected.autoSize=TextFieldAutoSize.LEFT;
  143. _finishScreen.addChild(_moneyCollected);
  144. _shotsOnScreen = new TextField();
  145. _shotsOnScreen.x = 225;
  146. _shotsOnScreen.y = 120;
  147. _shotsOnScreen.text ="";
  148. _shotsOnScreen.width = 150;
  149. _shotsOnScreen.autoSize=TextFieldAutoSize.LEFT;
  150. _finishScreen.addChild(_shotsOnScreen);
  151. _framesLasted = new TextField();
  152. _framesLasted.x = 225;
  153. _framesLasted.y = 140;
  154. _framesLasted.text ="";
  155. _framesLasted.width = 150;
  156. _framesLasted.autoSize=TextFieldAutoSize.LEFT;
  157. _finishScreen.addChild(_framesLasted);
  158. _totalAmount = new TextField();
  159. _totalAmount.x = 225;
  160. _totalAmount.y = 160;
  161. _totalAmount.text ="";
  162. _totalAmount.width = 150;
  163. _totalAmount.wordWrap = true;
  164. _totalAmount.autoSize=TextFieldAutoSize.LEFT;
  165. _finishScreen.addChild(_totalAmount);
  166. _continueButton = new Sprite();
  167. shape = new Shape();
  168. shape.graphics.lineStyle(1);
  169. shape.graphics.beginFill(0xFFFFFF);
  170. shape.graphics.drawCircle(0, 0, 25);
  171. shape.graphics.endFill();
  172. var continueText = new TextField();
  173. if(Difficulty >= 1)
  174. {
  175. continueText.text = "Continue";
  176. }
  177. else
  178. {
  179. continueText.text = " Quit";
  180. }
  181. continueText.autoSize = TextFieldAutoSize.LEFT;
  182. _continueButton.addChild(shape);
  183. _continueButton.addChild(continueText);
  184. continueText.x = -25;
  185. continueText.y = -10;
  186. continueText.selectable = false;
  187. continueText.mouseEnabled = false;
  188. _continueButton.x = 300;
  189. _continueButton.y = 250;
  190. _continueButton.buttonMode = true;
  191. _finishScreen.addChild(_continueButton);
  192. _continueButton.addEventListener(MouseEvent.CLICK, onContinueButtonClick);
  193. //Load();
  194. // addBoss();
  195. mKeyDown = [];
  196. pauseMenu = new PauseMenu();
  197. pauseMenu.addEventListener("Quit",onQuit);
  198. stage.addEventListener(KeyboardEvent.KEY_DOWN, OnKeyDown );
  199. stage.addEventListener(KeyboardEvent.KEY_UP, OnKeyUp );
  200. }
  201. public function OnKeyUp (event:KeyboardEvent)
  202. {
  203. mKeyDown[event.keyCode] = false;
  204. //lastUp = event.keyCode;
  205. }
  206. public function OnKeyDown(event:KeyboardEvent)
  207. {
  208. // When a key is held down, multiple KeyDown events are generated.
  209. // This check means we only pick up the first one.
  210. if (!mKeyDown[event.keyCode])
  211. {
  212. // Store for use in game
  213. mKeyDown[event.keyCode] = true;
  214. if(State == "Playing")
  215. {
  216. //I do this here, because if they hold down P,
  217. // it won't pause and unpause constantly.
  218. if(mKeyDown[ 80 ] == true)
  219. {
  220. if(Pause == "Paused")
  221. {
  222. Pause = "UnPaused";
  223. removeChild(pauseMenu);
  224. }
  225. else
  226. {
  227. Pause = "Paused";
  228. addChild(pauseMenu);
  229. }
  230. }
  231. }
  232. }
  233. }
  234. public function Load()
  235. {
  236. addChild(_c1_View);
  237. //myTimer.start();
  238. running = true;
  239. numOfFrames = 000;
  240. waitedFrames = 0;
  241. if(Difficulty <= 1)
  242. {
  243. StartBoss = 5000;
  244. }
  245. if(Difficulty == 2)
  246. {
  247. StartBoss = 6000;
  248. }
  249. if(Difficulty >= 3)
  250. {
  251. StartBoss = 7000;
  252. }
  253. BossDefeated = 0;
  254. }
  255. public function onContinueButtonClick(event:MouseEvent)
  256. {
  257. removeChild(_finishScreen);
  258. UnLoad();
  259. if(Difficulty >= 1)
  260. {
  261. dispatchEvent(new Event("SceneFinished"));
  262. }
  263. else
  264. {
  265. State = "Quit";
  266. dispatchEvent(new Event("SceneQuit"));
  267. }
  268. }
  269. public function onQuit(event:Event)
  270. {
  271. State = "Quit";
  272. removeChild(pauseMenu);
  273. UnLoad();
  274. dispatchEvent(new Event("SceneQuit"));
  275. }
  276. public function UnLoad()
  277. {
  278. for(circle in _circles.iterator())
  279. {
  280. removeChild(circle.view);
  281. circle.model = null;
  282. _circles.remove(circle);
  283. }
  284. if(BossController != null)
  285. {
  286. for(circle in BossController.subModels.iterator())
  287. {
  288. removeChild(circle.view);
  289. circle.model = null;
  290. _enemyCircles.remove(circle);
  291. }
  292. }
  293. for(circle in _enemyCircles.iterator())
  294. {
  295. removeChild(circle.view);
  296. circle.model = null;
  297. _enemyCircles.remove(circle);
  298. }
  299. removeChild(_c1_View);
  300. removeChild(_health);
  301. if(this.contains(_statusBox))
  302. {
  303. removeChild(_statusBox);
  304. }
  305. //myTimer.stop();
  306. running = false;
  307. this.removeEventListener(Event.ENTER_FRAME, OnEnter);
  308. }
  309. private function addShot()
  310. {
  311. _c2 = new CircleModel("Shot",3);
  312. _c2_View = new CircleView(_c2);
  313. addChild(_c2_View);
  314. var random = Math.random()*2*Math.PI;
  315. _c2.setX = Math.ceil( _c1.xPos + (_c1.radius + _c2.radius + 1)* Math.cos(random));
  316. _c2.setY = Math.ceil(_c1.yPos + (_c1.radius + _c2.radius + 1) * Math.sin(random));
  317. _c2.vx = (1)* Math.cos(random);
  318. _c2.vy = (1) * Math.sin(random);
  319. _c2.friction = .999;
  320. _circles.add(new CircleMV(_c2,_c2_View));
  321. _c2 = null;
  322. _c2_View = null;
  323. }
  324. private function addEnemyShootingEnemy()
  325. {
  326. var tempCircle = new CircleModel("EnemyShootingEnemy",3,0xFF7722);
  327. _EnemyController = new EnemyShipController(tempCircle,_c1);
  328. var tempCircle_View = new CircleView(tempCircle);
  329. addChild(tempCircle_View);
  330. var random = Math.random()*2*Math.PI;
  331. tempCircle.setX = Math.ceil( _c1.xPos + (_c1.radius + tempCircle.radius + 250)* Math.cos(random));
  332. tempCircle.setY = Math.ceil(_c1.yPos + (_c1.radius + tempCircle.radius + 150) * Math.sin(random));
  333. _enemyCircles.add(new CircleMV(tempCircle,tempCircle_View));
  334. }
  335. private function addShootingEnemy()
  336. {
  337. var tempCircle = new CircleModel("ShootingEnemy",3,0xFFFF00);
  338. _EnemyController = new EnemyShipController(tempCircle,_c1);
  339. var tempCircle_View = new CircleView(tempCircle);
  340. addChild(tempCircle_View);
  341. var random = Math.random()*2*Math.PI;
  342. tempCircle.setX = Math.ceil( _c1.xPos + (_c1.radius + tempCircle.radius + 250)* Math.cos(random));
  343. tempCircle.setY = Math.ceil(_c1.yPos + (_c1.radius + tempCircle.radius + 150) * Math.sin(random));
  344. _enemyCircles.add(new CircleMV(tempCircle,tempCircle_View));
  345. }
  346. private function addInvincibleEnemy()
  347. {
  348. var tempCircle = new CircleModel("InvincibleEnemy",3,InvincibleEnemyColor);
  349. _EnemyController = new EnemyShipController(tempCircle,_c1);
  350. var tempCircle_View = new CircleView(tempCircle);
  351. addChild(tempCircle_View);
  352. var random = Math.random()*2*Math.PI;
  353. tempCircle.setX = Math.ceil( _c1.xPos + (_c1.radius + tempCircle.radius + 250)* Math.cos(random));
  354. tempCircle.setY = Math.ceil(_c1.yPos + (_c1.radius + tempCircle.radius + 150) * Math.sin(random));
  355. _enemyCircles.add(new CircleMV(tempCircle,tempCircle_View));
  356. }
  357. private function addEnemy()
  358. {
  359. var tempCircle = new CircleModel("Enemy",3,0xFF0000);
  360. _EnemyController = new EnemyShipController(tempCircle,_c1);
  361. var tempCircle_View = new CircleView(tempCircle);
  362. addChild(tempCircle_View);
  363. var random = Math.random()*2*Math.PI;
  364. tempCircle.setX = Math.ceil( _c1.xPos + (_c1.radius + tempCircle.radius + 250)* Math.cos(random));
  365. tempCircle.setY = Math.ceil(_c1.yPos + (_c1.radius + tempCircle.radius + 150) * Math.sin(random));
  366. _enemyCircles.add(new CircleMV(tempCircle,tempCircle_View));
  367. }
  368. private function addBoss()
  369. {
  370. var Boss_Points:FastList<BossEnemyInfo> = new FastList<BossEnemyInfo>();
  371. // Boss_Points.add(new BossEnemyInfo(new Point(2,20),"Enemy",EnemyColor));
  372. // Boss_Points.add(new BossEnemyInfo(new Point(6,20),"Enemy",EnemyColor));
  373. // Boss_Points.add(new BossEnemyInfo(new Point(10,20),"Enemy",EnemyColor));
  374. // Boss_Points.add(new BossEnemyInfo(new Point(14,20),"Enemy",EnemyColor));
  375. // Boss_Points.add(new BossEnemyInfo(new Point(18,20),"Enemy",EnemyColor));
  376. // Boss_Points.add(new BossEnemyInfo(new Point(22,20),"Enemy",EnemyColor));
  377. // Boss_Points.add(new BossEnemyInfo(new Point(26,20),"Enemy",EnemyColor));
  378. Boss_Points.add(new BossEnemyInfo(new Point(30,20),"Enemy",EnemyColor));
  379. Boss_Points.add(new BossEnemyInfo(new Point(34,20),"Enemy",EnemyColor));
  380. Boss_Points.add(new BossEnemyInfo(new Point(38,20),"Enemy",EnemyColor));
  381. Boss_Points.add(new BossEnemyInfo(new Point(42,20),"Enemy",EnemyColor));
  382. Boss_Points.add(new BossEnemyInfo(new Point(46,20),"Enemy",EnemyColor));
  383. Boss_Points.add(new BossEnemyInfo(new Point(50,20),"Enemy",EnemyColor));
  384. Boss_Points.add(new BossEnemyInfo(new Point(54,20),"Enemy",EnemyColor));
  385. Boss_Points.add(new BossEnemyInfo(new Point(58,20),"Enemy",EnemyColor));
  386. // Boss_Points.add(new BossEnemyInfo(new Point(62,20),"Enemy",EnemyColor));
  387. // Boss_Points.add(new BossEnemyInfo(new Point(66,20),"Enemy",EnemyColor));
  388. // Boss_Points.add(new BossEnemyInfo(new Point(70,20),"Enemy",EnemyColor));
  389. // Boss_Points.add(new BossEnemyInfo(new Point(74,20),"Enemy",EnemyColor));
  390. // Boss_Points.add(new BossEnemyInfo(new Point(78,,20),"Enemy",EnemyColor));
  391. // Boss_Points.add(new BossEnemyInfo(new Point(82,,20),"Enemy",EnemyColor));
  392. // Boss_Points.add(new BossEnemyInfo(new Point(86,,20),"Enemy",EnemyColor));
  393. // Boss_Points.add(new BossEnemyInfo(new Point(2,25),"Enemy",EnemyColor));
  394. // Boss_Points.add(new BossEnemyInfo(new Point(6,25),"Enemy",EnemyColor));
  395. // Boss_Points.add(new BossEnemyInfo(new Point(10,25),"Enemy",EnemyColor));
  396. // Boss_Points.add(new BossEnemyInfo(new Point(14,25),"Enemy",EnemyColor));
  397. // Boss_Points.add(new BossEnemyInfo(new Point(18,25),"Enemy",EnemyColor));
  398. // Boss_Points.add(new BossEnemyInfo(new Point(22,25),"Enemy",EnemyColor));
  399. Boss_Points.add(new BossEnemyInfo(new Point(26,25),"Enemy",EnemyColor));
  400. Boss_Points.add(new BossEnemyInfo(new Point(30,25),"Enemy",EnemyColor));
  401. Boss_Points.add(new BossEnemyInfo(new Point(34,25),"Enemy",EnemyColor));
  402. Boss_Points.add(new BossEnemyInfo(new Point(38,25),"Enemy",EnemyColor));
  403. Boss_Points.add(new BossEnemyInfo(new Point(42,25),"Enemy",EnemyColor));
  404. Boss_Points.add(new BossEnemyInfo(new Point(46,25),"Enemy",EnemyColor));
  405. Boss_Points.add(new BossEnemyInfo(new Point(50,25),"Enemy",EnemyColor));
  406. Boss_Points.add(new BossEnemyInfo(new Point(54,25),"Enemy",EnemyColor));
  407. Boss_Points.add(new BossEnemyInfo(new Point(58,25),"Enemy",EnemyColor));
  408. Boss_Points.add(new BossEnemyInfo(new Point(62,25),"Enemy",EnemyColor));
  409. // Boss_Points.add(new BossEnemyInfo(new Point(66,25),"Enemy",EnemyColor));
  410. // Boss_Points.add(new BossEnemyInfo(new Point(70,25),"Enemy",EnemyColor));
  411. // Boss_Points.add(new BossEnemyInfo(new Point(74,25),"Enemy",EnemyColor));
  412. // Boss_Points.add(new BossEnemyInfo(new Point(78,,25),"Enemy",EnemyColor));
  413. // Boss_Points.add(new BossEnemyInfo(new Point(82,,25),"Enemy",EnemyColor));
  414. // Boss_Points.add(new BossEnemyInfo(new Point(86,,25),"Enemy",EnemyColor));
  415. // Boss_Points.add(new BossEnemyInfo(new Point(2,30),"Enemy",EnemyColor));
  416. // Boss_Points.add(new BossEnemyInfo(new Point(6,30),"Enemy",EnemyColor));
  417. // Boss_Points.add(new BossEnemyInfo(new Point(10,30),"Enemy",EnemyColor));
  418. // Boss_Points.add(new BossEnemyInfo(new Point(14,30),"Enemy",EnemyColor));
  419. // Boss_Points.add(new BossEnemyInfo(new Point(18,30),"Enemy",EnemyColor));
  420. Boss_Points.add(new BossEnemyInfo(new Point(22,30),"Enemy",EnemyColor));
  421. Boss_Points.add(new BossEnemyInfo(new Point(26,30),"Enemy",EnemyColor));
  422. Boss_Points.add(new BossEnemyInfo(new Point(30,30),"InvincibleEnemy",InvincibleEnemyColor));
  423. Boss_Points.add(new BossEnemyInfo(new Point(34,30),"InvincibleEnemy",InvincibleEnemyColor));
  424. Boss_Points.add(new BossEnemyInfo(new Point(38,30),"Enemy",EnemyColor));
  425. Boss_Points.add(new BossEnemyInfo(new Point(42,30),"Enemy",EnemyColor));
  426. Boss_Points.add(new BossEnemyInfo(new Point(46,30),"Enemy",EnemyColor));
  427. Boss_Points.add(new BossEnemyInfo(new Point(50,30),"Enemy",EnemyColor));
  428. Boss_Points.add(new BossEnemyInfo(new Point(54,30),"InvincibleEnemy",InvincibleEnemyColor));
  429. Boss_Points.add(new BossEnemyInfo(new Point(58,30),"InvincibleEnemy",InvincibleEnemyColor));
  430. Boss_Points.add(new BossEnemyInfo(new Point(62,30),"Enemy",EnemyColor));
  431. Boss_Points.add(new BossEnemyInfo(new Point(66,30),"Enemy",EnemyColor));
  432. // Boss_Points.add(new BossEnemyInfo(new Point(70,30),"Enemy",EnemyColor));
  433. // Boss_Points.add(new BossEnemyInfo(new Point(74,30),"Enemy",EnemyColor));
  434. // Boss_Points.add(new BossEnemyInfo(new Point(78,,30),"Enemy",EnemyColor));
  435. // Boss_Points.add(new BossEnemyInfo(new Point(82,,30),"Enemy",EnemyColor));
  436. // Boss_Points.add(new BossEnemyInfo(new Point(86,,30),"Enemy",EnemyColor));
  437. // Boss_Points.add(new BossEnemyInfo(new Point(2,35),"Enemy",EnemyColor));
  438. // Boss_Points.add(new BossEnemyInfo(new Point(6,35),"Enemy",EnemyColor));
  439. // Boss_Points.add(new BossEnemyInfo(new Point(10,35),"Enemy",EnemyColor));
  440. // Boss_Points.add(new BossEnemyInfo(new Point(14,35),"Enemy",EnemyColor));
  441. Boss_Points.add(new BossEnemyInfo(new Point(18,35),"Enemy",EnemyColor));
  442. Boss_Points.add(new BossEnemyInfo(new Point(22,35),"Enemy",EnemyColor));
  443. Boss_Points.add(new BossEnemyInfo(new Point(26,35),"Enemy",EnemyColor));
  444. Boss_Points.add(new BossEnemyInfo(new Point(30,35),"InvincibleEnemy",InvincibleEnemyColor));
  445. Boss_Points.add(new BossEnemyInfo(new Point(34,35),"InvincibleEnemy",InvincibleEnemyColor));
  446. Boss_Points.add(new BossEnemyInfo(new Point(38,35),"Enemy",EnemyColor));
  447. Boss_Points.add(new BossEnemyInfo(new Point(42,35),"Enemy",EnemyColor));
  448. Boss_Points.add(new BossEnemyInfo(new Point(46,35),"Enemy",EnemyColor));
  449. Boss_Points.add(new BossEnemyInfo(new Point(50,35),"Enemy",EnemyColor));
  450. Boss_Points.add(new BossEnemyInfo(new Point(54,35),"InvincibleEnemy",InvincibleEnemyColor));
  451. Boss_Points.add(new BossEnemyInfo(new Point(58,35),"InvincibleEnemy",InvincibleEnemyColor));
  452. Boss_Points.add(new BossEnemyInfo(new Point(62,35),"Enemy",EnemyColor));
  453. Boss_Points.add(new BossEnemyInfo(new Point(66,35),"Enemy",EnemyColor));
  454. Boss_Points.add(new BossEnemyInfo(new Point(70,35),"Enemy",EnemyColor));
  455. // Boss_Points.add(new BossEnemyInfo(new Point(74,35),"Enemy",EnemyColor));
  456. // Boss_Points.add(new BossEnemyInfo(new Point(78,,35),"Enemy",EnemyColor));
  457. // Boss_Points.add(new BossEnemyInfo(new Point(82,,35),"Enemy",EnemyColor));
  458. // Boss_Points.add(new BossEnemyInfo(new Point(86,,35),"Enemy",EnemyColor));
  459. // Boss_Points.add(new BossEnemyInfo(new Point(2,40),"Enemy",EnemyColor));
  460. // Boss_Points.add(new BossEnemyInfo(new Point(6,40),"Enemy",EnemyColor));
  461. // Boss_Points.add(new BossEnemyInfo(new Point(10,40),"Enemy",EnemyColor));
  462. Boss_Points.add(new BossEnemyInfo(new Point(14,40),"Enemy",EnemyColor));
  463. Boss_Points.add(new BossEnemyInfo(new Point(18,40),"Enemy",EnemyColor));
  464. Boss_Points.add(new BossEnemyInfo(new Point(22,40),"Enemy",EnemyColor));
  465. Boss_Points.add(new BossEnemyInfo(new Point(26,40),"Enemy",EnemyColor));
  466. Boss_Points.add(new BossEnemyInfo(new Point(30,40),"Enemy",EnemyColor));
  467. Boss_Points.add(new BossEnemyInfo(new Point(34,40),"Enemy",EnemyColor));
  468. Boss_Points.add(new BossEnemyInfo(new Point(38,40),"Enemy",EnemyColor));
  469. Boss_Points.add(new BossEnemyInfo(new Point(42,40),"EnemyShootingEnemy",EnemyShootingEnemyColor));
  470. Boss_Points.add(new BossEnemyInfo(new Point(46,40),"EnemyShootingEnemy",EnemyShootingEnemyColor));
  471. Boss_Points.add(new BossEnemyInfo(new Point(50,40),"Enemy",EnemyColor));
  472. Boss_Points.add(new BossEnemyInfo(new Point(54,40),"Enemy",EnemyColor));
  473. Boss_Points.add(new BossEnemyInfo(new Point(58,40),"Enemy",EnemyColor));
  474. Boss_Points.add(new BossEnemyInfo(new Point(62,40),"Enemy",EnemyColor));
  475. Boss_Points.add(new BossEnemyInfo(new Point(66,40),"Enemy",EnemyColor));
  476. Boss_Points.add(new BossEnemyInfo(new Point(70,40),"Enemy",EnemyColor));
  477. Boss_Points.add(new BossEnemyInfo(new Point(74,40),"Enemy",EnemyColor));
  478. // Boss_Points.add(new BossEnemyInfo(new Point(78,,40),"Enemy",EnemyColor));
  479. // Boss_Points.add(new BossEnemyInfo(new Point(82,,40),"Enemy",EnemyColor));
  480. // Boss_Points.add(new BossEnemyInfo(new Point(86,,40),"Enemy",EnemyColor));
  481. // Boss_Points.add(new BossEnemyInfo(new Point(2,45),"Enemy",EnemyColor));
  482. // Boss_Points.add(new BossEnemyInfo(new Point(6,45),"Enemy",EnemyColor));
  483. // Boss_Points.add(new BossEnemyInfo(new Point(10,45),"Enemy",EnemyColor));
  484. Boss_Points.add(new BossEnemyInfo(new Point(14,45),"Enemy",EnemyColor));
  485. Boss_Points.add(new BossEnemyInfo(new Point(18,45),"Enemy",EnemyColor));
  486. Boss_Points.add(new BossEnemyInfo(new Point(22,45),"Enemy",EnemyColor));
  487. Boss_Points.add(new BossEnemyInfo(new Point(26,45),"Enemy",EnemyColor));
  488. Boss_Points.add(new BossEnemyInfo(new Point(30,45),"Enemy",EnemyColor));
  489. Boss_Points.add(new BossEnemyInfo(new Point(34,45),"Enemy",EnemyColor));
  490. Boss_Points.add(new BossEnemyInfo(new Point(38,45),"Enemy",EnemyColor));
  491. Boss_Points.add(new BossEnemyInfo(new Point(42,45),"EnemyShootingEnemy",EnemyShootingEnemyColor));
  492. Boss_Points.add(new BossEnemyInfo(new Point(46,45),"EnemyShootingEnemy",EnemyShootingEnemyColor));
  493. Boss_Points.add(new BossEnemyInfo(new Point(50,45),"Enemy",EnemyColor));
  494. Boss_Points.add(new BossEnemyInfo(new Point(54,45),"Enemy",EnemyColor));
  495. Boss_Points.add(new BossEnemyInfo(new Point(58,45),"Enemy",EnemyColor));
  496. Boss_Points.add(new BossEnemyInfo(new Point(62,45),"Enemy",EnemyColor));
  497. Boss_Points.add(new BossEnemyInfo(new Point(66,45),"Enemy",EnemyColor));
  498. Boss_Points.add(new BossEnemyInfo(new Point(70,45),"Enemy",EnemyColor));
  499. Boss_Points.add(new BossEnemyInfo(new Point(74,45),"Enemy",EnemyColor));
  500. // Boss_Points.add(new BossEnemyInfo(new Point(78,,45),"Enemy",EnemyColor));
  501. // Boss_Points.add(new BossEnemyInfo(new Point(82,,45),"Enemy",EnemyColor));
  502. // Boss_Points.add(new BossEnemyInfo(new Point(86,,45),"Enemy",EnemyColor));
  503. //
  504. // Boss_Points.add(new BossEnemyInfo(new Point(6,50),"Enemy",EnemyColor));
  505. // Boss_Points.add(new BossEnemyInfo(new Point(10,50),"Enemy",EnemyColor));
  506. Boss_Points.add(new BossEnemyInfo(new Point(14,50),"Enemy",EnemyColor));
  507. Boss_Points.add(new BossEnemyInfo(new Point(18,50),"Enemy",EnemyColor));
  508. Boss_Points.add(new BossEnemyInfo(new Point(22,50),"Enemy",EnemyColor));
  509. Boss_Points.add(new BossEnemyInfo(new Point(26,50),"Enemy",EnemyColor));
  510. Boss_Points.add(new BossEnemyInfo(new Point(30,50),"Enemy",EnemyColor));
  511. Boss_Points.add(new BossEnemyInfo(new Point(34,50),"Enemy",EnemyColor));
  512. Boss_Points.add(new BossEnemyInfo(new Point(38,50),"Enemy",EnemyColor));
  513. Boss_Points.add(new BossEnemyInfo(new Point(42,50),"Enemy",EnemyColor));
  514. Boss_Points.add(new BossEnemyInfo(new Point(46,50),"Enemy",EnemyColor));
  515. Boss_Points.add(new BossEnemyInfo(new Point(50,50),"Enemy",EnemyColor));
  516. Boss_Points.add(new BossEnemyInfo(new Point(54,50),"Enemy",EnemyColor));
  517. Boss_Points.add(new BossEnemyInfo(new Point(58,50),"Enemy",EnemyColor));
  518. Boss_Points.add(new BossEnemyInfo(new Point(62,50),"Enemy",EnemyColor));
  519. Boss_Points.add(new BossEnemyInfo(new Point(66,50),"Enemy",EnemyColor));
  520. Boss_Points.add(new BossEnemyInfo(new Point(70,50),"Enemy",EnemyColor));
  521. Boss_Points.add(new BossEnemyInfo(new Point(74,50),"Enemy",EnemyColor));
  522. // Boss_Points.add(new BossEnemyInfo(new Point(78,,50),"Enemy",EnemyColor));
  523. // Boss_Points.add(new BossEnemyInfo(new Point(82,,50),"Enemy",EnemyColor));
  524. // Boss_Points.add(new BossEnemyInfo(new Point(2,55),"Enemy",EnemyColor));
  525. // Boss_Points.add(new BossEnemyInfo(new Point(6,55),"Enemy",EnemyColor));
  526. // Boss_Points.add(new BossEnemyInfo(new Point(10,55),"Enemy",EnemyColor));
  527. // Boss_Points.add(new BossEnemyInfo(new Point(14,55),"Enemy",EnemyColor));
  528. Boss_Points.add(new BossEnemyInfo(new Point(18,55),"Enemy",EnemyColor));
  529. Boss_Points.add(new BossEnemyInfo(new Point(22,55),"Enemy",EnemyColor));
  530. Boss_Points.add(new BossEnemyInfo(new Point(26,55),"InvincibleEnemy",InvincibleEnemyColor));
  531. Boss_Points.add(new BossEnemyInfo(new Point(30,55),"InvincibleEnemy",InvincibleEnemyColor));
  532. Boss_Points.add(new BossEnemyInfo(new Point(34,55),"InvincibleEnemy",InvincibleEnemyColor));
  533. Boss_Points.add(new BossEnemyInfo(new Point(38,55),"InvincibleEnemy",InvincibleEnemyColor));
  534. Boss_Points.add(new BossEnemyInfo(new Point(42,55),"InvincibleEnemy",InvincibleEnemyColor));
  535. Boss_Points.add(new BossEnemyInfo(new Point(46,55),"InvincibleEnemy",InvincibleEnemyColor));
  536. Boss_Points.add(new BossEnemyInfo(new Point(50,55),"InvincibleEnemy",InvincibleEnemyColor));
  537. Boss_Points.add(new BossEnemyInfo(new Point(54,55),"InvincibleEnemy",InvincibleEnemyColor));
  538. Boss_Points.add(new BossEnemyInfo(new Point(58,55),"InvincibleEnemy",InvincibleEnemyColor));
  539. Boss_Points.add(new BossEnemyInfo(new Point(62,55),"InvincibleEnemy",InvincibleEnemyColor));
  540. Boss_Points.add(new BossEnemyInfo(new Point(66,55),"Enemy",EnemyColor));
  541. Boss_Points.add(new BossEnemyInfo(new Point(70,55),"Enemy",EnemyColor));
  542. // Boss_Points.add(new BossEnemyInfo(new Point(74,55),"Enemy",EnemyColor));
  543. // Boss_Points.add(new BossEnemyInfo(new Point(78,,55),"Enemy",EnemyColor));
  544. // Boss_Points.add(new BossEnemyInfo(new Point(82,,55),"Enemy",EnemyColor));
  545. // Boss_Points.add(new BossEnemyInfo(new Point(86,,55),"Enemy",EnemyColor));
  546. // Boss_Points.add(new BossEnemyInfo(new Point(2,60),"Enemy",EnemyColor));
  547. // Boss_Points.add(new BossEnemyInfo(new Point(6,60),"Enemy",EnemyColor));
  548. // Boss_Points.add(new BossEnemyInfo(new Point(10,60),"Enemy",EnemyColor));
  549. // Boss_Points.add(new BossEnemyInfo(new Point(14,60),"Enemy",EnemyColor));
  550. // Boss_Points.add(new BossEnemyInfo(new Point(18,60),"Enemy",EnemyColor));
  551. Boss_Points.add(new BossEnemyInfo(new Point(22,60),"Enemy",EnemyColor));
  552. Boss_Points.add(new BossEnemyInfo(new Point(26,60),"Enemy",EnemyColor));
  553. Boss_Points.add(new BossEnemyInfo(new Point(30,60),"InvincibleEnemy",InvincibleEnemyColor));
  554. Boss_Points.add(new BossEnemyInfo(new Point(34,60),"InvincibleEnemy",InvincibleEnemyColor));
  555. Boss_Points.add(new BossEnemyInfo(new Point(38,60),"InvincibleEnemy",InvincibleEnemyColor));
  556. Boss_Points.add(new BossEnemyInfo(new Point(42,60),"InvincibleEnemy",InvincibleEnemyColor));
  557. Boss_Points.add(new BossEnemyInfo(new Point(46,60),"InvincibleEnemy",InvincibleEnemyColor));
  558. Boss_Points.add(new BossEnemyInfo(new Point(50,60),"InvincibleEnemy",InvincibleEnemyColor));
  559. Boss_Points.add(new BossEnemyInfo(new Point(54,60),"InvincibleEnemy",InvincibleEnemyColor));
  560. Boss_Points.add(new BossEnemyInfo(new Point(58,60),"InvincibleEnemy",InvincibleEnemyColor));
  561. Boss_Points.add(new BossEnemyInfo(new Point(62,60),"Enemy",EnemyColor));
  562. Boss_Points.add(new BossEnemyInfo(new Point(66,60),"Enemy",EnemyColor));
  563. // Boss_Points.add(new BossEnemyInfo(new Point(70,60),"Enemy",EnemyColor));
  564. // Boss_Points.add(new BossEnemyInfo(new Point(74,60),"Enemy",EnemyColor));
  565. // Boss_Points.add(new BossEnemyInfo(new Point(78,,60),"Enemy",EnemyColor));
  566. // Boss_Points.add(new BossEnemyInfo(new Point(82,,60),"Enemy",EnemyColor));
  567. // Boss_Points.add(new BossEnemyInfo(new Point(86,,60),"Enemy",EnemyColor));
  568. // Boss_Points.add(new BossEnemyInfo(new Point(2,65),"Enemy",EnemyColor));
  569. // Boss_Points.add(new BossEnemyInfo(new Point(6,65),"Enemy",EnemyColor));
  570. // Boss_Points.add(new BossEnemyInfo(new Point(10,65),"Enemy",EnemyColor));
  571. // Boss_Points.add(new BossEnemyInfo(new Point(14,65),"Enemy",EnemyColor));
  572. // Boss_Points.add(new BossEnemyInfo(new Point(18,65),"Enemy",EnemyColor));
  573. // Boss_Points.add(new BossEnemyInfo(new Point(22,65),"Enemy",EnemyColor));
  574. Boss_Points.add(new BossEnemyInfo(new Point(26,65),"Enemy",EnemyColor));
  575. Boss_Points.add(new BossEnemyInfo(new Point(30,65),"Enemy",EnemyColor));
  576. Boss_Points.add(new BossEnemyInfo(new Point(34,65),"InvincibleEnemy",InvincibleEnemyColor));
  577. Boss_Points.add(new BossEnemyInfo(new Point(38,65),"InvincibleEnemy",InvincibleEnemyColor));
  578. Boss_Points.add(new BossEnemyInfo(new Point(42,65),"InvincibleEnemy",InvincibleEnemyColor));
  579. Boss_Points.add(new BossEnemyInfo(new Point(46,65),"InvincibleEnemy",InvincibleEnemyColor));
  580. Boss_Points.add(new BossEnemyInfo(new Point(50,65),"InvincibleEnemy",InvincibleEnemyColor));
  581. Boss_Points.add(new BossEnemyInfo(new Point(54,65),"InvincibleEnemy",InvincibleEnemyColor));
  582. Boss_Points.add(new BossEnemyInfo(new Point(58,65),"Enemy",EnemyColor));
  583. Boss_Points.add(new BossEnemyInfo(new Point(62,65),"Enemy",EnemyColor));
  584. // Boss_Points.add(new BossEnemyInfo(new Point(66,65),"Enemy",EnemyColor));
  585. // Boss_Points.add(new BossEnemyInfo(new Point(70,65),"Enemy",EnemyColor));
  586. // Boss_Points.add(new BossEnemyInfo(new Point(74,65),"Enemy",EnemyColor));
  587. // Boss_Points.add(new BossEnemyInfo(new Point(78,,65),"Enemy",EnemyColor));
  588. // Boss_Points.add(new BossEnemyInfo(new Point(82,,65),"Enemy",EnemyColor));
  589. // Boss_Points.add(new BossEnemyInfo(new Point(86,,65),"Enemy",EnemyColor));
  590. // Boss_Points.add(new BossEnemyInfo(new Point(2,70),"Enemy",EnemyColor));
  591. // Boss_Points.add(new BossEnemyInfo(new Point(6,70),"Enemy",EnemyColor));
  592. // Boss_Points.add(new BossEnemyInfo(new Point(10,70),"Enemy",EnemyColor));
  593. // Boss_Points.add(new BossEnemyInfo(new Point(14,70),"Enemy",EnemyColor));
  594. // Boss_Points.add(new BossEnemyInfo(new Point(18,70),"Enemy",EnemyColor));
  595. // Boss_Points.add(new BossEnemyInfo(new Point(22,70),"Enemy",EnemyColor));
  596. // Boss_Points.add(new BossEnemyInfo(new Point(26,70),"Enemy",EnemyColor));
  597. Boss_Points.add(new BossEnemyInfo(new Point(30,70),"Enemy",EnemyColor));
  598. Boss_Points.add(new BossEnemyInfo(new Point(34,70),"Enemy",EnemyColor));
  599. Boss_Points.add(new BossEnemyInfo(new Point(38,70),"Enemy",EnemyColor));
  600. Boss_Points.add(new BossEnemyInfo(new Point(42,70),"Enemy",EnemyColor));
  601. Boss_Points.add(new BossEnemyInfo(new Point(46,70),"Enemy",EnemyColor));
  602. Boss_Points.add(new BossEnemyInfo(new Point(50,70),"Enemy",EnemyColor));
  603. Boss_Points.add(new BossEnemyInfo(new Point(54,70),"Enemy",EnemyColor));
  604. Boss_Points.add(new BossEnemyInfo(new Point(58,70),"Enemy",EnemyColor));
  605. // Boss_Points.add(new BossEnemyInfo(new Point(62,70),"Enemy",EnemyColor));
  606. // Boss_Points.add(new BossEnemyInfo(new Point(66,70),"Enemy",EnemyColor));
  607. // Boss_Points.add(new BossEnemyInfo(new Point(70,70),"Enemy",EnemyColor));
  608. // Boss_Points.add(new BossEnemyInfo(new Point(74,70),"Enemy",EnemyColor));
  609. // Boss_Points.add(new BossEnemyInfo(new Point(78,,70),"Enemy",EnemyColor));
  610. // Boss_Points.add(new BossEnemyInfo(new Point(82,,70),"Enemy",EnemyColor));
  611. // Boss_Points.add(new BossEnemyInfo(new Point(86,,70),"Enemy",EnemyColor));
  612. BossController = new BossShipController(_c1);
  613. for(Boss_Point in Boss_Points.iterator())
  614. {
  615. var tempCircle = new CircleModel(Boss_Point.BossEnemyType,3,Boss_Point.BossEnemyColor);
  616. var tempCircle_View = new CircleView(tempCircle);
  617. BossController.subModels.add(new CircleMV(tempCircle,tempCircle_View));
  618. addChild(tempCircle_View);
  619. var random = Math.random()*2*Math.PI;
  620. tempCircle.setX = Boss_Point.BossEnemyPoint.x;
  621. tempCircle.setY = Boss_Point.BossEnemyPoint.y;
  622. //_enemyCircles.add(new CircleMV(tempCircle,tempCircle_View));
  623. }
  624. }
  625. public function randomCirclePosition():Float
  626. {
  627. return Math.random()*2*Math.PI;
  628. }
  629. private function addMoney(xPos:Float,yPos:Float)
  630. {
  631. _c2 = new CircleModel("Money",3,0x00FF00,FadeRate);
  632. _c2_View = new CircleView(_c2);
  633. _c2.Fading = 1;
  634. addChild(_c2_View);
  635. _c2.setX = xPos;
  636. _c2.setY = yPos;
  637. _c2.vx = 0;
  638. _c2.vy = 0;
  639. _c2.friction = .999;
  640. _circles.add(new CircleMV(_c2,_c2_View));
  641. }
  642. private function addHealth(xPos:Float,yPos:Float)
  643. {
  644. _c2 = new CircleModel("Health",3,0x0000FF,FadeRate);
  645. _c2.Fading = 1;
  646. _c2_View = new CircleView(_c2);
  647. addChild(_c2_View);
  648. _c2.setX = xPos;
  649. _c2.setY = yPos;
  650. _c2.vx = 0;
  651. _c2.vy = 0;
  652. _c2.friction = .999;
  653. _circles.add(new CircleMV(_c2,_c2_View));
  654. }
  655. private function addInvincibility(xPos:Float,yPos:Float)
  656. {
  657. _c2 = new CircleModel("Invincibility",3,0xFF00FF,FadeRate);
  658. _c2_View = new CircleView(_c2);
  659. _c2.Fading = 1;
  660. addChild(_c2_View);
  661. _c2.setX = xPos;
  662. _c2.setY = yPos;
  663. _c2.vx = 0;
  664. _c2.vy = 0;
  665. _c2.friction = .999;
  666. _circles.add(new CircleMV(_c2,_c2_View));
  667. }
  668. private function LevelOver()
  669. {
  670. //Load sum menu.
  671. if(State == "Playing")
  672. {
  673. var TotalShots = 0;
  674. for(circle in _circles.iterator())
  675. {
  676. if(circle.model.getType() == "Shot")
  677. {TotalShots++;}
  678. }
  679. if(Difficulty >= 1)
  680. {
  681. _moneyCollected.text = "Money Collected: $" + _c1.money;
  682. }
  683. _shotsOnScreen.text = "Shots on Screen: " + TotalShots;
  684. _framesLasted.text = "Number of Frames:" + numOfFrames;
  685. if(Difficulty >= 1)
  686. {
  687. TotalMoney = Math.round(( (_c1.money+(TotalShots/100)) *MoneyMultiplier)*(1 + (numOfFrames/1000)));
  688. _totalAmount.text ="$" + (_c1.money*MoneyMultiplier) + " + $" + (TotalShots/100)*MoneyMultiplier + " * " + (1 + (numOfFrames/1000)) + " = $"
  689. + TotalMoney;
  690. }
  691. addChild(_finishScreen);
  692. State = "EndScreen";
  693. }
  694. //Unload
  695. //UnLoad();
  696. }
  697. //
  698. public function CheckForBoss()
  699. {
  700. if(_enemyCircles.first() != null)
  701. {return false;}
  702. if(_c1.invincible > 0)
  703. {return false;}
  704. if(BossController != null)
  705. {return false;}
  706. return true;
  707. }
  708. private function OnEnter(event:Event)
  709. {
  710. if(State == "Playing")
  711. {
  712. if(Pause == "Paused")
  713. {return;}
  714. }
  715. if(!_c1.alive){LevelOver();return;}
  716. if(State == "Won"){UnLoad();return;}
  717. numOfFrames++;
  718. // if(numOfFrames == 700)
  719. // {addBoss();}
  720. _statusBox.text = Std.string(numOfFrames); // Std.string(flash.system.System.totalMemory);
  721. //_beforeTime = flash.Lib.getTimer();
  722. //_overSleepTime = (_beforeTime - _afterTime) - _sleepTime;
  723. //Update the circle
  724. // _c1.radius = _c1.radius - 0.1;
  725. // removeChild(_c1_View);
  726. // _c1_View = new CircleView(_c1);
  727. // addChild(_c1_View);
  728. // if(Std.random(500) == 499)
  729. // {
  730. // var random = randomCirclePosition();
  731. // addHealth(Math.ceil( _c1.xPos + (_c1.radius + _c2.radius + 250)* Math.cos(random)),
  732. // Math.ceil(_c1.yPos + (_c1.radius + _c2.radius + 150) * Math.sin(random)));
  733. // }
  734. if(Difficulty > -1)
  735. {
  736. if(numOfFrames <= StartBoss || Difficulty == 0 )
  737. {
  738. var appearance = Std.int(numOfFrames / 100);
  739. if(Std.random(10) <= Math.min(appearance,2))
  740. {addEnemy();}
  741. if(Std.random(100) <= Math.min(appearance-1,8))
  742. {addShootingEnemy();}
  743. if(Std.random(100) <= Math.min(Std.int(appearance/10)-1,3))
  744. {addInvincibleEnemy();}
  745. if(Std.random(400) <= Math.min(Std.int(appearance/25)-1,1))
  746. {addEnemyShootingEnemy();}
  747. }
  748. else
  749. {
  750. //Wait Until ready
  751. if(CheckForBoss())
  752. {
  753. //Wait 10 Secs.(or so)
  754. waitedFrames++;
  755. if(waitedFrames > 200)
  756. {
  757. //addBoss()
  758. addBoss();
  759. }
  760. }
  761. else
  762. {
  763. if(BossController != null && BossController.subModels.first() == null)
  764. {
  765. BossDefeated++;
  766. BossController = null;
  767. if(BossDefeated >= Difficulty)
  768. {State = "Won";dispatchEvent(new Event("SceneWon"));}
  769. }
  770. }
  771. }
  772. }
  773. _c1.update();
  774. if(_c1.xPos > stage.stageWidth + (_c1.width* 0.5))
  775. {
  776. _c1.setX = 0 - (_c1.width* 0.5);
  777. }
  778. else if (_c1.xPos < 0 - (_c1.width* 0.5))
  779. {
  780. _c1.setX = stage.stageWidth + (_c1.width* 0.5);
  781. }
  782. else if(_c1.yPos > stage.stageHeight + (_c1.height* 0.5))
  783. {
  784. _c1.setY = 0 - (_c1.height* 0.5);
  785. }
  786. else if (_c1.yPos < 0 - (_c1.height* 0.5))
  787. {
  788. _c1.setY = stage.stageHeight + (_c1.height* 0.5);
  789. }
  790. if(_c1.firing > 0)
  791. {
  792. for(i in 0...ShotsFiredRate)
  793. {addShot();}
  794. }
  795. //Update the particle
  796. _collision = false;
  797. for(circle in _circles.iterator())
  798. {
  799. circle.model.update();
  800. if(circle.model.xPos > stage.stageWidth + (circle.model.width* 0.5))
  801. {
  802. circle.model.setX = 0 - (circle.model.width* 0.5);
  803. }
  804. else if (circle.model.xPos < 0 - (circle.model.width* 0.5))
  805. {
  806. circle.model.setX = stage.stageWidth + (circle.model.width* 0.5);
  807. }
  808. else if(circle.model.yPos > stage.stageHeight + (circle.model.height* 0.5))
  809. {
  810. circle.model.setY = 0 - (circle.model.height* 0.5);
  811. }
  812. else if (circle.model.yPos < 0 - (circle.model.height* 0.5))
  813. {
  814. circle.model.setY = stage.stageHeight + (circle.model.height* 0.5);
  815. }
  816. //Vector between circle and particle
  817. var m = Math.sqrt(Math.pow(_c1.xPos -circle.model.xPos,2) +
  818. Math.pow( _c1.yPos - circle.model.yPos,2)
  819. );
  820. var enemyhit = false;
  821. if(circle.model.getType() == "Shot")
  822. {
  823. if(BossController != null)
  824. {
  825. for(enemyCircle in BossController.subModels.iterator())
  826. {
  827. var mEnemyCircle = Math.sqrt(Math.pow(enemyCircle.model.xPos -circle.model.xPos,2) +
  828. Math.pow( enemyCircle.model.yPos - circle.model.yPos,2)
  829. );
  830. var enemyCollisionTotalRadii = enemyCircle.model.radius + circle.model.radius;
  831. if(mEnemyCircle < enemyCollisionTotalRadii)
  832. {
  833. //A collision is happening
  834. removeChild(circle.view);
  835. _circles.remove(circle);
  836. circle = null;
  837. removeChild(enemyCircle.view);
  838. BossController.subModels.remove(enemyCircle);
  839. BossController.CenterModel = null;
  840. enemyCircle = null;
  841. enemyhit = true;
  842. break;
  843. }
  844. }
  845. }
  846. for(enemyCircle in _enemyCircles.iterator())
  847. {
  848. if (enemyCircle.model.invincible > 0)
  849. {
  850. continue;
  851. }
  852. var mEnemyCircle = Math.sqrt(Math.pow(enemyCircle.model.xPos -circle.model.xPos,2) +
  853. Math.pow( enemyCircle.model.yPos - circle.model.yPos,2)
  854. );
  855. var enemyCollisionTotalRadii = enemyCircle.model.radius + circle.model.radius;
  856. if(mEnemyCircle < enemyCollisionTotalRadii)
  857. {
  858. var LootRandom = Std.random(100);
  859. if(Difficulty <= 0){LootRandom = -1;}
  860. var numAdded = 0;
  861. if(LootRandom >= 0 && LootRandom < 10+(2*PowerUps))
  862. {
  863. addHealth(enemyCircle.model.xPos-(2*numAdded),enemyCircle.model.yPos);
  864. numAdded++;
  865. }
  866. if(LootRandom >= 20-(2*PowerUps) && LootRandom <= 80+(3*PowerUps))
  867. {
  868. addMoney(enemyCircle.model.xPos-(2*numAdded),enemyCircle.model.yPos);
  869. numAdded++;
  870. }
  871. if(Difficulty < 3)
  872. {
  873. var Appear = 99;
  874. if(Difficulty <= 1)
  875. {
  876. Appear = Std.int(99 - (PowerUps/2));
  877. }
  878. if(LootRandom >= Appear)
  879. {
  880. addInvincibility(enemyCircle.model.xPos-(2*numAdded),enemyCircle.model.yPos);
  881. numAdded++;
  882. }
  883. }
  884. //A collision is happening
  885. removeChild(circle.view);
  886. _circles.remove(circle);
  887. circle = null;
  888. removeChild(enemyCircle.view);
  889. _enemyCircles.remove(enemyCircle);
  890. enemyCircle = null;
  891. enemyhit = true;
  892. break;
  893. }
  894. }
  895. }
  896. if(enemyhit)
  897. {break;}
  898. //Calculate the radii of both circles combined
  899. var totalRadii = _c1.radius + circle.model.radius;
  900. if(m < totalRadii)
  901. {
  902. if(circle.model.getType() == "Health")
  903. {_c1.heal();}
  904. else if(circle.model.getType() == "Money")
  905. {_c1.money += 1;}
  906. else if(circle.model.getType() == "Invincibility")
  907. {_c1.invincible = 1;}
  908. else
  909. {_c1.hit();}
  910. //A collision is happening
  911. removeChild(circle.view);
  912. _circles.remove(circle);
  913. circle = null;
  914. _collision = true;
  915. }
  916. if(circle.model.Alpha == 0)
  917. {
  918. //A collision is happening
  919. removeChild(circle.view);
  920. circle.model = null;
  921. _circles.remove(circle);
  922. circle = null;
  923. }
  924. }
  925. if(BossController != null)
  926. {
  927. for(enemyCircle in BossController.subModels.iterator())
  928. {
  929. if(enemyCircle.model.getType() == "InvincibleEnemy")
  930. {
  931. if(Std.random(1000) == 9)
  932. {
  933. enemyCircle.model.invincible = 1;
  934. }
  935. }
  936. if(enemyCircle.model.getType() == "EnemyShootingEnemy")
  937. {
  938. if(Std.random(100) == 9)
  939. {
  940. _c2 = new CircleModel("Enemy",3,0xFF0000);
  941. _EnemyController = new EnemyShipController(_c2,_c1);
  942. _c2_View = new CircleView(_c2);
  943. addChild(_c2_View);
  944. var y1 = _c1.yPos;
  945. var y2 = enemyCircle.model.yPos;
  946. var x1 = _c1.xPos;
  947. var x2 = enemyCircle.model.xPos;
  948. var y =(y2- y1);
  949. var x = (x2 - x1);
  950. var m = y/x;
  951. var angle = Math.atan2(y,x);
  952. //trace(angle);
  953. //angle = angle / (2*Math.PI);
  954. //trace(angle);
  955. // trace("y " + y + " x " + x + " Angle " + angle + " cos " + Math.cos(angle) + " Sin " + Math.sin(angle) );
  956. _c2.vx = 2*-Math.cos(angle);
  957. _c2.vy = 2*-Math.sin(angle);
  958. _c2.setX = enemyCircle.model.xPos + (3 *_c2.vx);
  959. _c2.setY = enemyCircle.model.yPos + (3 *_c2.vy);
  960. _c2.friction = .999;
  961. _enemyCircles.add(new CircleMV(_c2,_c2_View));
  962. _c2 = null;
  963. _c2_View = null;
  964. }
  965. }
  966. if(enemyCircle.model.getType() == "ShootingEnemy")
  967. {
  968. if(Std.random(100) == 9)
  969. {
  970. _c2 = new CircleModel("Shot",3);
  971. _c2_View = new CircleView(_c2);
  972. addChild(_c2_View);
  973. var y1 = _c1.yPos;
  974. var y2 = enemyCircle.model.yPos;
  975. var x1 = _c1.xPos;
  976. var x2 = enemyCircle.model.xPos;
  977. var y =(y2- y1);
  978. var x = (x2 - x1);
  979. var m = y/x;
  980. var angle = Math.atan2(y,x);
  981. //trace(angle);
  982. //angle = angle / (2*Math.PI);
  983. //trace(angle);
  984. // trace("y " + y + " x " + x + " Angle " + angle + " cos " + Math.cos(angle) + " Sin " + Math.sin(angle) );
  985. _c2.vx = 2*-Math.cos(angle);
  986. _c2.vy = 2*-Math.sin(angle);
  987. _c2.setX = enemyCircle.model.xPos + (3 *_c2.vx);
  988. _c2.setY = enemyCircle.model.yPos + (3 *_c2.vy);
  989. _c2.friction = .999;
  990. _circles.add(new CircleMV(_c2,_c2_View));
  991. _c2 = null;
  992. _c2_View = null;
  993. }
  994. }
  995. enemyCircle.model.update();
  996. if(enemyCircle.model.xPos > stage.stageWidth + (enemyCircle.model.width* 0.5))
  997. {
  998. enemyCircle.model.setX = 0 - (enemyCircle.model.width* 0.5);
  999. }
  1000. else if (enemyCircle.model.xPos < 0 - (enemyCircle.model.width* 0.5))
  1001. {
  1002. enemyCircle.model.setX = stage.stageWidth + (enemyCircle.model.width* 0.5);
  1003. }
  1004. else if(enemyCircle.model.yPos > stage.stageHeight + (enemyCircle.model.height* 0.5))
  1005. {
  1006. enemyCircle.model.setY = 0 - (enemyCircle.model.height* 0.5);
  1007. }
  1008. else if (enemyCircle.model.yPos < 0 - (enemyCircle.model.height* 0.5))
  1009. {
  1010. enemyCircle.model.setY = stage.stageHeight + (enemyCircle.model.height* 0.5);
  1011. }
  1012. //Vector between circle and particle
  1013. var m = Math.sqrt(Math.pow(_c1.xPos -enemyCircle.model.xPos,2) +
  1014. Math.pow( _c1.yPos - enemyCircle.model.yPos,2)
  1015. );
  1016. //Calculate the radii of both circles combined
  1017. var totalRadii = _c1.radius + enemyCircle.model.radius;
  1018. if(m < totalRadii)
  1019. {
  1020. _c1.hit();
  1021. //A collision is happening
  1022. removeChild(enemyCircle.view);
  1023. BossController.subModels.remove(enemyCircle);
  1024. BossController.CenterModel = null;
  1025. enemyCircle = null;
  1026. _collision = true;
  1027. }
  1028. }
  1029. }
  1030. //Update Enemy
  1031. for(enemyCircle in _enemyCircles.iterator())
  1032. {
  1033. if(enemyCircle.model.getType() == "InvincibleEnemy")
  1034. {
  1035. if(Std.random(1000) == 9)
  1036. {
  1037. enemyCircle.model.invincible = 1;
  1038. }
  1039. }
  1040. if(enemyCircle.model.getType() == "EnemyShootingEnemy")
  1041. {
  1042. if(Std.random(100) == 9)
  1043. {
  1044. _c2 = new CircleModel("Enemy",3,0xFF0000);
  1045. _EnemyController = new EnemyShipController(_c2,_c1);
  1046. _c2_View = new CircleView(_c2);
  1047. addChild(_c2_View);
  1048. var y1 = _c1.yPos;
  1049. var y2 = enemyCircle.model.yPos;
  1050. var x1 = _c1.xPos;
  1051. var x2 = enemyCircle.model.xPos;
  1052. var y =(y2- y1);
  1053. var x = (x2 - x1);
  1054. var m = y/x;
  1055. var angle = Math.atan2(y,x);
  1056. //trace(angle);
  1057. //angle = angle / (2*Math.PI);
  1058. //trace(angle);
  1059. // trace("y " + y + " x " + x + " Angle " + angle + " cos " + Math.cos(angle) + " Sin " + Math.sin(angle) );
  1060. _c2.vx = 2*-Math.cos(angle);
  1061. _c2.vy = 2*-Math.sin(angle);
  1062. _c2.setX = enemyCircle.model.xPos + (3 *_c2.vx);
  1063. _c2.setY = enemyCircle.model.yPos + (3 *_c2.vy);
  1064. _c2.friction = .999;
  1065. _enemyCircles.add(new CircleMV(_c2,_c2_View));
  1066. _c2 = null;
  1067. _c2_View = null;
  1068. }
  1069. }
  1070. if(enemyCircle.model.getType() == "ShootingEnemy")
  1071. {
  1072. if(Std.random(100) == 9)
  1073. {
  1074. _c2 = new CircleModel("Shot",3);
  1075. _c2_View = new CircleView(_c2);
  1076. addChild(_c2_View);
  1077. var y1 = _c1.yPos;
  1078. var y2 = enemyCircle.model.yPos;
  1079. var x1 = _c1.xPos;
  1080. var x2 = enemyCircle.model.xPos;
  1081. var y =(y2- y1);
  1082. var x = (x2 - x1);
  1083. var m = y/x;
  1084. var angle = Math.atan2(y,x);
  1085. //trace(angle);
  1086. //angle = angle / (2*Math.PI);
  1087. //trace(angle);
  1088. // trace("y " + y + " x " + x + " Angle " + angle + " cos " + Math.cos(angle) + " Sin " + Math.sin(angle) );
  1089. _c2.vx = 2*-Math.cos(angle);
  1090. _c2.vy = 2*-Math.sin(angle);
  1091. _c2.setX = enemyCircle.model.xPos + (3 *_c2.vx);
  1092. _c2.setY = enemyCircle.model.yPos + (3 *_c2.vy);
  1093. _c2.friction = .999;
  1094. _circles.add(new CircleMV(_c2,_c2_View));
  1095. _c2 = null;
  1096. _c2_View = null;
  1097. }
  1098. }
  1099. enemyCircle.model.update();
  1100. if(enemyCircle.model.xPos > stage.stageWidth + (enemyCircle.model.width* 0.5))
  1101. {
  1102. enemyCircle.model.setX = 0 - (enemyCircle.model.width* 0.5);
  1103. }
  1104. else if (enemyCircle.model.xPos < 0 - (enemyCircle.model.width* 0.5))
  1105. {
  1106. enemyCircle.model.setX = stage.stageWidth + (enemyCircle.model.width* 0.5);
  1107. }
  1108. else if(enemyCircle.model.yPos > stage.stageHeight + (enemyCircle.model.height* 0.5))
  1109. {
  1110. enemyCircle.model.setY = 0 - (enemyCircle.model.height* 0.5);
  1111. }
  1112. else if (enemyCircle.model.yPos < 0 - (enemyCircle.model.height* 0.5))
  1113. {
  1114. enemyCircle.model.setY = stage.stageHeight + (enemyCircle.model.height* 0.5);
  1115. }
  1116. //Vector between circle and particle
  1117. var m = Math.sqrt(Math.pow(_c1.xPos -enemyCircle.model.xPos,2) +
  1118. Math.pow( _c1.yPos - enemyCircle.model.yPos,2)
  1119. );
  1120. //Calculate the radii of both circles combined
  1121. var totalRadii = _c1.radius + enemyCircle.model.radius;
  1122. if(m < totalRadii)
  1123. {
  1124. _c1.hit();
  1125. //A collision is happening
  1126. removeChild(enemyCircle.view);
  1127. _enemyCircles.remove(enemyCircle);
  1128. enemyCircle = null;
  1129. _collision = true;
  1130. }
  1131. }
  1132. //Update status box
  1133. // _afterTime = flash.Lib.getTimer();
  1134. // _timeDiff = _afterTime - _beforeTime;
  1135. // _sleepTime = (Std.int(_period) - _timeDiff) - _overSleepTime;
  1136. // if(_sleepTime <= 0) {
  1137. // _excess -= Std.int(_sleepTime);
  1138. // _sleepTime = 2;
  1139. // }
  1140. // myTimer.reset();
  1141. // myTimer.delay = _sleepTime;
  1142. // myTimer.start();
  1143. // event.updateAfterEvent;
  1144. }
  1145. }