decompiled panorama scripts, lets try it out
This commit is contained in:
157
panorama/scripts/custom_game/dps_panel.js
Normal file
157
panorama/scripts/custom_game/dps_panel.js
Normal file
@@ -0,0 +1,157 @@
|
||||
"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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user