Skip to content

Commit

Permalink
add ci
Browse files Browse the repository at this point in the history
  • Loading branch information
arjanfrans committed Dec 5, 2015
1 parent 3443288 commit a998c9e
Show file tree
Hide file tree
Showing 13 changed files with 127 additions and 63 deletions.
13 changes: 13 additions & 0 deletions .travis.yml
@@ -0,0 +1,13 @@
language: node_js

node_js:
- "4.2"
- "stable"

cache:
directories:
- node_modules

script: "npm run ci"

after_script: "cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js"
6 changes: 6 additions & 0 deletions README.md
@@ -1,5 +1,11 @@
# Grand Theft Duty

[![Build Status](https://travis-ci.org/arjanfrans/grand-theft-duty.svg)](https://travis-ci.org/arjanfrans/grand-theft-duty)
[![Dependency Status](https://david-dm.org/arjanfrans/grand-theft-duty.svg)](https://david-dm.org/arjanfrans/grand-theft-duty)
[![devDependency Status](https://david-dm.org/arjanfrans/grand-theft-duty/dev-status.svg)](https://david-dm.org/arjanfrans/grand-theft-duty#info=devDependencies)
[![Coverage Status](https://coveralls.io/repos/arjanfrans/grand-theft-duty/badge.svg?branch=master&service=github)](https://coveralls.io/github/arjanfrans/grand-theft-duty?branch=master)
[![Gratipay](https://img.shields.io/gratipay/arjanfrans.svg)](https://gratipay.com/~arjanfrans)

A top-down shooter inspired by the classic Grand Theft Auto games and Call of Duty.
Grand Theft Duty combines elements of both games.

Expand Down
2 changes: 1 addition & 1 deletion deploy.sh
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
set -o errexit #abort if any command fails

npm run build
npm run build:production
mkdir -p dist
rm -rf ./dist/assets
cp -r ./assets ./dist
Expand Down
9 changes: 8 additions & 1 deletion package.json
Expand Up @@ -9,11 +9,15 @@
"three-bmfont-text": "^1.2.0"
},
"scripts": {
"test": "mocha ./test/*",
"cover": "istanbul cover _mocha -- -R spec ./test/*",
"ci": "npm run clean && npm run lint && npm run build:production && npm run cover",
"clean": "rm -r build",
"lint": "eslint ./src/*",
"start": "webpack-dev-server --colors --devtool source-map",
"deploy": "./deploy.sh",
"build": "webpack --optimize-minimize"
"build:production": "webpack --optimize-minimize",
"build:development": "webpack"
},
"repository": {
"type": "git",
Expand All @@ -34,7 +38,10 @@
"babel-loader": "^6.2.0",
"babel-preset-es2015": "^6.1.18",
"convert-bmfont": "^1.0.2",
"coveralls": "^2.11.4",
"eslint": "^1.10.3",
"istanbul": "^0.4.1",
"mocha": "^2.3.4",
"pre-commit": "^1.1.2",
"spritesheet-js": "git+https://github.com/arjanfrans/spritesheet.js.git",
"webpack": "^1.12.9",
Expand Down
23 changes: 12 additions & 11 deletions src/builders/states/MenuStateBuilder.js
Expand Up @@ -5,6 +5,7 @@ import MenuRenderView from '../../game/states/menu/MenuRenderView';
import ViewContainer from '../../engine/views/ViewContainer';
import BackgroundView from '../../engine/views/BackgroundView';
import Menu from '../../engine/menu/Menu';
import MenuItem from '../../engine/menu/MenuItem';
import MenuInput from '../../game/input/menu/MenuInput';

import MenuItemsView from '../../game/views/menu/MenuItemsView';
Expand All @@ -15,27 +16,27 @@ import MenuAudio from '../../game/audio/MenuAudio';
let _createMenus = function (engine, state) {
let mainMenu = new Menu();

mainMenu.addMenuItem('Create game', function () {
mainMenu.addMenuItem(new MenuItem('createGame', 'Create game', function () {
engine.changeState('play');
});
}));

mainMenu.addMenuItem('Options', function () {
mainMenu.addMenuItem(new MenuItem('options', 'Options', function () {
state.currentMenu = 'options';
});
}));

mainMenu.addMenuItem('Exit', function () {
mainMenu.addMenuItem(new MenuItem('help', 'Help', function () {
debug('not implemented');
});
}));

let optionsMenu = new Menu();

optionsMenu.addMenuItem('Name', function () {
debug('not implemented');
});
optionsMenu.addMenuItem(new MenuItem('name', 'Name', function () {
// state.currentOptionsEdit = 'name';
}));

optionsMenu.addMenuItem('- back', function () {
optionsMenu.addMenuItem(new MenuItem('back', '- back', function () {
state.currentMenu = 'main';
});
}));

state.addMenu('main', mainMenu);
state.addMenu('options', optionsMenu);
Expand Down
65 changes: 49 additions & 16 deletions src/engine/input/Keyboard.js
@@ -1,16 +1,6 @@
let debug = require('debug')('game:engine/input/utils/Keyboard');

let keys = {
CTRL: 17,
SPACE: 32,
ENTER: 13,
SHIFT: 16,
ESC: 27,
TAB: 9,
LEFT: 37,
UP: 38,
RIGHT: 39,
DOWN: 40,
let letterKeys = {
A: 65,
B: 66,
C: 67,
Expand Down Expand Up @@ -39,28 +29,71 @@ let keys = {
Z: 90
};

let keys = {
BACKSPACE: 8,
CTRL: 17,
SPACE: 32,
ENTER: 13,
SHIFT: 16,
ESC: 27,
TAB: 9,
LEFT: 37,
UP: 38,
RIGHT: 39,
DOWN: 40
};

for (let key of Object.keys(letterKeys)) {
keys[key] = letterKeys[key];
}

let codes = {};

let Keyboard = {
_pressed: {},
lastPressed: null,

isDown: function (keyCode) {
isDown (keyCode) {
return this._pressed[keyCode];
},

onKeydown: function (event) {
onKeydown (event) {
this.lastPressed = event.keyCode;
this._pressed[event.keyCode] = true;
},

onKeyup: function (event) {
onKeyup (event) {
this._pressed[event.keyCode] = false;
},

keyByCode: function (code) {
keyByCode (code) {
return codes[code];
},

keys: keys
get pressedCodes () {
return this._pressed;
},

get pressedKeys () {
let pressed = [];

for (let code of this._pressed) {
pressed.push(this.keyByCode(code));
}

return pressed;
},

keys: keys,
get letterKeyCodes () {
let letterCodes = [];

for (let code of letterKeys) {
letterCodes.push(code);
}

return letterCodes;
}
};

for (let key of Object.keys(keys)) {
Expand Down
21 changes: 5 additions & 16 deletions src/engine/menu/Menu.js
@@ -1,20 +1,17 @@
let debug = require('debug')('game:engine/logic/menu/Menu');

class Menu {
constructor () {
this.menuItems = new Map();
this.menuItemKeys = [];

this.selectedItemIndex = 0;
}

addMenuItem (menuItem, action) {
this.menuItemKeys.push(menuItem);
this.menuItems.set(menuItem, action);
addMenuItem (menuItem) {
this.menuItemKeys.push(menuItem.name);
this.menuItems.set(menuItem.name, menuItem);
}

get selectedItem () {
return this.menuItemKeys[this.selectedItemIndex];
return this.menuItems.get(this.menuItemKeys[this.selectedItemIndex]);
}

moveUp () {
Expand All @@ -23,8 +20,6 @@ class Menu {
} else {
this.selectedItemIndex = 0;
}

debug('current item', this.selectedItem);
}

moveDown () {
Expand All @@ -33,16 +28,10 @@ class Menu {
} else {
this.selectedItemIndex = this.menuItemKeys.length - 1;
}

debug('current item', this.selectedItem);
}

selectCurrentItem () {
debug('selecting current item', this.selectedItem);

let action = this.menuItems.get(this.selectedItem);

action();
this.selectedItem.action();
}
}

Expand Down
9 changes: 9 additions & 0 deletions src/engine/menu/MenuItem.js
@@ -0,0 +1,9 @@
class MenuItem {
constructor (name, text, action) {
this.name = name;
this.text = text;
this.action = action;
}
}

export default MenuItem;
20 changes: 17 additions & 3 deletions src/game/input/menu/MenuInput.js
Expand Up @@ -10,15 +10,29 @@ class MenuInput extends HumanInput {
}

update () {
let state = this.state;

if (this.keyboardDownOnce(Keyboard.UP) || Gamepad.isStickDown(0, 'left', 'up')) {
this.state.currentMenu.moveUp();
state.currentMenu.moveUp();
} else if (this.keyboardDownOnce(Keyboard.DOWN) || Gamepad.isStickDown(0, 'left', 'down')) {
this.state.currentMenu.moveDown();
state.currentMenu.moveDown();
}

if (this.keyboardDownOnce(Keyboard.ENTER) || this.keyboardDownOnce(Keyboard.SPACE) ||
this.gamepadButtonDownOnce('actionSouth')) {
this.state.currentMenu.selectCurrentItem();
state.currentMenu.selectCurrentItem();
}

if (state.currentOptionsEdit) {
let option = state.options.get(state.currentOptionsEdit);

if (this.keyboardDownOnce(Keyboard.ENTER)) {
console.info('to be implemented');
}

if (Keyboard.letterKeys.indexOf(Keyboard.lastPressed) !== -1) {
this.state.options.set(state.currentOptionsEdit, option + Keyboard.keyByCode(Keyboard.lastPressed));
}
}
}
}
Expand Down
13 changes: 0 additions & 13 deletions src/game/input/menu/TextInput.js

This file was deleted.

4 changes: 4 additions & 0 deletions src/game/states/menu/MenuState.js
Expand Up @@ -8,6 +8,10 @@ class MenuState extends State {
this.menus = new Map();
this._currentMenu = null;
this.currentMenuName = null;
this.options = new Map([
['name', 'Unknown Soldier']
]);
this.currentOptionsEdit = null;
}

addMenu (name, menu) {
Expand Down
4 changes: 2 additions & 2 deletions src/game/views/menu/MenuItemsView.js
Expand Up @@ -27,8 +27,8 @@ class MenuItemsView extends View {

this.selectedItem = this.menu.selectedItem;

for (let menuItem of this.menu.menuItemKeys) {
let textView = new Views.Text(menuItem, {
for (let menuItem of this.menu.menuItems.values()) {
let textView = new Views.Text(menuItem.text, {
width: 300
});

Expand Down
1 change: 1 addition & 0 deletions test/index.js
@@ -0,0 +1 @@
//TODO

0 comments on commit a998c9e

Please sign in to comment.