Test Coverage with Karma

Adding the Karma Test Coverage Tool I got tired of flailing around in the dark, so after turning on the lights, I started looking into test coverage tools. A few sources recommended Karma, so I went for it. It’s good (sorry). Code Coverage of Jasmine Tests using Istanbul and Karma Capturing browser with Karma 1 npm install karma karma-coverage My config: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 module....

March 27, 2018

Canvas Tech Debt

Addressing some of the technical debt. Not very exciting. So bullet lists. DID: Set up Jasmine tests in Robotron (8 specs, 0 failures) Set up Jasmine tests in canvas-libs (4 specs, 0 failures) Moved supporting.js stuff to canvas-libs for both Centipede and Robotron Moved the Sound object from sound.js to canvas-libs for both Centipede and Robotron Commits Centipede 6fbcfff e5fab76 2155216 Robotron 4c0c571 58f992f Canvas Libs...

March 15, 2018

Twinstick Firing in Robotron

Planning More gamepad updates today. This time, specifically for Robotron. I plan to integrate the controls pausing and twinstick shooting. Pause updates Updated pause to handle both spacebar and the + key. I should probably find an XBox controller and see if the indices of those buttons are the same as the X-input (they should be; the indices don’t change between D- and X-input, only the dPad location does, and X-input includes a few extra buttons....

March 14, 2018

Gamepad Controls Library Updates

Updating the gamepad library Today, I’m focusing on the controls library. Goal: add right stick capturing without breaking Centipede or Robotron. Robotron needs the right stick to handle firing. I could just leave controls.js alone and update it’s functionality in the game itself, like this: 1 2 3 var theControls = controls; Then add stuff to controls like this: 1 2 3 theControls.aNewThing = newStuff; Or override stuff like this:...

March 13, 2018

Nerding Out on Robotron

Pre-Feature Cleanup of Joust and Robotron Over the weekend, I made a serious dent in the technical debt for the other canvas games, Joust and Robotron. Before I did any of that, I poked at Joust and attempted to find the upper limit on the number of simultaneous player objects (it’s about 200 before the slowdown is noticeable)! Added more colors to make it fun! Then I spent the better part of Saturday converting the mess of functions of both games into objects....

March 12, 2018

Fly Droppings and Pausing

Demo Planning Adding: mushroom drops to the fly creature, and pause toggling with the gamepad. Fly Droppings Added mushroom generation to the falling bugs (the flies). This was straightforward. First, I set up an interval, and added a new function to intervalCreatures: dropMushrooms. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 dropMushrooms(creature) { if (creature != 'flies' || !everyinterval(knobsAndLevers[creature].mushroomCreateInterval)) { return; }; this.flies.forEach(fly => { if (fly....

March 9, 2018

HTML5 Canvas Gamepad Movement

Planning Yesterday, I left off with the gamepad controls working, but only in a way that basically broke all of the challenge of the game. The change allowed the player to move outside the defined player boundaries, which meant they could shoot from below the canvas with impunity. Hurray! Today, I’m going to fix that. Adding a Layer of Abstraction First, directional control functions were moved from gamePiece to controls. Another layer of abstraction was added to handle getActiveDirection checking....

March 8, 2018

Canvas Gamepad Movement

Session Planning I see a potential problem in the controls if more than one controller button is needed simultaneously. The isFiring returns a boolean on the FIRST button push it detects, and would ignore any additional entries in that list. This means if I press A, it will do the action for A, but then if I keep pressing A, and also press B, the action for A+B would not get executed; only the action for A would....

March 7, 2018

Canvas Gamepad Support

Today, I’m adding controller support to Centipede. (See the first controller commit.) Controls Code Cleanup First, the location of the controls currently doesn’t make a lot of sense, so I’m moving them to a new file, controls.js. On load, controls.addEventListeners will execute. There are no dependencies, so the script load order doesn’t matter. Previously these were on the gameArea object because that’s where the keys tracker was stored, but the keys tracker can just live in the controls object....

March 6, 2018

Adding That Falling Bug to Centipede

Session Planning Back to centipede! Adding that falling bug creature. It should be pretty much exactly like the worm, only moving vertically, and will create mushrooms in its wake. Rename the worm object to something else like simple-interval-creature (is that a horrible name?). This could be combined with spider as well, with an if statement on the type to change the shape and movement functions. Session Post Flies are in!...

March 5, 2018