Advertisement
Guest User

Untitled

a guest
Jun 14th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.83 KB | None | 0 0
  1. package;
  2.  
  3. import flixel.FlxG;
  4. import flixel.FlxObject;
  5. import flixel.FlxSprite;
  6. import flixel.FlxState;
  7. import flixel.text.FlxText;
  8. import flixel.ui.FlxButton;
  9. import flixel.math.FlxMath;
  10.  
  11. import flixel.util.FlxTimer;
  12.  
  13. import flixel.util.FlxAxes;
  14.  
  15. import flixel.group.FlxGroup;
  16. import flixel.group.FlxGroup.FlxTypedGroup;
  17. import flixel.util.FlxColor;
  18.  
  19. import openfl.Assets;
  20.  
  21. class MultiState extends FlxState
  22. {
  23.  
  24. private var _enemy:Nimo;
  25.  
  26. private var FallingComboBlocks:FlxTypedGroup<Nimo>;
  27. private var FallingBlocks:FlxTypedGroup<Block>;
  28. //private static var StillBlocks:FlxTypedGroup<Block>;
  29. public static var StillBlocks:FlxTypedGroup<Block>;
  30.  
  31. private var _centerText:FlxText;
  32. private var cornerTrack:FlxText;
  33. private var tracks:Int = 0;
  34.  
  35. private var Floor:FlxSprite;
  36.  
  37. public var mousecon:FlxSprite;
  38.  
  39. public var currentX:Float;
  40. public var currentY:Float;
  41.  
  42.  
  43.  
  44. override public function create():Void
  45. {
  46.  
  47.  
  48. Floor = new FlxSprite(0, 320);
  49. Floor.makeGraphic(FlxG.width, 16);
  50. Floor.immovable = true;
  51. Floor.solid = true;
  52.  
  53. add(Floor);
  54.  
  55.  
  56. _centerText = new FlxText(0, 0, FlxG.width, "0");
  57. _centerText.alignment = CENTER;
  58. _centerText.color = FlxColor.RED;
  59. _centerText.screenCenter(FlxAxes.XY);
  60. add(_centerText);
  61.  
  62.  
  63. //FallingBlocks = new FlxTypedGroup<GroupNimo>(1);
  64. FallingBlocks = new FlxTypedGroup<Block>(2);
  65. add(FallingBlocks);
  66.  
  67. StillBlocks = new FlxTypedGroup<Block>();
  68. add(StillBlocks);
  69.  
  70. //FallingComboBlocks = new FlxTypedGroup<Nimo>(1);
  71. FallingComboBlocks = new FlxTypedGroup<Nimo>();
  72. add(FallingComboBlocks);
  73.  
  74.  
  75.  
  76.  
  77.  
  78. cornerTrack = new FlxText(0, 0, FlxG.width, "");
  79. cornerTrack.alignment = CENTER;
  80. cornerTrack.color = FlxColor.RED;
  81. cornerTrack.screenCenter(FlxAxes.X);
  82. add(cornerTrack);
  83.  
  84. mousecon = new FlxSprite(0, 0, "assets/images/cursor.png");
  85. add(mousecon);
  86.  
  87. super.create();
  88. }
  89.  
  90. override public function update(elapsed:Float):Void
  91. {
  92. if (FallingComboBlocks.length < 1)
  93. {
  94. new FlxTimer().start(1.8, newObstacle, 1);
  95.  
  96.  
  97. }
  98.  
  99.  
  100. //This SHOULD be moveable to split blocks now
  101. //FlxG.overlap(FallingBlocks, Floor, stillBlocks);
  102. //FlxG.overlap(FallingBlocks, StillBlocks, scoreBlocks);
  103.  
  104. FlxG.collide(FallingComboBlocks, Floor, SplitBlocksCombo);
  105. //FlxG.overlap(FallingComboBlocks, StillBlocks, SplitBlocksCombo);
  106.  
  107.  
  108.  
  109. if (mousecon.overlaps(StillBlocks))
  110. {
  111. for (blockS in StillBlocks)
  112. {
  113. if (FlxG.mouse.justReleased) blockS.kill();
  114. }
  115. }
  116.  
  117. cornerTrack.text = "Falling Blocks: " + FallingComboBlocks.length;
  118. //_centerText.text = "Still Blocks: " + StillBlocks.length;
  119.  
  120.  
  121.  
  122. trace("FallingComboBlocks.length " + FallingComboBlocks.length);
  123. super.update(elapsed);
  124.  
  125.  
  126. if (mousecon.x != FlxG.mouse.x) mousecon.x = FlxG.mouse.x;
  127. if (mousecon.y != FlxG.mouse.y) mousecon.y = FlxG.mouse.y;
  128. }
  129.  
  130. //FlxSprite SHOULD cover both still blocks AND floor. SHOULD
  131. public function SplitBlocksCombo(entity:Nimo, subject:FlxObject):Void
  132. {
  133.  
  134. Reg.DeadCombo = entity;
  135.  
  136. StillBlocks.add(Reg.stale1);
  137. StillBlocks.add(Reg.stale2);
  138.  
  139. var s = new Block(Reg.stale1.x, Reg.stale1.y, Reg.stale1.swatch);
  140. StillBlocks.add(s);
  141.  
  142. var s2 = new Block(Reg.stale2.x, Reg.stale1.y, Reg.stale2.swatch);
  143. StillBlocks.add(s2);
  144.  
  145. s.still = s2.still = true;
  146.  
  147. Reg.stale1.kill();
  148. Reg.stale2.kill();
  149.  
  150.  
  151. FallingComboBlocks.remove(entity, true);
  152.  
  153. FallingComboBlocks.length = 0;
  154.  
  155. //FallingBlocks.remove(Reg.stale1);
  156. //FallingBlocks.remove(Reg.stale2);
  157.  
  158.  
  159. //FallingComboBlocks.remove(Reg.DeadCombo);
  160.  
  161.  
  162. //FallingComboBlocks.length = 0;
  163.  
  164.  
  165. //add(FallingComboBlock);
  166.  
  167. //newX = FallingComboBlock.block1.x;
  168. //FallingComboBlock.kill();
  169.  
  170. //entity.remove(entity.block1);
  171.  
  172. //var obs = StillBlocks.recycle(Block);
  173. //obs.swatch = Reg.still1;
  174. //add(obs);
  175.  
  176.  
  177.  
  178.  
  179. //var obs2 = StillBlocks.recycle(Block);
  180. //obs2.swatch = Reg.still2;
  181. //add(obs2);
  182.  
  183.  
  184. //obs.velocity.y = 0;
  185. //entity.remove(Reg.stale1);
  186.  
  187.  
  188. //new FlxTimer().start(1.8, newObstacle, 1);
  189.  
  190. //entity.block1.still = true;
  191. //StillBlocks.add(obs);
  192.  
  193. //obs.still = true;
  194.  
  195. //newX = entity.x;
  196. //entity.kill();
  197.  
  198. //FallingComboBlock.stop();
  199. //add(FallingComboBlock.block1);
  200.  
  201. //trace("Objects" + newX);
  202.  
  203. //StillSpace.kill();
  204. //Tell it to stop
  205. //FallingComboBlock.block1.still = true;
  206. //FallingComboBlock.block2.still = true;
  207.  
  208. //FallingComboBlock.block1.velocity.y = 0;
  209. //FallingComboBlock.block2.velocity.y = 0;
  210. //FallingComboBlocks.remove(FallingComboBlock, true);
  211.  
  212.  
  213.  
  214. //Split the block into smaller blocks, add those to still blocks.
  215. //Tell it to stop
  216. ///FallingComboBlock.block1.still = true;
  217. //FallingComboBlock.block2.still = true;
  218.  
  219. //FallingComboBlock._block1.velocity.y = 0;
  220. //FallingComboBlock._block2.velocity.y = 0;
  221.  
  222. //Add the block to the still blocks
  223.  
  224. /*
  225. var obs1:Block = StillBlocks.recycle(Block, function()
  226. {
  227. //return new Enemy(FlxG.random.int(0, FlxG.height), 0, Random.int(0,2));
  228. //return new Enemy(320, 0, Random.int(0,2));
  229. return new Block(FallingComboBlock._block1.x,FallingComboBlock._block1.y,Random.int(0,2));
  230. });
  231. var obs2:Block = StillBlocks.recycle(Block, function()
  232. {
  233. //return new Enemy(FlxG.random.int(0, FlxG.height), 0, Random.int(0,2));
  234. //return new Enemy(320, 0, Random.int(0,2));
  235. return new Block(FallingComboBlock._block2.x,FallingComboBlock._block2.y,Random.int(0,2));
  236. });
  237.  
  238. StillBlocks.add(obs1);
  239. StillBlocks.add(obs2);
  240.  
  241. //OR there won't BE a block to add
  242.  
  243.  
  244.  
  245. FlxG.overlap(obs1, Floor, stillBlocks);
  246. FlxG.overlap(obs1, StillBlocks, scoreBlocks);
  247.  
  248. FlxG.overlap(obs2, Floor, stillBlocks);
  249. FlxG.overlap(obs2, StillBlocks, scoreBlocks);
  250. */
  251.  
  252. //FallingComboBlocks.remove(FallingComboBlock, true);
  253.  
  254. }
  255.  
  256.  
  257. public function scoreBlocks(FallingBlock:Block, StillBlock:Block ):Void
  258. {
  259.  
  260. if (FallingBlock.swatch == StillBlock.swatch)
  261. {
  262. //
  263. FallingBlocks.remove(FallingBlock, true);
  264. StillBlocks.remove(StillBlock, true);
  265.  
  266. } else
  267. {
  268. //Tell it to stop
  269. FallingBlock.still = true;
  270. FallingBlock.velocity.y = 0;
  271. //Add the block to the still blocks
  272. StillBlocks.add(FallingBlock);
  273. //OR there won't BE a block to add
  274. FallingBlocks.remove(FallingBlock, true);
  275. }
  276.  
  277. }
  278. public function stillBlocks(block:Block,Floore:FlxSprite ):Void
  279. {
  280. block.still = true;
  281. block.velocity.y = 0;
  282. StillBlocks.add(block);
  283. //FallingBlocks.remove(Block);
  284. FallingBlocks.remove(block, true);
  285.  
  286. /*
  287. *
  288. * ///Splice the block from the group
  289. FallingBlocks.remove(Block, true);
  290. //Next, instantly replace it with an exact match
  291. var obs:Enemy = StillBlocks.recycle(Enemy, function()
  292. {
  293. return new Enemy(320, Block.y, Block.swatch
  294. );
  295. });
  296. obs.solid = true;
  297. */
  298. }
  299.  
  300. public function newObstacle(f:FlxTimer):Void
  301. {
  302.  
  303. if (FallingComboBlocks.length < 1)
  304. {
  305.  
  306. //var obs = FallingComboBlocks.recycle(Nimo);
  307. FallingComboBlocks.length = 1;
  308.  
  309. var ob = new Nimo(120,0);
  310. FallingComboBlocks.add(ob);
  311. add(ob);
  312. Reg.DeadCombo = ob;
  313. /*
  314. var obs:Nimo = FallingComboBlocks.recycle(Nimo, function()
  315. {
  316. //return new Enemy(FlxG.random.int(0, FlxG.height), 0, Random.int(0,2));
  317. //return new Enemy(320, 0, Random.int(0,2));
  318. return new Nimo(FlxG.random.int(0, FlxG.height), 0);
  319. });*/
  320. //obs.velocity.y = 100;
  321.  
  322. //obs.block1.solid = true;
  323. //obs.block2.solid = true;
  324.  
  325. //FallingComboBlocks.add(obs);
  326.  
  327. //FallingBlocks.add(obs.block1);
  328. //FallingBlocks.add(obs.block2);
  329.  
  330.  
  331. //_centerText.text = "Still Blocks X: " + obs.block1.x;
  332. }
  333.  
  334. }
  335. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement