"use strict"; const GameOverView = (function(){ const GameOverView = function(xgravity){ const self = this; let view_element = null; this.close = () => { if(view_element && view_element.parentNode){ view_element.parentNode.removeChild(view_element); view_element = null; } }; this.go = (stats = {}) => { self.close(); const score = stats.score || 0; const score_str = score.toString().padStart(8, "0"); const reason = stats.reason || "mothership_destroyed"; const diff_id = stats.difficulty || "average"; const spawned = stats.total_spawned || 0; const destroyed = stats.total_destroyed || 0; const shield_kills = stats.shield_kills || 0; const clear_rate = spawned > 0 ? ((destroyed / spawned) * 100).toFixed(1) : "0.0"; const reason_text = reason === "all_drones_lost" ? "DEFEAT: ALL DRONES LOST IN ACTION" : "CRITICAL: MOTHERSHIP HULL BREACHED"; const action_buttons = [ [ "button", { class : "xg-btn xg-btn-resume", "data-i18n" : "btn_retry", onclick : () => { self.close(); if(xgravity.views.game){ xgravity.views.game.go(); } } } ], [ "button", { class : "xg-btn", "data-i18n" : "btn_main_menu", onclick : () => { self.close(); if(xgravity.views.game){ xgravity.views.game.stop(); } if(xgravity.views.main_menu){ xgravity.views.main_menu.go(); } } } ] ]; const nodes = xgravity.html(xgravity.item_self, [ "div", { class : "xg-view xg-game-over-view" }, [ ["h1", { class : "xg-title", "data-i18n" : "game_over_title" }], ["div", { class : "xg-game-over-reason" }, [ ["span", { class : "xg-badge-danger" }, reason_text] ]], ["div", { class : "xg-menu-list xg-stats-card" }, [ ["div", { class : "xg-stat-row xg-stat-score" }, [ ["span", { class : "xg-stat-label", "data-i18n" : "stat_final_score" }], ["span", { class : "xg-stat-value xg-val-score" }, `[ ${score_str} ]`] ]], ["div", { class : "xg-stat-row" }, [ ["span", { class : "xg-stat-label", "data-i18n" : "stat_difficulty" }], ["span", { class : "xg-stat-value" }, diff_id.toUpperCase()] ]], ["div", { class : "xg-stat-row" }, [ ["span", { class : "xg-stat-label", "data-i18n" : "stat_enemies_spawned" }], ["span", { class : "xg-stat-value" }, `${spawned}`] ]], ["div", { class : "xg-stat-row" }, [ ["span", { class : "xg-stat-label", "data-i18n" : "stat_enemies_destroyed" }], ["span", { class : "xg-stat-value" }, `${destroyed}`] ]], ["div", { class : "xg-stat-row" }, [ ["span", { class : "xg-stat-label", "data-i18n" : "stat_shield_kills" }], ["span", { class : "xg-stat-value" }, `${shield_kills}`] ]], ["div", { class : "xg-stat-row" }, [ ["span", { class : "xg-stat-label", "data-i18n" : "stat_clear_rate" }], ["span", { class : "xg-stat-value" }, `${clear_rate}%`] ]] ]], ["div", { class : "xg-menu-list" }, action_buttons] ] ]); view_element = nodes[0]; xgravity.i18n.update(); }; }; return GameOverView; })();