Skip to content

Commit

Permalink
Add i18n and es/en locale
Browse files Browse the repository at this point in the history
  • Loading branch information
alanmtk committed May 16, 2019
1 parent dd48a87 commit 22077d9
Show file tree
Hide file tree
Showing 13 changed files with 92 additions and 66 deletions.
28 changes: 15 additions & 13 deletions build/classes/interface.js
@@ -1,11 +1,11 @@
'use strict';

var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();

Object.defineProperty(exports, "__esModule", {
value: true
});

var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

var _ansi = require('ansi');

var _ansi2 = _interopRequireDefault(_ansi);
Expand All @@ -14,28 +14,29 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

var _process = process;
var stdout = _process.stdout;
var stdin = _process.stdin;
var _process = process,
stdout = _process.stdout,
stdin = _process.stdin;


var listeners = [];

var prefix = '\u001b';
var prefix = '\x1B';
var keys = {
right: prefix + '[C',
up: prefix + '[A',
left: prefix + '[D',
down: prefix + '[B',
exit: '\u0003',
exit: '\x03',
space: ' '
};

var Interface = (function () {
var Interface = function () {
function Interface() {
var _this = this;

var output = arguments.length <= 0 || arguments[0] === undefined ? stdout : arguments[0];
var input = arguments.length <= 1 || arguments[1] === undefined ? stdin : arguments[1];
var output = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : stdout;
var input = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : stdin;

_classCallCheck(this, Interface);

Expand All @@ -61,7 +62,7 @@ var Interface = (function () {
});

if (key === 'exit') {
_this.output.write('\u001b[2J\u001b[0;0H');
_this.output.write('\x1B[2J\x1B[0;0H');
process.exit();
}

Expand All @@ -78,7 +79,7 @@ var Interface = (function () {
_createClass(Interface, [{
key: 'clear',
value: function clear() {
this.output.write('\u001b[2J\u001b[0;0H');
this.output.write('\x1B[2J\x1B[0;0H');
}
}, {
key: 'write',
Expand Down Expand Up @@ -110,6 +111,7 @@ var Interface = (function () {

var y = from.y;


for (var x = from.x; x < to.x; x++) {
this.cursor.goto(x, y);
this.write('.');
Expand Down Expand Up @@ -145,6 +147,6 @@ var Interface = (function () {
}]);

return Interface;
})();
}();

exports.default = Interface;
22 changes: 11 additions & 11 deletions build/classes/tank.js
@@ -1,12 +1,12 @@
'use strict';

var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();

Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Bullet = undefined;

var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

var _unit = require('./unit');

var _unit2 = _interopRequireDefault(_unit);
Expand All @@ -21,13 +21,13 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"

var BULLET_SPEED = 10;

var Tank = (function (_Unit) {
var Tank = function (_Unit) {
_inherits(Tank, _Unit);

function Tank(ui) {
_classCallCheck(this, Tank);

var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Tank).call(this, ui));
var _this = _possibleConstructorReturn(this, (Tank.__proto__ || Object.getPrototypeOf(Tank)).call(this, ui));

_this._angle = 0;
_this.bullets = [];
Expand All @@ -51,8 +51,8 @@ var Tank = (function (_Unit) {
value: function draw() {
if (this.dead) return;

var x = this.x;
var y = this.y;
var x = this.x,
y = this.y;

if (this.color && this.color[0] === '#') {
this.output.cursor.hex(this.color);
Expand All @@ -64,7 +64,7 @@ var Tank = (function (_Unit) {
x = Math.round(x) + 2;
y = Math.round(y) - 2;

var cannon = undefined;
var cannon = void 0;
if (this.angle < 35) cannon = '_';else if (this.angle < 70) cannon = '/';else if (this.angle < 115) cannon = '|';else if (this.angle < 160) cannon = '\\';else cannon = '_';

this.output.cursor.goto(x + 2, y - 2);
Expand Down Expand Up @@ -104,17 +104,17 @@ var Tank = (function (_Unit) {
}]);

return Tank;
})(_unit2.default);
}(_unit2.default);

exports.default = Tank;

var Bullet = exports.Bullet = (function (_Unit2) {
var Bullet = exports.Bullet = function (_Unit2) {
_inherits(Bullet, _Unit2);

function Bullet(ui) {
_classCallCheck(this, Bullet);

var _this2 = _possibleConstructorReturn(this, Object.getPrototypeOf(Bullet).call(this, ui));
var _this2 = _possibleConstructorReturn(this, (Bullet.__proto__ || Object.getPrototypeOf(Bullet)).call(this, ui));

_this2.velocity = [0, 0];

Expand Down Expand Up @@ -151,7 +151,7 @@ var Bullet = exports.Bullet = (function (_Unit2) {
}]);

return Bullet;
})(_unit2.default);
}(_unit2.default);

function _radian(deg) {
return deg * Math.PI / 180;
Expand Down
14 changes: 7 additions & 7 deletions build/classes/unit.js
@@ -1,16 +1,16 @@
'use strict';

var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();

Object.defineProperty(exports, "__esModule", {
value: true
});

var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

var Unit = (function () {
var Unit = function () {
function Unit(output) {
_classCallCheck(this, Unit);

Expand All @@ -33,9 +33,9 @@ var Unit = (function () {
value: function draw() {
if (this.dead) return;

var x = this.x;
var y = this.y;
var shape = this.shape;
var x = this.x,
y = this.y,
shape = this.shape;

if (this.color && this.color[0] === '#') {
this.output.cursor.hex(this.color);
Expand Down Expand Up @@ -123,6 +123,6 @@ var Unit = (function () {
}]);

return Unit;
})();
}();

exports.default = Unit;
22 changes: 10 additions & 12 deletions build/snake.js
@@ -1,6 +1,6 @@
'use strict';

var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; })();
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();

var _unit = require('./classes/unit');

Expand Down Expand Up @@ -60,7 +60,7 @@ function loop() {
gameover();
}

ui.cursor.goto(0, 0).yellow().write('Score: ' + score);
ui.cursor.goto(0, 0).yellow().write(i18n.__('Score') + ': ' + score);
ui.cursor.reset();

setTimeout(loop, FRAME);
Expand Down Expand Up @@ -107,7 +107,7 @@ function createPart() {
var part = new _unit2.default(ui);
var last = snake[snake.length - 1];

var direction = undefined;
var direction = void 0;
if (!last) {
direction = UP;
} else {
Expand All @@ -132,7 +132,7 @@ function createPart() {
};

part.speed = function () {
var multiplier = arguments.length <= 0 || arguments[0] === undefined ? 1 : arguments[0];
var multiplier = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
var direction = part.direction;

var x = direction == LEFT ? -1 : direction == RIGHT ? 1 : 0;
Expand All @@ -141,12 +141,10 @@ function createPart() {
return [x * multiplier, y * multiplier];
};

var _part$speed = part.speed();

var _part$speed2 = _slicedToArray(_part$speed, 2);

var dX = _part$speed2[0];
var dY = _part$speed2[1];
var _part$speed = part.speed(),
_part$speed2 = _slicedToArray(_part$speed, 2),
dX = _part$speed2[0],
dY = _part$speed2[1];

dX *= -1;
dY *= -1;
Expand All @@ -161,15 +159,15 @@ function createPart() {
}

function gameover() {
var MSG = 'Game Over!';
var MSG = i18n.__('Game Over');
ui.cursor.goto(ui.center.x - MSG.length / 2, ui.center.y);
ui.cursor.red();
ui.cursor.bold();
ui.write(MSG);

ui.cursor.reset();
ui.cursor.hex('#f65590');
var RETRY = 'Press any key to play again';
var RETRY = i18n.__('Press any key to play again');
ui.cursor.goto(ui.center.x - RETRY.length / 2, ui.center.y + 2);
ui.write(RETRY);

Expand Down
2 changes: 1 addition & 1 deletion build/spacecraft.js
Expand Up @@ -68,7 +68,7 @@ setInterval(function () {
if (enemy.killed < 3) enemy.killed++;
});

ui.cursor.goto(0, 0).yellow().write('Score: ' + score);
ui.cursor.goto(0, 0).yellow().write(i18n.__('Score') + ': ' + score);
ui.cursor.reset();
}, FRAME);

Expand Down
15 changes: 7 additions & 8 deletions build/tanks.js
Expand Up @@ -33,7 +33,7 @@ function loop() {

if (one.dead || two.dead) {
var num = one.dead ? '2' : '1';
var msg = 'Player ' + num + ' won!';
var msg = i18n.__('Player %s won!', num);
ui.cursor.red();
ui.cursor.bold();

Expand Down Expand Up @@ -62,12 +62,12 @@ function loop() {

ui.cursor.goto(0, 1);
if (turn() === one) ui.cursor.hex('#54ffff');
ui.write('Player 1');
ui.write(i18n.__('Player') + ' 1');
ui.cursor.reset();
ui.cursor.goto(0, 2);
ui.write('Health: ' + one.health);
ui.write(i18n.__('Health') + ': ' + one.health);
ui.cursor.goto(0, 3);
ui.write('Angle: ' + parseInt(one.angle));
ui.write(i18n.__('Angle') + ': ' + parseInt(one.angle));

two.draw();
two.bullets.forEach(function (bullet, i) {
Expand All @@ -87,13 +87,12 @@ function loop() {

ui.cursor.goto(ui.output.columns - 10, 1);
if (turn() === two) ui.cursor.hex('#54ffff');
ui.write('Player 2');
ui.write(i18n.__('Player') + ' 2');
ui.cursor.reset();
ui.cursor.goto(ui.output.columns - 10, 2);
ui.write('Health: ' + two.health);
ui.write(i18n.__('Health') + ': ' + two.health);
ui.cursor.goto(ui.output.columns - 10, 3);
ui.write('Angle: ' + parseInt(two.angle));

ui.write(i18n.__('Angle') + ': ' + parseInt(two.angle));
setTimeout(loop, FRAME);
}

Expand Down
9 changes: 8 additions & 1 deletion index.js
@@ -1,11 +1,18 @@
#!/usr/bin/env node

i18n = require('i18n');
path = require('path');

i18n.configure({
directory: path.join(__dirname, '/locales')
});

var game = process.argv[2];

if (!game) {
console.log('usage: node-games <game>');
console.log('');
console.log('Games');
console.log(i18n.__('Games'));
console.log('- spacecraft');
console.log('- snake');
console.log('- tanks');
Expand Down
10 changes: 10 additions & 0 deletions locales/en.json
@@ -0,0 +1,10 @@
{
"Score": "Score",
"Game Over": "Game Over!",
"Press any key to play again": "Press any key to play again",
"Angle": "Angle",
"Health": "Health",
"Player": "Player",
"Games": "Games",
"Player %s won!": "Player %s won!"
}
10 changes: 10 additions & 0 deletions locales/es.json
@@ -0,0 +1,10 @@
{
"Score": "Puntaje",
"Game Over": "Juego terminado!",
"Press any key to play again": "Pulsa cualquier tecla para volver a jugar",
"Angle": "Ángulo",
"Health": "Salud",
"Player": "Jugador",
"Games": "Juegos",
"Player %s won!": "El jugador %s ganó!"
}
3 changes: 2 additions & 1 deletion package.json
Expand Up @@ -25,7 +25,8 @@
"ansi": "0.3.0",
"babel-core": "6.3.17",
"babel-polyfill": "6.3.14",
"babel-preset-es2015": "6.3.13"
"babel-preset-es2015": "6.3.13",
"i18n": "^0.8.3"
},
"devDependencies": {
"grunt": "0.4.5",
Expand Down

0 comments on commit 22077d9

Please sign in to comment.