158 lines
4.5 KiB
JavaScript
158 lines
4.5 KiB
JavaScript
"use strict";
|
|
|
|
// 获取steamid
|
|
var m_SteamID = null;
|
|
function GetSteamID() {
|
|
if (!m_SteamID) {
|
|
m_SteamID = Game.GetLocalPlayerInfo().player_steamid.toString();
|
|
}
|
|
return m_SteamID;
|
|
}
|
|
|
|
var TowerList = CustomNetTables.GetTableValue("CustomGameInfo", "thtd_tower_list");
|
|
|
|
GameUI.SetGamePoint = function (point) {
|
|
var panel = $("#KillCount");
|
|
if (panel) panel.SetDialogVariableInt("point", point);
|
|
};
|
|
|
|
function FindItemName( unitname ) {
|
|
for(var itemname in TowerList) {
|
|
if (TowerList[itemname]["cardname"] === unitname) {
|
|
return itemname;
|
|
}
|
|
}
|
|
return "";
|
|
}
|
|
|
|
function SetTowerTooltip( panel ) {
|
|
panel.SetPanelEvent("onmouseover", function () {
|
|
var text = $.Localize(panel.GetAttributeString("UnitName", ""));
|
|
$.DispatchEvent("DOTAShowTextTooltip", panel, text)
|
|
});
|
|
panel.SetPanelEvent("onmouseout", function () {
|
|
$.DispatchEvent("DOTAHideTextTooltip")
|
|
});
|
|
panel.SetPanelEvent("onactivate", function () {
|
|
var ent = panel.GetAttributeInt("Ent", 0);
|
|
GameEvents.SendCustomGameEventToServer("custom_game_show_dps_card", {"ent": ent});
|
|
});
|
|
}
|
|
|
|
function UpdateTowerList( list , dps_max ) {
|
|
var len = list.length;
|
|
var TowerList = $("#TowerList");
|
|
var index = 1;
|
|
var dps_highest = 0;
|
|
for (var i = 0; i < len; i++) {
|
|
var data = list[i];
|
|
var panel = TowerList.GetChild(index++);
|
|
if (!panel) {
|
|
panel = $.CreatePanel("Panel", TowerList, "");
|
|
panel.BLoadLayoutSnippet("Tower");
|
|
SetTowerTooltip(panel);
|
|
}
|
|
if (index==2) {
|
|
dps_highest = data.damage;
|
|
}
|
|
|
|
panel.FindChild("Item").itemname = data.itemname;
|
|
var dpstext = "";
|
|
var dpsfixed = GameUI.DpsFix(data.damage, GameUI.Wave);
|
|
if (dpsfixed < 100) {
|
|
dpstext = dpsfixed * 100;
|
|
} else {
|
|
var wan = Math.floor(dpsfixed / 100 + 0.5);
|
|
if (wan < 10000) {
|
|
dpstext = wan + "万";
|
|
} else {
|
|
dpstext = Math.floor(wan/10000) + "亿" + wan%10000 + "万";
|
|
}
|
|
}
|
|
panel.FindChildTraverse("DPS").text = dpstext;
|
|
var dps_bar_pct = ( (data.damage/dps_highest)*100 || 0);
|
|
panel.FindChildTraverse("DPS_bar").style.width = dps_bar_pct + "%";
|
|
var dps_pct = ( (data.damage/dps_max)*100 || 0);
|
|
panel.FindChildTraverse("DPS_pct").text = dps_pct.toFixed(1) + "%";
|
|
panel.SetAttributeString("UnitName", data.unitname);
|
|
panel.SetAttributeInt("Ent", data.ent);
|
|
panel.visible = true;
|
|
}
|
|
var max = TowerList.GetChildCount();
|
|
for (var i = index; i < max; i++) {
|
|
TowerList.GetChild(i).visible = false;
|
|
}
|
|
}
|
|
|
|
function Update(damagelist) {
|
|
if (!$.GetContextPanel().BHasClass("ShowTime")) return;
|
|
if (!damagelist) return;
|
|
|
|
var list = [];
|
|
var dps_max = 0;
|
|
|
|
var keys = Object.keys(damagelist); //for (var i in data) 取不到值
|
|
for (var i = 0; i < keys.length; i++) {
|
|
var damage = damagelist[keys[i]];
|
|
var ent = parseInt(keys[i]);
|
|
var unitname = Entities.GetUnitName(ent);
|
|
if (unitname == null || unitname == "") continue;
|
|
var itemname = FindItemName(unitname);
|
|
list.push({'itemname':itemname, 'damage':Math.floor(damage), 'unitname': unitname, 'ent': ent});
|
|
dps_max = dps_max + Math.floor(damage);
|
|
}
|
|
|
|
list.sort(function (a, b) {
|
|
if (a.damage < b.damage) return 1;
|
|
if (a.damage == b.damage) return 0;
|
|
if (a.damage > b.damage) return -1;
|
|
})
|
|
|
|
UpdateTowerList( list, dps_max);
|
|
}
|
|
|
|
// {"creature_kill_count":0,"creep_count":0,"food_count":0}
|
|
function UpdateInfo(table) {
|
|
if (!table) return;
|
|
|
|
var FoodCount = $("#FoodCount");
|
|
FoodCount.SetDialogVariableInt("count", table["food_count"]);
|
|
FoodCount.SetDialogVariableInt("max_count", GameUI.GameData.max_food);
|
|
$("#KillCount").SetDialogVariableInt("count", table["creature_kill_count"]);
|
|
}
|
|
|
|
;(function(){
|
|
$("#FoodCount").SetDialogVariableInt("count", 0);
|
|
$("#FoodCount").SetDialogVariableInt("max_count", 12);
|
|
$("#KillCount").SetDialogVariableInt("count", 0);
|
|
$("#KillCount").SetDialogVariableInt("point", 0);
|
|
|
|
if (Players.IsSpectator(Players.GetLocalPlayer())) {
|
|
$("#TowerList").visible = false;
|
|
return;
|
|
}
|
|
|
|
GameUI.SetGamePoint(GameUI.PlayerData.point);
|
|
|
|
CustomNetTables.SubscribeNetTableListener("TowerListInfo", OnNetTableTowerListInfo);
|
|
CustomNetTables.SubscribeNetTableListener("CustomGameInfo", OnNetTableCustomGameInfo);
|
|
})();
|
|
|
|
function OnNetTableTowerListInfo(table_name, key, data) {
|
|
// $.Msg( "---------- Table: ", table_name, ", changed: '", key, "' = ", data );
|
|
|
|
if (key === "damagelist" + GetSteamID()) {
|
|
Update(data);
|
|
return;
|
|
}
|
|
}
|
|
|
|
function OnNetTableCustomGameInfo(table_name, key, data) {
|
|
// $.Msg( "---------- Table: ", table_name, ", changed: '", key, "' = ", data );
|
|
|
|
if (key === "game_info" + GetSteamID()) {
|
|
UpdateInfo(data);
|
|
return;
|
|
}
|
|
}
|