diff --git a/html/map.html b/html/map.html
index 7c51d54..b448306 100644
--- a/html/map.html
+++ b/html/map.html
@@ -12,7 +12,7 @@
diff --git a/http.js b/http.js
index faf2336..d621276 100644
--- a/http.js
+++ b/http.js
@@ -6,7 +6,7 @@ const remotenades = require("./remotenades.js")
const host = "localhost"
let oldPhase = false
-
+let infernosOnMap = [] //initial molotov status
let server = http.createServer(function(req, res) {
if (req.method != "POST") {
res.writeHead(405)
@@ -111,11 +111,11 @@ let server = http.createServer(function(req, res) {
}
})
}
-
+
if (game.grenades) {
let smokes = []
let nades = []
-
+ let infernos = []
for (let nadeID in game.grenades) {
let nade = game.grenades[nadeID]
@@ -131,13 +131,45 @@ let server = http.createServer(function(req, res) {
}
})
}
+ if (nade.type == "inferno") {
+ if (!!nade.flames) {
+ let flamesPos = []
+ let flamesNum = Object.values(nade.flames).length
+ for (var i = 0; i < flamesNum; i++) {
+ flamesPos.push({
+ x: parseFloat(Object.values(nade.flames)[i].split(", ")[0]),
+ y: parseFloat(Object.values(nade.flames)[i].split(", ")[1]),
+ z: parseFloat(Object.values(nade.flames)[i].split(", ")[2]),
+ })
+ }
+ infernos.push({
+ id: nadeID,
+ flamesNum: flamesNum,
+ flamesPosition: flamesPos
+ })
+ if (infernosOnMap.indexOf(nadeID) == -1 ) {infernosOnMap.push(nadeID)}
+ }
+ else{
+
+ }
+ }
+ }
+ for (let infernoOnMap of infernosOnMap) {
+ if (!game.grenades[infernoOnMap]) {
+ process.send({
+ type: "infernoRemove",
+ data: infernoOnMap
+ })
+ }// check if molotov exist in game
}
-
process.send({
type: "smokes",
data: smokes
})
-
+ process.send({
+ type: "infernos",
+ data: infernos
+ })
if (config.nadeCollection) {
remotenades.event(game.grenades)
}
@@ -148,7 +180,9 @@ let server = http.createServer(function(req, res) {
type: "round",
data: game.round.phase
})
-
+ if (oldPhase == "over" && game.round.phase == "freezetime") {
+ infernosOnMap = [] //clear molotov status every round
+ }
if (oldPhase != game.round.phase && config.nadeCollection) {
if (oldPhase == "over" && game.round.phase == "freezetime") {
remotenades.send()
diff --git a/maps/de_vertigo/meta.json5 b/maps/de_vertigo/meta.json5
index 5ae592c..12d0c43 100644
--- a/maps/de_vertigo/meta.json5
+++ b/maps/de_vertigo/meta.json5
@@ -26,7 +26,7 @@
// The radar offset in percentages to apply when player is in the split
"offset": {
"x": 0,
- "y": -39
+ "y": -43
}
}
],
diff --git a/maps/de_vertigo/radar.png b/maps/de_vertigo/radar.png
index 393bd67..4b28ad4 100644
Binary files a/maps/de_vertigo/radar.png and b/maps/de_vertigo/radar.png differ
diff --git a/renderers/smokes.js b/renderers/smokes.js
index 23c6aa0..c858813 100644
--- a/renderers/smokes.js
+++ b/renderers/smokes.js
@@ -3,7 +3,6 @@
// Shows smokes on map an calculates duration.
let global = require("./_global")
-
// The live position of all smokes
global.renderer.on("smokes", (event, smokes) => {
// Called to show the fade in animation with a delay
@@ -64,7 +63,45 @@ global.renderer.on("smokes", (event, smokes) => {
}
})
+//molotov on radar
+global.renderer.on("infernos", (event, infernos) => {
+ // Go through each smoke
+ for (let inferno of infernos) {
+ // Get the molotov element
+ let infernoElement = document.getElementById("inferno" + inferno.id)
+ let flameElementsStr = ""
+ let flameElement = []
+
+ // If the element does not exist yet, add it
+ if (!infernoElement) {
+ // Create a new element
+ infernoElement = document.createElement("div")
+ infernoElement.id = "inferno" + inferno.id
+ infernoElement.className = "inferno"
+ infernoElement.setAttribute('style', 'opacity:1')
+ document.getElementById("infernos").appendChild(infernoElement)
+
+ }
+ infernoElement = document.getElementById("inferno" + inferno.id)
+ for (var i = 0; i < inferno.flamesNum; i++) {
+ flameElement[i] = document.createElement("div")
+ flameElement[i].style.height = flameElement[i].style.width = 100 / global.mapData.resolution / 1024 * 100 + "%"
+ let percOffset = parseFloat(flameElement[i].style.height) / 2
+ flameElement[i].style.left = global.positionToPerc(inferno.flamesPosition[i], "x") + "%"
+ flameElement[i].style.bottom = global.positionToPerc(inferno.flamesPosition[i], "y") - percOffset + "%"
+ flameElementsStr = flameElementsStr + flameElement[i].outerHTML
+ }
+ infernoElement.innerHTML = flameElementsStr
+
+ }
+
+})
+
+global.renderer.on("infernoRemove", (event,infernoRemove) => {
+ document.getElementById("inferno" + infernoRemove).setAttribute('style', 'opacity:0')
+})
// Clear all smokes on round reset
global.renderer.on("roundend", (event) => {
document.getElementById("smokes").innerHTML = ""
+ document.getElementById("infernos").innerHTML = ""
})
diff --git a/style/map.css b/style/map.css
index 13d4fd7..cc92059 100644
--- a/style/map.css
+++ b/style/map.css
@@ -44,6 +44,36 @@ body {
transition: opacity 1.8s;
}
+#infernos{
+ position: absolute;
+ height: 100%;
+ width: 100%;
+ bottom: 0;
+ left: 0;
+ z-index: 2;
+}
+
+.inferno{
+ position: absolute;
+ height: 100%;
+ width: 100%;
+ bottom: 0;
+ left: 0;
+ z-index: 2;
+ transition: opacity .3s;
+}
+
+.inferno > div{
+ position: absolute;
+ border-radius: 100%;
+ opacity: .75;
+ background: #ff4848;
+ box-sizing: border-box;
+ border: #ce3f00 solid 1.5px;
+ transform: translate(-50%, -50%);
+ transition: opacity .3s;
+}
+
#siteA, #siteB {
position: absolute;
background: #f00;