diff --git a/flixel/input/mouse/FlxMouse.hx b/flixel/input/mouse/FlxMouse.hx index 95ce218c7e..4c28b85d74 100644 --- a/flixel/input/mouse/FlxMouse.hx +++ b/flixel/input/mouse/FlxMouse.hx @@ -13,11 +13,12 @@ import flash.Lib; import flash.ui.Mouse; import flash.Vector; import flixel.FlxG; +import flixel.input.FlxInput.FlxInputState; import flixel.input.IFlxInputManager; +import flixel.input.mouse.FlxMouseButton; import flixel.system.FlxAssets; import flixel.system.replay.MouseRecord; import flixel.util.FlxDestroyUtil; -import flixel.input.mouse.FlxMouseButton.FlxMouseButtonID; #if FLX_NATIVE_CURSOR import flash.ui.MouseCursor; import flash.ui.MouseCursorData; diff --git a/flixel/system/replay/FlxReplay.hx b/flixel/system/replay/FlxReplay.hx index 8e36cfe2c3..a98a2f21d2 100644 --- a/flixel/system/replay/FlxReplay.hx +++ b/flixel/system/replay/FlxReplay.hx @@ -149,12 +149,12 @@ class FlxReplay #if FLX_KEYBOARD var keysRecord:Array = FlxG.keys.record(); - if (keysRecord == null) continueFrame = false; + if (keysRecord != null) continueFrame = false; #end #if FLX_MOUSE var mouseRecord:MouseRecord = FlxG.mouse.record(); - if (mouseRecord == null) continueFrame = false; + if (mouseRecord != null) continueFrame = false; #end if (continueFrame) diff --git a/tests/unit/src/flixel/system/replay/FlxReplayTest.hx b/tests/unit/src/flixel/system/replay/FlxReplayTest.hx new file mode 100644 index 0000000000..dc0191feb4 --- /dev/null +++ b/tests/unit/src/flixel/system/replay/FlxReplayTest.hx @@ -0,0 +1,74 @@ +package flixel.system.replay; + +import flixel.input.keyboard.FlxKey; +import massive.munit.Assert; + +class FlxReplayTest extends FlxTest +{ + var seed:Int; + var fgr:String; + var frameCount:Int; + + @Before + function before() + { + seed = 123456789; + frameCount = 300; + fgr = seed + "\n"; + var key:Int; + var x:Int; + var y:Int; + var possibleKeys:Array = [for (key in FlxKey.toStringMap.keys()) key]; + for (key in [-1, -2, 192, 220]) // exclude not-really-keys, and debugger activators (so as not to affect other tests by having the debugger open) + possibleKeys.remove(key); + for (i in 0...frameCount) + { + key = possibleKeys[i % possibleKeys.length]; + x = i % FlxG.width; + y = FlxG.height - (i % FlxG.height); + fgr += i + "k" + key + ":1m" + x + "," + y + ",2,0\n"; // each frame has a simultaneous key-already-down and mouse-just-down + } + fgr += (frameCount++) + "km0,0,2,0\n"; // put everything back how it was for the next test + } + + @Test + function testReplayCreateSpecifyingSeed() + { + var replay = new FlxReplay(); + replay.create(seed); + Assert.areEqual(seed, replay.seed); + } + + @Test + function testReplayLoadSeed() + { + var replay = new FlxReplay(); + replay.load(fgr); + Assert.areEqual(seed, replay.seed); + } + + @Test + function testReplayLoadFrameCount() + { + var replay = new FlxReplay(); + replay.load(fgr); + Assert.areEqual(frameCount, replay.frameCount); + } + + @Test // #1739 + function testReplayRecordSimultaneousKeydownAndMouseDown() + { + var replayPlayer = new FlxReplay(); + var replayRecorder = new FlxReplay(); + replayRecorder.create(seed); + replayPlayer.load(fgr); + while (!replayPlayer.finished) + { + replayPlayer.playNextFrame(); + replayRecorder.recordFrame(); + step(); + } + var resavedFGR:String = replayRecorder.save(); + Assert.areEqual(fgr, resavedFGR); + } +} \ No newline at end of file