all repos — uStrat @ 245abc4d3be03d43a1a4a5429dc17e6f8617ff79

simple turn-based strategy game inspired by uCity, Super Robot Wars, C&C, Fire Emblem

use let instead of var everywhere; fixed bugs and adjusted ocean generation
Iris Lightshard nilix@nilfm.cc
PGP Signature
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEkFh6dA+k/6CXFXU4O3+8IhROY5gFAmDT5aYACgkQO3+8IhRO
Y5hLxQ//T8kB56SM/fVfR88sLmNnUW/x7+nb8Ly6GbqT9AmQKjrNXKoQbqTS/JLN
HDrx/DESwo0umGeAgPdxbFTJyckBc9+Sr6j4AqSxZiOK/BI8OOR+1dDIevPSuZ5e
rgfWtUZByb94dCSu7mLsNnB6jrnOAayp0cWDTsC3ginL6tAJZX4x/0eclRFB4dOX
sGCIzIad+Jm0QVHI63cIa55UY8MvpVkb4NBkkPHRLomnrlHOLyE0BxqF3YHCs5Gu
Iy4xB+zecaskXoPSlDr2wtHxc3f8JuRa2QuMr1WFF7vxqO9GrD66j9ZpmUZ0uZ7L
E5N+9ELlcjvw7CFFLmXJoXntzosdr5ctTs0frqynstz0Al9ip2emfJcq13OSVW7D
Rz3neUZeoezaBcCn4+jSJRSPgWsRvwNgIc09fGje0JtiX07jJ7/STjoplboLf9RI
G3y7du4XmTH01At73SBEri+362CGZE2cSbLDlrPdPw1kWOtPcZbPHyTKNLUOrS23
ijC4kX/VSxvye0b9DeKD4vV89U9yeWzH1hflHWcbojAW3iN0gIVrUOowuFD0efu1
9z8SPb8BhAyAwxJqH1mjfsygCViH1S7vkDcqbRAetLQ/4E6xq9K17aQM9YNNwF8R
r2B0km1f0T06lgX2u1LxNi5CmRBgyJmkQOmSwHzeqtBJyJ9IiZY=
=cist
-----END PGP SIGNATURE-----
commit

245abc4d3be03d43a1a4a5429dc17e6f8617ff79

parent

1e80ddda361f59ceae8202610b113f742e77632b

11 files changed, 129 insertions(+), 112 deletions(-)

jump to
M AI.jsAI.js

@@ -33,11 +33,15 @@ }

AI.setTargetType = function() { - var x = teams.cpu.units[AI.focus]; - var w = AI.rand(2); - var z = AI.rand(3); + let x = teams.cpu.units[AI.focus]; + let w = AI.rand(2); + let z = AI.rand(3); let rank = 99999 + if (x.equipment === null) { + x.targetType = "defend"; + return; + } for (let i = 0; i < teams.p1.units.length; i++) { if (dist(teams.p1.units[i], x) <= x.equipment.range) { x.targetType = "unit";

@@ -71,7 +75,7 @@ }

AI.findTarget = function() { - var x = teams.cpu.units[AI.focus]; + let x = teams.cpu.units[AI.focus]; console.log("cpu unit " + AI.focus + " target type: " + x.targetType); switch (x.targetType) {

@@ -88,15 +92,19 @@ x.target = AI.selectEnemyStruct();

x.mode = "attack"; break; case "defend": - x.target = AI.selectOwnStruct(); + if (x.equipment === null) { + x.target = AI.getClosestArmory(x); + } else { + x.target = AI.selectOwnStruct(); + } x.mode = "defend"; } } AI.findSafeCity = function() { - var z, i, j, k; - var tX, tY, d; + let z, i, j, k; + let tX, tY, d; tX = -1; tY = -1; d = 1000;

@@ -121,13 +129,13 @@ }

} if (tX >= 0 && tY >= 0) return map.data[tX][tY]; - else return map.data[16][16]; + else return teams.p1.structs[0]; } AI.selectEnemyUnit = function() { // rank enemy units: HP*ATK/DEF - var i, j, k, u, tmp; + let i, j, k, u, tmp; u = -1 j = 0; for (i = 0; i < teams.p1.units.length; i++)

@@ -152,13 +160,13 @@ }

if (u >= 0) return teams.p1.units[u]; else - return map.data[16][16]; + return teams.p1.structs[0]; } AI.selectEnemyStruct = function() { // rank structs by HP/DEF - var i, j, k, s; + let i, j, k, s; j = 0; s = -1;

@@ -181,10 +189,14 @@

AI.selectOwnStruct = function() { // rank structs by HP/DEF - var i, j, k, s, x; + let i, j, k, s, x; j = 0; s = -1; - var skip = false; + let skip = false; + + if (map.data[teams.cpu.structs[0].x][teams.cpu.structs[0].y].unit === null) { + return teams.cpu.structs[0]; + } for (i = 0; i < teams.cpu.structs.length; i++) {

@@ -223,8 +235,8 @@ }

AI.getBearing = function(self, target) { - var w, z, d; - var bearing = ""; + let w, z, d; + let bearing = ""; w = target.x - self.x; z = target.y - self.y; d = dist(self, target);

@@ -271,7 +283,7 @@

AI.getClosestArmory = function(u) { - var i, j, k, A; + let i, j, k, A; A = -1; j = 99999; for (i = 0; i < teams.cpu.structs.length; i++)

@@ -296,8 +308,8 @@ }

AI.equip = function(u) { - var z; - var unit = map.data[mapCursor.x][mapCursor.y].unit; + let z = -1; + let unit = map.data[mapCursor.x][mapCursor.y].unit; if (teams.cpu.energy >= 80) {

@@ -315,7 +327,6 @@ else if (teams.cpu.energy >= 12)

{ z = 0; } - else z = -1; switch (z) {

@@ -356,7 +367,7 @@ AI.generateSimplePath = function(u)

{ movement.init(u); console.log("AI movement init"); - var i, j, k, b, w, x, y, z, q, last; + let i, j, k, b, w, x, y, z, q, last; z = "nsew"; last = ""; i = 0;

@@ -429,7 +440,7 @@ AI.generatePath = function(u)

{ movement.init(u); console.log("AI movement init"); - var i, j, k, b, w, x, y, z, q, last; + let i, j, k, b, w, x, y, z, q, last; z = "nsew"; last = ""; i = 0;

@@ -542,7 +553,7 @@ }

AI.countStructs = function(str) { - var i, l, n; + let i, l, n; n = 0; l = teams.cpu.structs.length for (i = 0; i < l; i++)

@@ -557,10 +568,10 @@ }

AI.findNewStructClose = function() { - var origin = {}; + let origin = {}; origin.x = teams.cpu.structs[0].x; origin.y = teams.cpu.structs[0].y; - var i, j, w; + let i, j, w; w = AI.rand(4); switch (w) {

@@ -617,10 +628,10 @@ }

AI.findNewStructFar = function() { - var origin = {}; + let origin = {}; origin.x = teams.cpu.structs[0].x; origin.y = teams.cpu.structs[0].y; - var i, j, w; + let i, j, w; w = AI.rand(4); switch(w) {

@@ -681,7 +692,7 @@ }

AI.manageEquipment = function() { - var i, j, k; + let i, j, k; for (i = 0; i < teams.cpu.units.length; i++) { j = map.data[teams.cpu.units[i].x][teams.cpu.units[i].y];

@@ -696,8 +707,8 @@ }

AI.buildStruct = function() { - var z = AI.rand(2); - var cell = AI.findNewStructClose(); + let z = AI.rand(2); + let cell = AI.findNewStructClose(); switch (z) { case 0:

@@ -760,8 +771,8 @@ }

AI.cycleThruFactories = function() { - var l = teams.cpu.structs.length; - var i, s; + let l = teams.cpu.structs.length; + let i, s; for (i = 0; i < l; i++) { s = teams.cpu.structs[i];

@@ -837,7 +848,7 @@ }

AI.targetReset = function(target) { - for (var i = 0; i < teams.cpu.units.length; i++) + for (let i = 0; i < teams.cpu.units.length; i++) { if (teams.cpu.units[i].target && teams.cpu.units[i].target.x == target.x &&
M Attack.jsAttack.js

@@ -26,11 +26,15 @@ }

attack.cpuInit = function() { - if (AI.focus >= teams.cpu.units.length || isEmptyObject(teams.cpu.units[AI.focus].equipment)) + if (AI.focus >= teams.cpu.units.length) { AI.focus = 0; endPhase(); } + if (teams.cpu.units[AI.focus].equipment === null) { + AI.focus++; + return; + } attack.src = teams.cpu.units[AI.focus]; attack.pattern = attack.src.equipment.pattern; if (attack.src.mode != "defend")

@@ -50,7 +54,7 @@ else

{ // search for closest enemy unit in range, target it // if nothing in range, do nothing - var i, min, working; + let i, min, working; min = 99999; working = 0; for (i = 0; i < teams.p1.units.length; i++)

@@ -84,9 +88,9 @@ }

attack.go = function() { - var pattern = rotatePattern(this.pattern, this.rotations[this.rotation]); - var origin = {}; - var i, j; + let pattern = rotatePattern(this.pattern, this.rotations[this.rotation]); + let origin = {}; + let i, j; origin.x = mapCursor.x - 2; origin.y = mapCursor.y - 2; this.animCounter++;

@@ -127,7 +131,7 @@ }

attack.listen = function() { - var backupCursor = + let backupCursor = { x: mapCursor.x, y: mapCursor.y

@@ -265,9 +269,9 @@ }

attack.drawPattern = function() { - var pattern = rotatePattern(this.pattern, this.rotations[this.rotation]); - var i, j; - var origin = {} + let pattern = rotatePattern(this.pattern, this.rotations[this.rotation]); + let i, j; + let origin = {} origin.x = mapCursor.x - 2, origin.y = mapCursor.y - 2; console.log(this.rotations);
M Engine.jsEngine.js

@@ -32,7 +32,7 @@ controller.z = false;

function isEmptyObject(obj) { - var name; + let name; for (name in obj) { if (obj.hasOwnProperty(name))

@@ -60,7 +60,7 @@ }

function endPhase() { - var i, totalE, tm; + let i, totalE, tm; totalE = 0; switch(gameState.phase) {
M Equipment.jsEquipment.js

@@ -4,7 +4,7 @@

function equipment() { this.pattern = new Array(5); - var i; + let i; for (i = 0; i < 5; i++) { this.pattern[i] = new Array(5);

@@ -18,7 +18,7 @@ }

function rotatePattern90deg(p) { - var rP, i, j; + let rP, i, j; rP = new Array(5); for (i = 0; i < 5; i++)

@@ -54,8 +54,8 @@ }

function equipOrUpgradeBeamSabreMKI() { - var unit = map.data[mapCursor.x][mapCursor.y].unit; - var m = false; + let unit = map.data[mapCursor.x][mapCursor.y].unit; + let m = false; if (unit.equipment === null || unit.equipment.name != "Beam Sabre") { unit.equipment = beamSabreMKI();

@@ -85,9 +85,9 @@ }

function beamSabreMKI() { - var self = new equipment(); + let self = new equipment(); self.range = 1; - self.name = "Beam Sabre mkI"; + self.name = "Beam Sabre"; self.pattern = [[ 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0 ],

@@ -101,8 +101,8 @@ }

function equipOrUpgradeRifleMKI() { - var unit = map.data[mapCursor.x][mapCursor.y].unit; - var m = false; + let unit = map.data[mapCursor.x][mapCursor.y].unit; + let m = false; if (unit.equipment === null || unit.equipment.name != "Rifle") { unit.equipment = rifleMKI();

@@ -131,9 +131,9 @@ }

function rifleMKI() { - var self = new equipment(); + let self = new equipment(); self.range = 4; - self.name = "Rifle mkI"; + self.name = "Rifle"; self.pattern = [[ 0, 0, 0, 0, 0], [ 0, 0, 0, 0, 0], [ 0, 0, 1, 0, 0],

@@ -146,8 +146,8 @@ }

function equipOrUpgradeBeamCannon() { - var unit = map.data[mapCursor.x][mapCursor.y].unit; - var m = false; + let unit = map.data[mapCursor.x][mapCursor.y].unit; + let m = false; if (unit.equipment === null || unit.equipment.name != "Beam Cannon") { unit.equipment = beamCannon();

@@ -176,7 +176,7 @@ }

function beamCannon() { - var self = new equipment(); + let self = new equipment(); self.range = 5; self.name = "Beam Cannon"; self.pattern = [[ 0, 0, 0, 0, 0],

@@ -191,8 +191,8 @@ }

function equipOrUpgradeHellBomb() { - var unit = map.data[mapCursor.x][mapCursor.y].unit; - var m = false; + let unit = map.data[mapCursor.x][mapCursor.y].unit; + let m = false; if (unit.equipment === null || unit.equipment.name != "Hell Bomb") { unit.equipment = hellBomb();

@@ -221,7 +221,7 @@ }

function hellBomb() { - var self = new equipment(); + let self = new equipment(); self.range = 7; self.name = "Hell Bomb"; self.pattern = [[ 0, 0, 0, 0, 0],
M Map.jsMap.js

@@ -91,7 +91,7 @@ screen.fillText("HP: " + currentCell.unit.hp + "/" + currentCell.unit.maxHP, 10, 70);

screen.fillText("pow: " + currentCell.unit.pow, 10, 80); screen.fillText("def: " + currentCell.unit.def, 10, 90); screen.fillText("agi: " + currentCell.unit.agi, 10, 100); - var equipString; + let equipString; if (currentCell.unit.equipment !== null) { equipString = currentCell.unit.equipment.name;

@@ -155,8 +155,8 @@ }

mapCursor.cycle = function() { - var i; - var arr; + let i; + let arr; switch (this.cycleMode) {

@@ -208,7 +208,7 @@

map.loadTiles = function() { map.gfx.mapTiles = {}; - var tiles = map.gfx.mapTiles; + let tiles = map.gfx.mapTiles; tiles.plain = new Image(); tiles.plain.src = 'assets/mapbg/plain.png'; tiles.forest = new Image();

@@ -299,7 +299,7 @@

map.init = function() { map.data = new Array(map.sz); - var i; + let i; for (i = 0; i < map.sz; i++) { map.data[i] = new Array(map.sz);

@@ -308,7 +308,7 @@ }

map.draw = function() { - var i, j; + let i, j; for (i = 0; i < 20; i++) { for (j = 0; j < 11; j++)

@@ -332,7 +332,7 @@ }

map.fillPlains = function() { - var i, j; + let i, j; for (i = 0; i < map.sz; i++) { for (j = 0; j < map.sz; j++)

@@ -345,8 +345,8 @@ }

map.genCities = function(number, sz, sigma) { - var cities = new Array(number); - var i, j, k; + let cities = new Array(number); + let i, j, k; for (i = 0; i < number; i++) { cities[i] = {};

@@ -355,8 +355,8 @@ cities[i].y = Math.floor(Math.random()*map.sz);

cities[i].radius = sz - Math.floor(Math.random()*sigma); cities[i].style = Math.floor(Math.random()*2); } - var z; - var delta = 0; + let z; + let delta = 0; for (z = 0; z < number; z++) { delta = cities[z].radius

@@ -386,7 +386,7 @@

map.genForests = function(density) { - var rX, rY, i; + let rX, rY, i; for (i = 0; i < density*map.sz*map.sz; i++) { rX = Math.floor(Math.random()*map.sz);

@@ -400,7 +400,7 @@ }

} map.genRuins = function(density) { - var rX, rY, i; + let rX, rY, i; for (i = 0; i < density*density*map.sz*map.sz; i++) { rX = Math.floor(Math.random()*map.sz);

@@ -415,8 +415,8 @@

map.genMountains = function(number, sz, sigma) { if (number < 10) { number = 10 }; - var mountains = new Array(number); - var i, j, k; + let mountains = new Array(number); + let i, j, k; for (i = 0; i < number; i++) { mountains[i] = {};

@@ -425,8 +425,8 @@ mountains[i].y = Math.floor(Math.random()*map.sz);

mountains[i].radius = sz - Math.floor(Math.random()*sigma); mountains[i].style = Math.floor(Math.random()*2); } - var z; - var delta = 0; + let z; + let delta = 0; for (z = 0; z < number; z++) { delta = mountains[z].radius

@@ -455,10 +455,9 @@ }

map.fillOcean = function(sz, gravity) { - var oceanSize = sz ; - var gravity = gravity; - var ogSz = oceanSize; - var i, j, k + let oceanSize = sz; + let ogSz = oceanSize; + let i, j, k switch (gravity) { case 10: break;

@@ -556,7 +555,7 @@ }

map.countCities = function() { - var i, j; + let i, j; for (i = 0; i < map.sz; i++) { for (j = 0; j < map.sz; j++)

@@ -575,6 +574,9 @@ map.fillPlains();

map.genForests(0.5); map.genMountains(Math.floor(Math.random()*map.sz/4 + 4), Math.floor(Math.random()*map.sz/6), map.sz/4); map.genCities(Math.floor(Math.random()*map.sz/7 + 3), 5, 4); - map.fillOcean(map.sz/8 + Math.floor(Math.random()*map.sz/8), Math.floor(Math.random()*9) + 1); + const o = Math.floor(Math.random()*5); + for (let i = 0; i < o; i++) { + map.fillOcean(map.sz/8 + Math.floor(Math.random()*map.sz/8), Math.floor(Math.random()*9) + 1); + } map.countCities(); }
M MiniMap.jsMiniMap.js

@@ -31,7 +31,7 @@ minimap.gfx.cpuu.src = "assets/mapbg/miniMap/cpuu.png"

minimap.draw = function() { - var i, j, sprite; + let i, j, sprite; screen.drawImage(minimap.gfx.bg, 0, 0); for (i = 0; i < map.sz; i++) {
M Movement.jsMovement.js

@@ -38,8 +38,8 @@ }

movement.listen = function() { - var z = null; - var chainEnd = this.chain[movement.chain.length - 1]; + let z = null; + let chainEnd = this.chain[movement.chain.length - 1]; movement.ticker = new Date(); if (controller.z) {

@@ -106,7 +106,7 @@ }

movement.showChain = function() { - var c, i, j; + let c, i, j; screen.font = "8px console"; screen.textBaseline = "top"; screen.fillStyle = "white";

@@ -167,7 +167,7 @@ }

function moveToTile(unit, tile) { - var oX, oY, tmp; + let oX, oY, tmp; tmp = null; if (dist(unit, tile) < 1)
M Struct.jsStruct.js

@@ -21,7 +21,7 @@ }

function mkFactory(player, x, y) { - var self = new structure(); + let self = new structure(); self.sprite = new Image(); self.sprite.src = "assets/struct/" + player + "/factory.png"; self.energy = 0;

@@ -38,7 +38,7 @@ }

function mkArmory(player, x, y) { - var self = new structure(); + let self = new structure(); self.sprite = new Image(); self.sprite.src = "assets/struct/" + player + "/armory.png"; self.energy = 0;

@@ -56,7 +56,7 @@

function mkTidal(player, x, y) { - var self = new structure(); + let self = new structure(); self.sprite = new Image(); self.sprite.src = "assets/struct/" + player + "/tidal.png"; self.energy = 30;

@@ -74,7 +74,7 @@ }

function mkSolar(player, x, y) { - var self = new structure(); + let self = new structure(); self.sprite = new Image(); self.sprite.src = "assets/struct/" + player + "/solar.png"; self.energy = 10;

@@ -168,7 +168,7 @@ }

function mkMine(player, x, y) { - var self = new structure(); + let self = new structure(); self.sprite = new Image(); self.sprite.src = "assets/struct/" + player + "/mine.png"; self.energy = 20;

@@ -186,7 +186,7 @@ }

function mkHQ(player) { - var self = new structure(); + let self = new structure(); self.sprite = new Image(); self.sprite.src = "assets/struct/" + player + "/hq.png"; self.flag = 1;

@@ -234,7 +234,7 @@ }

function destroyStruct(x,y) { - var z, w; + let z, w; if (map.data[x][y].structure.name.startsWith("p1")) { z = teams.p1;
M Team.jsTeam.js

@@ -10,7 +10,7 @@ this.data = new Array(2);

this.data[0] = this.p1; this.data[1] = this.cpu; - var i; + let i; for (i = 0; i < 2; i++) { this.data[i].units = new Array();

@@ -43,7 +43,7 @@ }

function getIndex(player, type, obj) { - var x, y, z, i; + let x, y, z, i; switch (player) { case "p1":
M Unit.jsUnit.js

@@ -28,7 +28,7 @@ }

function mkAce(player, x, y) { - var self = new Unit(); + let self = new Unit(); self.sprite = new Image(); self.sprite.src = "assets/unit/" + player + "/ace.png"; self.pow = 7;

@@ -62,7 +62,7 @@ }

function mkRanger(player, x, y) { - var self = new Unit(); + let self = new Unit(); self.sprite = new Image(); self.sprite.src = "assets/unit/" + player + "/ranger.png"; self.x = x;

@@ -90,7 +90,7 @@ }

function mkKnight(player, x, y) { - var self = new Unit(); + let self = new Unit(); self.sprite = new Image(); self.sprite.src = "assets/unit/" + player + "/knight.png"; self.hp = 20;

@@ -124,7 +124,7 @@ }

function mkBattleAngel(player, x, y) { - var self = new Unit(); + let self = new Unit(); self.sprite = new Image(); self.sprite.src = "assets/unit/" + player + "/battleAngel.png"; self.hp = 30;

@@ -158,7 +158,7 @@ }

function mkBlitzWalker(player, x, y) { - var self = new Unit(); + let self = new Unit(); self.sprite = new Image(); self.sprite.src = "assets/unit/" + player + "/blitzWalker.png"; self.hp = 50;

@@ -206,7 +206,7 @@ }

function destroyUnit(x,y) { - var z, w; + let z, w; if (map.data[x][y].unit.name.startsWith("p1")) { z = teams.p1;