Skip to content

Commit

Permalink
Merge pull request Thaewyn#21 from DevelopThisOfficial/issue_14-enemy…
Browse files Browse the repository at this point in the history
…_data_structure

Issue 14 enemy data structure
  • Loading branch information
Thaewyn authored Jul 12, 2022
2 parents 57cc88f + 4a643b5 commit 2b42078
Show file tree
Hide file tree
Showing 6 changed files with 135 additions and 41 deletions.
54 changes: 24 additions & 30 deletions controllers/db_controller.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
const db = require('../db');
const bcrypt = require('bcrypt');
const encounter_ref = require("../db/encounter_ref.json");
const enemy_ref = require("../db/enemy_ref.json");

//console.log("for the handling of all database things.")

Expand Down Expand Up @@ -58,37 +59,30 @@ class DBController {
})
}

getEncounterData(runid) {
console.log("DBController.getEncounterData called")
return new Promise((resolve, reject) => {
let querystring = 'SELECT * FROM runencounter WHERE runid_fk = ?';
db.query(querystring, [runid], (err, result) => {
if (err) {
reject(err);
}
/**
*
* @param {string} which_act expects "act_one" or "act_two", etc
* @param {int} encounter_id the numerical id of the encounter in that act
*
* @returns an array containing instances of each enemy in the encounter
*/
populateEncounterData(which_act, encounter_id) {
let enemies = [];

resolve({
msg: "got encounter data.",
ice: [
{
id: 7,
name: "Firewall",
hp: 10
},
{
id: 15,
name: "Worm",
hp: 7
},
{
id: 3,
name: "Sentry",
hp: 15
}
]
})
})
})
let encounter = encounter_ref[which_act][encounter_id]
for(let i=0; i<encounter.enemy_ids.length; i++) {
let enemy_id = encounter.enemy_ids[i];
let enemy_template = enemy_ref[enemy_id]
let new_enemy = {
...enemy_template,
current_health: enemy_template.max_health,
current_defence: enemy_template.defence,
status_list: []
}
enemies.push(new_enemy);
}

return enemies
}

findUserByEmail(email) {
Expand Down
22 changes: 22 additions & 0 deletions db/enemy_attack_ref.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"0": {
"id": 0,
"attack_name": "something",
"attack_desc": "basic attack",
"animation_id": 0,
"effect_ids": [],
"damage_type": 0,
"damage_name": "scramble",
"strength": 5
},
"1": {
"id": 1,
"attack_name": "fireball",
"attack_desc": "shoots a fireball",
"animation_id": 1,
"effect_ids": [2],
"damage_type": 2,
"damage_name": "intercept",
"strength": 5
}
}
72 changes: 72 additions & 0 deletions db/enemy_ref.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
{
"0": {
"id": 0,
"enemy_name": "Interference Node",
"enemy_desc": "Interference node attempts to scramble your connection to the server.",
"defence": 0,
"damage_type": 0,
"damage_name": "scramble",
"max_health": 10,
"attack_ids": [1,1,5]
},
"1": {
"id": 1,
"enemy_name": "Sniffer",
"enemy_desc": "Sniffer attempts to identify your precise location.",
"defence": 2,
"damage_type": 1,
"damage_name": "decode",
"max_health": 8,
"attack_ids": [3,2,4]
},
"2": {
"id": 2,
"enemy_name": "Worm",
"enemy_desc": "W0rm tries to burrow into your system",
"defence": 2,
"damage_type": 1,
"damage_name": "decode",
"max_health": 8,
"attack_ids": [3,2,4]
},
"3": {
"id": 3,
"enemy_name": "Firewall",
"enemy_desc": "Buffs other enemy defense.",
"defence": 2,
"damage_type": 1,
"damage_name": "decode",
"max_health": 8,
"attack_ids": [3,2,4]
},
"4": {
"id": 4,
"enemy_name": "Sentry",
"enemy_desc": "Alerts the system when intruders are detected",
"defence": 2,
"damage_type": 1,
"damage_name": "decode",
"max_health": 8,
"attack_ids": [3,2,4]
},
"5": {
"id": 5,
"enemy_name": "Honeypot",
"enemy_desc": "Aborbs attacks targeted at other ICE.",
"defence": 2,
"damage_type": 1,
"damage_name": "decode",
"max_health": 8,
"attack_ids": [3,2,4]
},
"6": {
"id": 6,
"enemy_name": "Trapdoor",
"enemy_desc": "Trapdoor baits an attack and counterattacks.",
"defence": 2,
"damage_type": 1,
"damage_name": "decode",
"max_health": 8,
"attack_ids": [3,2,4]
}
}
6 changes: 3 additions & 3 deletions public/assets/scripts/encounter.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ fetch("/api/encounter/data", {
.then(data => {
console.log(data);
let list = document.getElementById("enemy_list")
for(let i=0; i< data.ice.length; i++) {
for(let i=0; i< data.length; i++) {
let enemy = document.createElement('li');
enemy.textContent = data.ice[i].name;
enemy.dataset.hp = data.ice[i].hp;
enemy.textContent = data[i].enemy_name;
enemy.dataset.hp = data[i].current_health;
list.appendChild(enemy);
}
});
Expand Down
6 changes: 5 additions & 1 deletion public/assets/scripts/serverselect.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ picker.addEventListener('click',(e) => {
}).then(res => res.json())
.then(data => {
console.log(data);
window.location = "/run/encounter";
if(data.success) {
window.location = "/run/encounter";
} else {
console.log(data.msg);
}
});
})
16 changes: 9 additions & 7 deletions routes/api_routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,14 @@ module.exports = function(app) {
*/
app.post("/api/run/server/:id", function(req,res) {
//player selects a server to approach. Handle as appropriate.
res.json({success:false, msg: "server selected: "+req.params.id})
//TODO: is the user allowed to select a server at this stage?
req.session.enemies = dbc.populateEncounterData("act_one", req.params.id); //FIXME: get actual act name later.

if(req.session.enemies) {
res.json({success:true, msg: "server selected: "+req.params.id});
} else {
res.json({success:false, msg: "No enemies..."});
}
});

/**
Expand All @@ -121,12 +128,7 @@ module.exports = function(app) {
* Get data for a single encounter, core data function for the Encounters page.
*/
app.get("/api/encounter/data", (req,res) => {
dbc.getEncounterData(req.session.runid).then(result => {
res.json(result);
}).catch(err => {
console.log(err);
res.status(500);
})
res.json(req.session.enemies);
});

/**
Expand Down

0 comments on commit 2b42078

Please sign in to comment.