Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package;
- import flixel.FlxG;
- import flixel.FlxObject;
- import flixel.FlxSprite;
- import flixel.FlxState;
- import flixel.text.FlxText;
- import flixel.ui.FlxButton;
- import flixel.math.FlxMath;
- import flixel.util.FlxTimer;
- import flixel.util.FlxAxes;
- import flixel.group.FlxGroup;
- import flixel.group.FlxGroup.FlxTypedGroup;
- import flixel.util.FlxColor;
- import openfl.Assets;
- class MultiState extends FlxState
- {
- private var _enemy:Nimo;
- private var FallingComboBlocks:FlxTypedGroup<Nimo>;
- private var FallingBlocks:FlxTypedGroup<Block>;
- //private static var StillBlocks:FlxTypedGroup<Block>;
- public static var StillBlocks:FlxTypedGroup<Block>;
- private var _centerText:FlxText;
- private var cornerTrack:FlxText;
- private var tracks:Int = 0;
- private var Floor:FlxSprite;
- public var mousecon:FlxSprite;
- public var currentX:Float;
- public var currentY:Float;
- override public function create():Void
- {
- Floor = new FlxSprite(0, 320);
- Floor.makeGraphic(FlxG.width, 16);
- Floor.immovable = true;
- Floor.solid = true;
- add(Floor);
- _centerText = new FlxText(0, 0, FlxG.width, "0");
- _centerText.alignment = CENTER;
- _centerText.color = FlxColor.RED;
- _centerText.screenCenter(FlxAxes.XY);
- add(_centerText);
- //FallingBlocks = new FlxTypedGroup<GroupNimo>(1);
- FallingBlocks = new FlxTypedGroup<Block>(2);
- add(FallingBlocks);
- StillBlocks = new FlxTypedGroup<Block>();
- add(StillBlocks);
- //FallingComboBlocks = new FlxTypedGroup<Nimo>(1);
- FallingComboBlocks = new FlxTypedGroup<Nimo>();
- add(FallingComboBlocks);
- cornerTrack = new FlxText(0, 0, FlxG.width, "");
- cornerTrack.alignment = CENTER;
- cornerTrack.color = FlxColor.RED;
- cornerTrack.screenCenter(FlxAxes.X);
- add(cornerTrack);
- mousecon = new FlxSprite(0, 0, "assets/images/cursor.png");
- add(mousecon);
- super.create();
- }
- override public function update(elapsed:Float):Void
- {
- if (FallingComboBlocks.length < 1)
- {
- new FlxTimer().start(1.8, newObstacle, 1);
- }
- //This SHOULD be moveable to split blocks now
- //FlxG.overlap(FallingBlocks, Floor, stillBlocks);
- //FlxG.overlap(FallingBlocks, StillBlocks, scoreBlocks);
- FlxG.collide(FallingComboBlocks, Floor, SplitBlocksCombo);
- //FlxG.overlap(FallingComboBlocks, StillBlocks, SplitBlocksCombo);
- if (mousecon.overlaps(StillBlocks))
- {
- for (blockS in StillBlocks)
- {
- if (FlxG.mouse.justReleased) blockS.kill();
- }
- }
- cornerTrack.text = "Falling Blocks: " + FallingComboBlocks.length;
- //_centerText.text = "Still Blocks: " + StillBlocks.length;
- trace("FallingComboBlocks.length " + FallingComboBlocks.length);
- super.update(elapsed);
- if (mousecon.x != FlxG.mouse.x) mousecon.x = FlxG.mouse.x;
- if (mousecon.y != FlxG.mouse.y) mousecon.y = FlxG.mouse.y;
- }
- //FlxSprite SHOULD cover both still blocks AND floor. SHOULD
- public function SplitBlocksCombo(entity:Nimo, subject:FlxObject):Void
- {
- Reg.DeadCombo = entity;
- StillBlocks.add(Reg.stale1);
- StillBlocks.add(Reg.stale2);
- var s = new Block(Reg.stale1.x, Reg.stale1.y, Reg.stale1.swatch);
- StillBlocks.add(s);
- var s2 = new Block(Reg.stale2.x, Reg.stale1.y, Reg.stale2.swatch);
- StillBlocks.add(s2);
- s.still = s2.still = true;
- Reg.stale1.kill();
- Reg.stale2.kill();
- FallingComboBlocks.remove(entity, true);
- FallingComboBlocks.length = 0;
- //FallingBlocks.remove(Reg.stale1);
- //FallingBlocks.remove(Reg.stale2);
- //FallingComboBlocks.remove(Reg.DeadCombo);
- //FallingComboBlocks.length = 0;
- //add(FallingComboBlock);
- //newX = FallingComboBlock.block1.x;
- //FallingComboBlock.kill();
- //entity.remove(entity.block1);
- //var obs = StillBlocks.recycle(Block);
- //obs.swatch = Reg.still1;
- //add(obs);
- //var obs2 = StillBlocks.recycle(Block);
- //obs2.swatch = Reg.still2;
- //add(obs2);
- //obs.velocity.y = 0;
- //entity.remove(Reg.stale1);
- //new FlxTimer().start(1.8, newObstacle, 1);
- //entity.block1.still = true;
- //StillBlocks.add(obs);
- //obs.still = true;
- //newX = entity.x;
- //entity.kill();
- //FallingComboBlock.stop();
- //add(FallingComboBlock.block1);
- //trace("Objects" + newX);
- //StillSpace.kill();
- //Tell it to stop
- //FallingComboBlock.block1.still = true;
- //FallingComboBlock.block2.still = true;
- //FallingComboBlock.block1.velocity.y = 0;
- //FallingComboBlock.block2.velocity.y = 0;
- //FallingComboBlocks.remove(FallingComboBlock, true);
- //Split the block into smaller blocks, add those to still blocks.
- //Tell it to stop
- ///FallingComboBlock.block1.still = true;
- //FallingComboBlock.block2.still = true;
- //FallingComboBlock._block1.velocity.y = 0;
- //FallingComboBlock._block2.velocity.y = 0;
- //Add the block to the still blocks
- /*
- var obs1:Block = StillBlocks.recycle(Block, function()
- {
- //return new Enemy(FlxG.random.int(0, FlxG.height), 0, Random.int(0,2));
- //return new Enemy(320, 0, Random.int(0,2));
- return new Block(FallingComboBlock._block1.x,FallingComboBlock._block1.y,Random.int(0,2));
- });
- var obs2:Block = StillBlocks.recycle(Block, function()
- {
- //return new Enemy(FlxG.random.int(0, FlxG.height), 0, Random.int(0,2));
- //return new Enemy(320, 0, Random.int(0,2));
- return new Block(FallingComboBlock._block2.x,FallingComboBlock._block2.y,Random.int(0,2));
- });
- StillBlocks.add(obs1);
- StillBlocks.add(obs2);
- //OR there won't BE a block to add
- FlxG.overlap(obs1, Floor, stillBlocks);
- FlxG.overlap(obs1, StillBlocks, scoreBlocks);
- FlxG.overlap(obs2, Floor, stillBlocks);
- FlxG.overlap(obs2, StillBlocks, scoreBlocks);
- */
- //FallingComboBlocks.remove(FallingComboBlock, true);
- }
- public function scoreBlocks(FallingBlock:Block, StillBlock:Block ):Void
- {
- if (FallingBlock.swatch == StillBlock.swatch)
- {
- //
- FallingBlocks.remove(FallingBlock, true);
- StillBlocks.remove(StillBlock, true);
- } else
- {
- //Tell it to stop
- FallingBlock.still = true;
- FallingBlock.velocity.y = 0;
- //Add the block to the still blocks
- StillBlocks.add(FallingBlock);
- //OR there won't BE a block to add
- FallingBlocks.remove(FallingBlock, true);
- }
- }
- public function stillBlocks(block:Block,Floore:FlxSprite ):Void
- {
- block.still = true;
- block.velocity.y = 0;
- StillBlocks.add(block);
- //FallingBlocks.remove(Block);
- FallingBlocks.remove(block, true);
- /*
- *
- * ///Splice the block from the group
- FallingBlocks.remove(Block, true);
- //Next, instantly replace it with an exact match
- var obs:Enemy = StillBlocks.recycle(Enemy, function()
- {
- return new Enemy(320, Block.y, Block.swatch
- );
- });
- obs.solid = true;
- */
- }
- public function newObstacle(f:FlxTimer):Void
- {
- if (FallingComboBlocks.length < 1)
- {
- //var obs = FallingComboBlocks.recycle(Nimo);
- FallingComboBlocks.length = 1;
- var ob = new Nimo(120,0);
- FallingComboBlocks.add(ob);
- add(ob);
- Reg.DeadCombo = ob;
- /*
- var obs:Nimo = FallingComboBlocks.recycle(Nimo, function()
- {
- //return new Enemy(FlxG.random.int(0, FlxG.height), 0, Random.int(0,2));
- //return new Enemy(320, 0, Random.int(0,2));
- return new Nimo(FlxG.random.int(0, FlxG.height), 0);
- });*/
- //obs.velocity.y = 100;
- //obs.block1.solid = true;
- //obs.block2.solid = true;
- //FallingComboBlocks.add(obs);
- //FallingBlocks.add(obs.block1);
- //FallingBlocks.add(obs.block2);
- //_centerText.text = "Still Blocks X: " + obs.block1.x;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement