Files
2HUCardTDGame/content/panorama/scripts/custom_game/info.js
2021-11-10 08:48:00 -05:00

1361 lines
46 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"use strict";
var PausedInfo = null; // 暂停面板
var KickAcceptStartTime = 0; //投票踢人确定界面状态
var hEventStartCard = null; //选择初始卡完成事件监听
var AiChooseData = null;
var IsRankCreated = false;
var IsTeamRankCreated = false;
var IsShowingMsg = false;
var RefreshRunning = false;
var TowerList = CustomNetTables.GetTableValue("CustomGameInfo", "thtd_tower_list");
GameUI.GameData = CustomNetTables.GetTableValue("CustomGameInfo", "GameData");
GameUI.PlayerData = CustomNetTables.GetTableValue("CustomGameInfo", "PlayerData_" + GetSteamID());
GameUI.Wave = 0;
var SpecialTowerList = {
"item_3011": {
"quality": 4,
"cardname": "item_3011"
},
"item_3012": {
"quality": 4,
"cardname": "item_3012"
},
"item_3013": {
"quality": 4,
"cardname": "item_3013"
},
"item_3014": {
"quality": 4,
"cardname": "item_3014"
},
"item_3015": {
"quality": 4,
"cardname": "item_3015"
},
"item_3016": {
"quality": 4,
"cardname": "item_3016"
},
"item_3017": {
"quality": 4,
"cardname": "item_3017"
},
"item_3018": {
"quality": 4,
"cardname": "item_3018"
},
"item_3019": {
"quality": 4,
"cardname": "item_3019"
},
"item_3020": {
"quality": 4,
"cardname": "item_3020"
},
"item_3021": {
"quality": 4,
"cardname": "item_3021"
},
"item_3022": {
"quality": 4,
"cardname": "item_3022"
},
"item_3023": {
"quality": 4,
"cardname": "item_3023"
},
"item_3024": {
"quality": 4,
"cardname": "item_3024"
},
"item_3025": {
"quality": 4,
"cardname": "item_3025"
},
"item_3026": {
"quality": 4,
"cardname": "item_3026"
},
"item_3027": {
"quality": 4,
"cardname": "item_3027"
},
"item_3028": {
"quality": 4,
"cardname": "item_3028"
},
"item_3029": {
"quality": 4,
"cardname": "item_3029"
},
"item_3030": {
"quality": 4,
"cardname": "item_3030"
},
"item_3031": {
"quality": 4,
"cardname": "item_3031"
},
"item_3032": {
"quality": 4,
"cardname": "item_3032"
},
"item_3033": {
"quality": 4,
"cardname": "item_3033"
},
"item_3034": {
"quality": 4,
"cardname": "item_3034"
},
"item_3035": {
"quality": 4,
"cardname": "item_3035"
},
"item_3050": {
"quality": 4,
"cardname": "item_3050"
},
"item_3150": {
"quality": 4,
"cardname": "item_3150"
},
"item_3151": {
"quality": 4,
"cardname": "item_3151"
},
"item_3152": {
"quality": 4,
"cardname": "item_3152"
},
"item_3149": {
"quality": 4,
"cardname": "item_3149"
}
}
// 获取steamid
var m_SteamID = null;
function GetSteamID() {
if (!m_SteamID) {
m_SteamID = Game.GetLocalPlayerInfo().player_steamid.toString();
// Game.GetLocalPlayerInfo()
// $.Msg(Game.GetPlayerInfo(0));
// {"player_id":0,"player_name":"倚楼听风137120760","player_connection_state":2,"player_steamid":"76561198097386488",
// "player_kills":0,"player_deaths":0,"player_assists":0,"player_selected_hero_id":25,"player_selected_hero":"npc_dota_hero_lina",
// "player_selected_hero_entity_index":-1,"possible_hero_selection":"","player_level":0,"player_respawn_seconds":0,
// "player_gold":4500,"player_team_id":2,"player_is_local":true,"player_has_host_privileges":true}
}
return m_SteamID;
}
function FindDotaHudElement(id){
var hudRoot;
for(var panel=$.GetContextPanel();panel!=null;panel=panel.GetParent()){
hudRoot = panel;
}
var comp = hudRoot.FindChildTraverse(id);
return comp;
}
function ShowMessage(text, duration, isError, marginTop) {
var label = $.CreatePanel("Label", $.GetContextPanel(), "");
label.style["background-color"] = isError ? "#A22C00" : "#000E";
label.style["color"] = isError ? "#fff" : "#F37702";
label.style["padding"] = "20px";
label.style["font-size"] = "30px";
if (marginTop && marginTop !== 0) label.style["margin-top"] = marginTop + "px";
label.style["horizontal-align"] = "center";
label.style["vertical-align"] = "center";
label.html = true;
label.text = text;
label.DeleteAsync(duration && duration > 0 ? duration : 3);
}
//加载网页
var videoPage = GameUI.CreateHtml(function(){/*
<root>
<styles>
<include src="s2r://panorama/styles/dotastyles.vcss_c" />
<include src="s2r://panorama/styles/custom_game/info.vcss_c" />
</styles>
<script>
var PausedInfo = null;
function Close() {
$.GetContextPanel().AddClass('Hide');
$.GetContextPanel().RemoveAndDeleteChildren();
//PausedInfo.RemoveClass("Hide");
}
function SetPausedInfo(info) {
PausedInfo = info;
}
$.GetContextPanel().SetPausedInfo = SetPausedInfo;
</script>
<Panel hittest="false" class="HTMLPanel" >
<DOTAHTMLPanel id="Video1" class="Video" url="${url}" ></DOTAHTMLPanel>
<Button id="CloseButtonBig" onactivate="Close()" />
</Panel>
</root>
*/});
// 永久暂停
function PauseGame() {
// if (Game.IsGamePaused()) {
// return
// }
if (Players.IsSpectator(Players.GetLocalPlayer())) {
return;
}
if (Entities.IsStunned(Players.GetPlayerHeroEntityIndex(Players.GetLocalPlayer()))) {
return;
}
GameEvents.SendCustomGameEventToServer("custom_game_pause_game", {});
}
/*===============更新波数漏怪信息====================*/
function UpdateCreepInfo(table) {
// {"creature_kill_count":0,"creep_count":0,"creep_count_max":0,"food_count":0}
if (!table) return;
var CreepCount = $("#CreepCount");
CreepCount.SetDialogVariableInt("count", table["creep_count"]);
CreepCount.SetDialogVariableInt("max_count", table["creep_count_max"]);
var CreepCountPercentage = ((table["creep_count"]/table["creep_count_max"])*100 || 0);
$("#CreepCountProcessBarPCT").style.width = CreepCountPercentage + "%";
}
function UpdateAttackingInfo(table) {
if (!table) return;
var RemainingTime = Math.floor(table["RemainingTime"] || 0);
if (RemainingTime <= 0) RemainingTime = 0;
GameUI.Wave = table["Wave"];
$("#WaveText").SetDialogVariableInt("wave", table["Wave"] > 50 ? (table["Wave"] - 50) : (table["Wave"] > 0 ? table["Wave"] : 0));
$("#AttackingProcessTime").text = RemainingTime;
$("#AttackingProcessTime").SetHasClass("soon", RemainingTime <= 5);
}
// 少女之抵抗伤害计于统计
GameUI.DpsFix = function (dps, wave) {
if (wave < 280 + 50) return dps;
var unlimitedResist = 0.0;
if (wave <= 50 + 3220) {
unlimitedResist = Math.floor((wave - 50 - 250)/30);
} else {
unlimitedResist = 99 + Math.min(0.999, 0.001 * Math.floor((wave - 50 - 3220) / 2));
}
return Math.floor(dps/(1 - unlimitedResist/100));
}
/*===============选择初始卡====================*/
function SelectStartCard( item_name ) {
GameEvents.SendCustomGameEventToServer("custom_game_select_start_card", {'ItemName':item_name});
}
function OnSelectStartCardFinish(data) {
$("#SelectStartCard").SetHasClass("Hidden", true);
$("#SelectStartCard").DeleteAsync(0.6);
GameEvents.Unsubscribe(hEventStartCard);
SelectStartBonusCard();
}
//开局SSR奖励卡选择共用。
function SelectStartBonusCard() {
if (Entities.GetLevel(Players.GetPlayerHeroEntityIndex(Players.GetLocalPlayer())) >= 9) return;
var list = {};
var keys = Object.keys(TowerList);
for (var i = 0; i < keys.length; i++) {
var itemname = keys[i];
var quality = TowerList[itemname].quality;
var unitname = TowerList[itemname].cardname;
if (quality === 4 && unitname.substr(0, 4) !== "item" && unitname !== "BonusEgg") list[itemname] = itemname;
}
SelectCardShowCards(list, true, false);
}
/*===============选择卡牌(御币)====================*/
function OnSelectCardShow(data) {
if (typeof data.cards === "object") {
SelectCardShowCards(data.cards, false, false);
}
}
function OnSelectBonusCardShow(data) {
if (typeof data.cards === "object") {
SelectCardShowCards(data.cards, false, true);
}
}
function SelectCardClose() {
$("#SelectCardPanel").SetHasClass("Hide", true);
}
function SelectCardShowCards(cards, isStartBonus, isSpecialBonus) {
var CardPoolContent = $("#SelectCardPoolContent");
var index = 0;
var itemNameList = Object.keys(cards);
itemNameList.sort();
if (isStartBonus && (GameUI.GameData.is_open_day === 1 || GameUI.LuckCardName === "all")) {
itemNameList = ["item_3150","item_3151","item_3152"].concat(itemNameList);
cards["item_3150"] = "item_3150";
cards["item_3151"] = "item_3151";
cards["item_3152"] = "item_3152";
if (GameUI.LuckCardName === "all") {
itemNameList = ["item_3149"].concat(itemNameList);
cards["item_3149"] = "item_3149";
}
}
for (var i = 0; i < itemNameList.length; i++) {
// for(var i in cards) {
var itemname = cards[itemNameList[i]];
var data = TowerList[itemname];
if (!data) data = SpecialTowerList[itemname];
if (!data) {
$.Msg("---- card data not exist : ", itemname);
continue;
}
var panel = CardPoolContent.GetChild(index++);
if (!panel) {
panel = $.CreatePanel("Panel", CardPoolContent, "");
panel.BLoadLayoutSnippet("CardPoolCard");
}
SetCardEvent(panel, true, isStartBonus, isSpecialBonus);
panel.SetHasClass("SSR", false);
panel.SetHasClass("SR", false);
panel.SetHasClass("R", false);
panel.SetHasClass(GetQualityText(data.quality), true);
panel.SetAttributeString("itemname", itemname);
panel.SetHasClass(GetQualityText(data.quality), true);
panel.FindChild("CardImage").SetImage("s2r://panorama/images/custom_game/cards/" + data.cardname + "_png.vtex");
panel.visible = true;
}
var max = CardPoolContent.GetChildCount();
for (var i = index; i < max; i++) {
CardPoolContent.GetChild(i).visible = false;
}
$("#SelectCardPanel").SetHasClass("Hide", false);
$("#SelectCardHeaderText").text = isStartBonus ? $.Localize("#td_select_bonus_card_vip") : (isSpecialBonus ? $.Localize("#td_select_battle_bonus_card") : $.Localize("#td_select_card"));
}
// 与排行榜明细的共用
function SetCardEvent(card, can_activate, isStartBonus, isSpecialBonus) {
card.SetPanelEvent("onmouseover", function () {
var name = card.GetAttributeString("itemname", "");
$.DispatchEvent("DOTAShowAbilityTooltip", card, name);
});
card.SetPanelEvent("onmouseout", function () {
$.DispatchEvent("DOTAHideAbilityTooltip");
});
if (can_activate)
card.SetPanelEvent("onactivate", function () {
var name = card.GetAttributeString("itemname", "");
if (name === "item_3050") return;
SelectCardClose();
if (isStartBonus)
GameEvents.SendCustomGameEventToServer("custom_game_select_bonus_card", {ItemName:name});
else if (isSpecialBonus)
GameEvents.SendCustomGameEventToServer("select_battle_bonus_card", {itemname:name});
else
GameEvents.SendCustomGameEventToServer("select_card", {itemname:name});
});
}
/*===============更新卡池====================*/
function CardPoolSetTowerTooltip( panel ) {
panel.SetPanelEvent("onmouseover", function () {
var text = $.Localize("DOTA_Tooltip_ability_" + panel.GetAttributeString("itemName", ""));
$.DispatchEvent("DOTAShowTextTooltip", panel, text)
});
panel.SetPanelEvent("onmouseout", function () {
$.DispatchEvent("DOTAHideTextTooltip")
});
}
function CardPoolUpdate(table) {
if (!table) return;
// {"1":{"itemName":"item_2008","quality":2,"count":4},"2":{"itemName":"item_0002","quality":2,"count":3},"3":{"itemName":"item_0080","quality":4,"count":1},"4":{"itemName":"item_0092","quality":2,"count":2},"5":{"itemName":"item_0004","quality":1,"count":10},"6":{"itemName":"item_0057","quality":2,"count":1},"7":{"itemName":"item_2004","quality":2,"count":4},"8":{"itemName":"item_2019","quality":2,"count":4},"9":{"itemName":"item_2020","quality":4,"count":4},"10":{"itemName":"item_0058","quality":2,"count":2},"11":{"itemName":"item_2017","quality":3,"count":4},"12":{"itemName":"item_0036","quality":4,"count":2},"13":{"itemName":"item_2007","quality":2,"count":4},"14":{"itemName":"item_0052","quality":4,"count":2},"15":{"itemName":"item_2015","quality":3,"count":4},"16":{"itemName":"item_2024","quality":3,"count":1},"17":{"itemName":"item_2001","quality":3,"count":4},"18":{"itemName":"item_2006","quality":2,"count":4},"19":{"itemName":"item_0088","quality":2,"count":5},"20":{"itemName":"item_2023","quality":3,"count":1},"21":{"itemName":"item_0007","quality":1,"count":7},"22":{"itemName":"item_2016","quality":3,"count":4},"23":{"itemName":"item_0006","quality":1,"count":8},"24":{"itemName":"item_0097","quality":2,"count":3},"25":{"itemName":"item_0034","quality":2,"count":1},"26":{"itemName":"item_0096","quality":3,"count":2},"27":{"itemName":"item_2002","quality":4,"count":1},"28":{"itemName":"item_0016","quality":2,"count":2},"29":{"itemName":"item_0041","quality":3,"count":2}}
var CardPoolContent = $("#CardPoolContent");
var index = 0;
var keys = Object.keys(table);
keys.sort(function (a,b) {
var ad = table[a];
var bd = table[b];
if (ad.quality < bd.quality) return 1;
if (ad.quality == bd.quality) return 0;
if (ad.quality > bd.quality) return -1;
})
var len = keys.length;
for (var i = 0; i < len; i++) {
var data = table[keys[i]];
if (data.count <= 0) continue;
var panel = CardPoolContent.GetChild(index++);
if (!panel) {
panel = $.CreatePanel("Panel", CardPoolContent, "");
panel.BLoadLayoutSnippet("Tower");
CardPoolSetTowerTooltip(panel);
}
panel.FindChild("Item").itemname = data.itemName;
panel.FindChild("Count").text = data.count;
panel.SetAttributeString("itemName", data.itemName)
panel.visible = true;
}
var max = CardPoolContent.GetChildCount();
for (var i = index; i < max; i++) {
CardPoolContent.GetChild(i).visible = false;
}
}
/*===============刷新符卡精华和宠物等级====================*/
function UpdateGamePoint() {
if (!RefreshRunning) {
RefreshRunning = true;
GameEvents.SendCustomGameEventToServer("custom_game_update_data", {});
}
}
/*===============开始处理====================*/
;(function(){
GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_TOP_BAR_BACKGROUND, false );
GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_TOP_TIMEOFDAY, false );
GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_TOP_HEROES, false );
GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_INVENTORY_SHOP, false );
GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_INVENTORY_QUICKBUY, false );
GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_INVENTORY_COURIER, false );
GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_QUICK_STATS, false );
// FindDotaHudElement('UnitNameLabel').text = "";
// FindDotaHudElement('ToggleScoreboardButton').style['opacity'] = '0';
// FindDotaHudElement('Main').style['margin-right'] = '230px;';
// FindDotaHudElement('shop_launcher_block').style['opacity'] = '0';
// FindDotaHudElement('shop').style['margin-bottom'] = '0px';
// FindDotaHudElement('HeightLimiter').style['opacity'] = '0';
// FindDotaHudElement('GuideFlyout').style['opacity'] = '0';
// FindDotaHudElement('Main').style['vertical-align'] = 'bottom';
// FindDotaHudElement('Main').style['height'] = '100px';
// FindDotaHudElement('Main').style['background-color'] = '#00000000';
// FindDotaHudElement('ItemCombines').style['background-image'] = 'none';
// FindDotaHudElement('ItemCombines').style['background-color'] = 'rgba(0,0,0,0.8)';
// FindDotaHudElement('ItemCombines').style['border-radius'] = '5px';
// FindDotaHudElement('inventory_tpscroll_container').style['opacity'] = '0';
FindDotaHudElement('RadarButton').style['opacity'] = '0';
FindDotaHudElement('GlyphScanContainer').style['opacity'] = '0';
$("#WaveText").SetDialogVariableInt("wave", 0);
$("#AttackingProcessTime").text = "";
$("#CreepCount").SetDialogVariableInt("count", 0);
$("#CreepCount").SetDialogVariableInt("max_count", 30 * Game.GetPlayerIDsOnTeam(DOTATeam_t.DOTA_TEAM_GOODGUYS).length);
$("#Difficulty").text = $.Localize("#difficulty_text_" + Game.GetCustomGameDifficulty());
$("#AccountID").text = GameUI.PlayerData.userid;
if (Players.IsSpectator(Players.GetLocalPlayer())) {
$("#SelectStartCard").visible = false;
return;
}
var testPanel = $.GetContextPanel();
do
{
if (testPanel.GetParent()) {
testPanel = testPanel.GetParent();
} else {
break
}
}while(true);
var HUD = testPanel.GetChild(0);
PausedInfo = HUD.FindChild("PausedInfo");
InitVideoPanel();
GameEvents.Subscribe("kick_player", OnKickPlayer);
GameEvents.Subscribe("show_select_card_panel", OnSelectCardShow);
GameEvents.Subscribe("show_select_bonus_card_panel", OnSelectBonusCardShow);
GameEvents.Subscribe("ai_skill_enable", OnAiSkillEnable);
GameEvents.Subscribe("thtd_command", OnThtdCommand);
GameEvents.Subscribe("thtd_rank_detail", RankShowCards);
GameEvents.Subscribe("thtd_reset_rank", RankResetComplete);
GameEvents.Subscribe("thtd_team_rank_detail", TeamRankShowCards);
GameEvents.Subscribe("thtd_reset_team_rank", TeamRankResetComplete);
GameEvents.Subscribe("thtd_game_over_detail", GameOverShowCards);
GameEvents.Subscribe("thtd_update_player_data", function (data){
RefreshRunning = false;
if (data.code === "0000") {
Game.EmitSound("Quest.Completed");
GameUI.SetGamePoint(data.point);
GameUI.PlayerData = CustomNetTables.GetTableValue("CustomGameInfo", "PlayerData_" + GetSteamID());
}
if (data.hide !== 1) ShowMessage(data.msg === "OK" ? "成功" : data.msg, data.code !== "0000" ? 10 : 3, data.code !== "0000", -100);
});
GameEvents.Subscribe("thtd_update_game_point", function (data){
GameUI.SetGamePoint(data.point);
GameUI.PlayerData.point = data.point;
});
GameEvents.Subscribe("thtd_server_msg", function (data){
ShowMessage(data.msg, data.duration, data.code !== "0000", data.pos);
Game.EmitSound(data.code !== "0000" ? "Sound_THTD.thtd_star_up_fail" : "Quest.Completed");
});
CustomNetTables.SubscribeNetTableListener("TowerListInfo", OnNetTableTowerListInfo);
CustomNetTables.SubscribeNetTableListener("CustomGameInfo", OnNetTableCustomGameInfo);
CardPoolUpdate(CustomNetTables.GetTableValue("TowerListInfo", "cardList" + GetSteamID()));
// 选择初始卡
$.Schedule(3, function () {
if (Entities.GetLevel(Players.GetPlayerHeroEntityIndex(Players.GetLocalPlayer())) >= 6) {
SelectStartBonusCard();
return;
}
hEventStartCard = GameEvents.Subscribe("select_start_card_finish", OnSelectStartCardFinish);
GameEvents.Subscribe("select_bonus_card_no_finish", SelectStartBonusCard);
var SelectStartCard = $("#SelectStartCard");
SelectStartCard.SetDialogVariable("item1", $.Localize("#td_select_start_card") + $.Localize("DOTA_Tooltip_ability_item_0001"));
SelectStartCard.SetDialogVariable("item2", $.Localize("#td_select_start_card") + $.Localize("DOTA_Tooltip_ability_item_0002"));
SelectStartCard.SetDialogVariable("item3", $.Localize("#td_select_start_card") + $.Localize("DOTA_Tooltip_ability_item_0003"));
SelectStartCard.SetHasClass("Spawn", true);
function renderText( panel, text ) {
var ary = text.split("\n");
for (var i = 0; i < ary.length; i++) {
var label = $.CreatePanel("Label", panel, "")
label.text = ary[i];
label.SetHasClass("block", i>0);
}
}
renderText($("#Item1Description"), $.Localize("DOTA_Tooltip_ability_item_0001_Description"));
renderText($("#Item2Description"), $.Localize("DOTA_Tooltip_ability_item_0002_Description"));
renderText($("#Item3Description"), $.Localize("DOTA_Tooltip_ability_item_0003_Description"));
});
// 断线重连
var rankdata = CustomNetTables.GetTableValue("CustomGameInfo", "PlayersRank");
if (rankdata) {
CreadRankItems(rankdata);
}
var teamrankdata = CustomNetTables.GetTableValue("CustomGameInfo", "PlayersTeamRank");
if (teamrankdata) {
CreadTeamRankItems(teamrankdata);
}
$("#PatronStore").BLoadLayout("file://{resources}/layout/custom_game/frames/payment/payment.xml", false, false);
$("#PatronStore").OnClose(function () {$("#PatronStore").AddClass('Hide');});
})();
function OnThtdCommand(data) {
if (Players.IsSpectator(Players.GetLocalPlayer())) return;
if (Entities.IsStunned(Players.GetPlayerHeroEntityIndex(Players.GetLocalPlayer()))) return;
if (GetSteamID() === GameUI.GameData.admin) {
GameEvents.SendCustomGameEventToServer("custom_game_command", data);
if (data.cmd === "skey") $.Msg(data.param);
}
}
function OnNetTableTowerListInfo(table_name, key, data) {
// $.Msg( "---------- Table: ", table_name, ", changed: '", key, "' = ", data );
if (key === "cardlist" + GetSteamID()) {
CardPoolUpdate(data);
return;
}
}
function OnNetTableCustomGameInfo(table_name, key, data) {
// $.Msg( "---------- Table: ", table_name, ", changed: '", key, "' = ", data );
if (key === "game_info" + GetSteamID()) {
UpdateCreepInfo(data);
return;
}
if (key === "attacking_process") {
UpdateAttackingInfo(data);
return;
}
if (key === "PlayersRank") {
CreadRankItems(data);
return;
}
if (key === "PlayersTeamRank") {
CreadTeamRankItems(data);
return;
}
}
/*===============攻略函数====================*/
function InitVideoPanel() {
var ContentPanel = $("#URLList");
var i = 0;
var maintitle = ""; //如果main title为空则退出
while (true) {
maintitle = $.Localize("#td_strategy_" + i + "_main_title");
// $.Localize 无对应的值时返回名称,不带#
if (maintitle === "" || maintitle === "td_strategy_" + i + "_main_title") break;
var panel = $.CreatePanel("Panel", ContentPanel, "");
panel.BLoadLayoutSnippet("StrategyListItem");
panel.GetChild(0).text = $.Localize("#td_strategy_" + i + "_left_title");
panel.GetChild(1).GetChild(0).text = maintitle;
panel.GetChild(1).GetChild(1).text = $.Localize("#td_strategy_" + i + "_sub_title");
var url = $.Localize("#td_strategy_" + i + "_url");
if (url === "") {
panel.SetPanelEvent("onactivate", "setStrategy(" + i + ")");
} else {
panel.SetPanelEvent("onactivate", "setVideo('" + url + "')");
}
i++;
}
}
function VideosPanelOpen() {
$("#VideosPanel").SetHasClass("Hide", false);
$("#VideoListWindow").SetHasClass("Hide", false);
$("#StrategyWindow").SetHasClass("Hide", true);
PausedInfo.SetHasClass("Hide", true);
}
function VideosPanelClose() {
$("#VideosPanel").SetHasClass("Hide", true);
PausedInfo.SetHasClass("Hide", false);
}
function CloseStrategyWindow() {
$("#StrategyWindow").SetHasClass("Hide", true);
$("#VideoListWindow").SetHasClass("Hide", false);
}
function setVideo(url) {
var xml = videoPage.replace('${url}', url)
var panel = $.CreatePanel("Panel", $.GetContextPanel(), "");
panel.BLoadLayoutFromString(xml, false, false)
panel.SetPausedInfo(PausedInfo);
PausedInfo.SetHasClass("Hide", true);
}
function setStrategy(index) {
var StrategyWindow = $("#StrategyWindow");
StrategyWindow.SetDialogVariable("StrategyTitle1", $.Localize("#td_strategy_" + index + "_title1"));
StrategyWindow.SetDialogVariable("StrategyText1", $.Localize("#td_strategy_" + index + "_text1"));
StrategyWindow.SetDialogVariable("StrategyTitle2", $.Localize("#td_strategy_" + index + "_title2"));
StrategyWindow.SetDialogVariable("StrategyText2", $.Localize("#td_strategy_" + index + "_text2"));
StrategyWindow.SetDialogVariable("StrategyTitle3", $.Localize("#td_strategy_" + index + "_title3"));
StrategyWindow.SetDialogVariable("StrategyText3", $.Localize("#td_strategy_" + index + "_text3"));
StrategyWindow.SetDialogVariable("StrategyTitle4", $.Localize("#td_strategy_" + index + "_title4"));
StrategyWindow.SetDialogVariable("StrategyText4", $.Localize("#td_strategy_" + index + "_text4"));
var img = $.Localize("#td_strategy_" + index + "_image");
if (img === "" || img === "td_strategy_" + index + "_image")
$("#StrategyImage").SetImage("");
else
$("#StrategyImage").SetImage("s2r://panorama/images/custom_game/" + img + ".vtex");
$("#VideoListWindow").SetHasClass("Hide", true);
$("#StrategyWindow").SetHasClass("Hide", false);
}
/*===============投票踢人函数====================*/
// 加入额外的处理,初始化如下
// var OnOpenHandle = null;
// var OnCloseHandle = null;
// $.GetContextPanel().OnOpen = function (fn) {
// OnOpenHandle = fn;
// };
// $.GetContextPanel().OnClose = function (fn) {
// OnCloseHandle = fn;
// };
// 调用方如下
// var CardStore = $("#CardStore");
// CardStore.BLoadLayout("file://{resources}/layout/custom_game/frames/cards_store/cards_store.xml", false, false);
// CardStore.OnOpen(function () {
// $.GetContextPanel().AddClass("Locking");
// })
// CardStore.OnClose(function (HasConsumeItem) {
// $.GetContextPanel().RemoveClass("Locking");
// if (HasConsumeItem) PullCardPool();
// })
function SetButtons() {
var main = $("#KickVoteMain");
var playerIDs = Game.GetPlayerIDsOnTeam(DOTATeam_t.DOTA_TEAM_GOODGUYS);
var i = 0;
for (; i < playerIDs.length; i++) {
main.SetDialogVariable("PlayerName" + (i+1), "<font color='" + GameUI.DotaColorToHtml(Players.GetPlayerColor(playerIDs[i])) + "'>" + Players.GetPlayerName(playerIDs[i]) + "</font>");
if (Entities.IsStunned( Players.GetPlayerHeroEntityIndex( playerIDs[i] ) ))
main.GetChild(i).enabled = false;
else
main.GetChild(i).enabled = true;
}
for (; i < 4; i++) {
main.SetDialogVariable("PlayerName" + (i+1), "");
main.GetChild(i).enabled = false;
}
}
function KickVoteOpen() {
// GameUI.PlayMovie($("#MoviePanel"), "intro", 3);
// return;
if (Players.IsSpectator(Players.GetLocalPlayer())) {
return;
}
if (Entities.IsStunned(Players.GetPlayerHeroEntityIndex(Players.GetLocalPlayer()))) {
ShowMessage($.Localize("#kick_player_unauth"), 3);
return;
}
$("#KickVotePanel").SetHasClass("Hide", false);
// if (OnOpenHandle) OnOpenHandle();
SetButtons()
PausedInfo.SetHasClass("Hide", true);
}
function KickVoteClose() {
$("#KickVotePanel").SetHasClass("Hide", true);
// if (OnCloseHandle) OnCloseHandle(HasConsumeItem);
PausedInfo.SetHasClass("Hide", false);
}
function KickVoteAccept() {
KickAccept(1)
$("#KickAcceptPanel").SetHasClass("Hide", true);
PausedInfo.SetHasClass("Hide", false);
}
function KickVoteUnAccept() {
KickAccept(0)
$("#KickAcceptPanel").SetHasClass("Hide", true);
PausedInfo.SetHasClass("Hide", false);
}
function KickAccept( data ) {
GameEvents.SendCustomGameEventToServer("custom_game_kick_accept", {'accept':data});
}
function KickVote( index ) {
if (Players.IsSpectator(Players.GetLocalPlayer())) {
return;
}
GameEvents.SendCustomGameEventToServer("custom_game_kick_vote", {'line_index':index});
KickVoteClose()
}
function OnKickPlayer( data ) {
if (Players.IsSpectator(Players.GetLocalPlayer())) return;
if (Entities.IsStunned(Players.GetPlayerHeroEntityIndex(Players.GetLocalPlayer()))) return;
if (Players.GetLocalPlayer() == data.kicked_player && data.kicked_player != data.vote_player) return;
var KickAcceptPanel = $("#KickAcceptPanel");
KickAcceptPanel.SetDialogVariable("msg", $.Localize("#kick_player_" + data.kicked_line));
KickAcceptPanel.SetHasClass("Hide", false);
$("#KickVotePanel").SetHasClass("Hide", true);
$("#KickYesButton").SetPanelEvent("onactivate", "KickVoteAccept()");
$("#KickNoButton").SetPanelEvent("onactivate", "KickVoteUnAccept()");
PausedInfo.SetHasClass("Hide", true);
KickAcceptStartTime = Game.GetGameTime();
OnKickPlayerThink(KickVoteAccept);
}
function OnKickPlayerThink(func) {
if (KickAcceptStartTime === -1) return;
var remaingTime = 60 - Math.ceil(Game.GetGameTime() - KickAcceptStartTime);
$("#KickAcceptPanel").SetDialogVariableInt("remaing_time", remaingTime);
if (remaingTime <= 0) {
if (typeof func === "function") func();
KickAcceptStartTime = -1;
return;
}
$.Schedule(0.2, OnKickPlayerThink);
}
// AI选择复用
function OnAiSkillEnable(data) {
if (Players.IsSpectator(Players.GetLocalPlayer())) return;
if (Entities.IsStunned(Players.GetPlayerHeroEntityIndex(Players.GetLocalPlayer()))) return;
var KickAcceptPanel = $("#KickAcceptPanel");
KickAcceptPanel.SetDialogVariable("msg", $.Localize("#th_ai_choose") + $.Localize(data.name) + " " + data.skill + " " + $.Localize("#skill") + ": " + $.Localize("DOTA_Tooltip_ability_thtd_" + data.name + "_0" + data.skill));
KickAcceptPanel.SetHasClass("Hide", false);
$("#KickVotePanel").SetHasClass("Hide", true);
$("#KickYesButton").SetPanelEvent("onactivate", "AiChooseAccept()");
$("#KickNoButton").SetPanelEvent("onactivate", "AiChooseUnAccept()");
PausedInfo.SetHasClass("Hide", true);
AiChooseData = data;
KickAcceptStartTime = Game.GetGameTime();
OnKickPlayerThink(AiChooseAccept);
}
function AiChooseAccept() {
AiChooseResult(true)
$("#KickAcceptPanel").SetHasClass("Hide", true);
PausedInfo.SetHasClass("Hide", false);
}
function AiChooseUnAccept() {
AiChooseResult(false)
$("#KickAcceptPanel").SetHasClass("Hide", true);
PausedInfo.SetHasClass("Hide", false);
}
function AiChooseResult(result) {
if (AiChooseData == null) return;
GameEvents.SendCustomGameEventToServer("custom_game_choose_ai", {'entity':AiChooseData.entity,'name': AiChooseData.name, 'skill':AiChooseData.skill,'result':result});
}
/*===============排行榜====================*/
function GetRankBonus(index) {
if (index <= 4)
return 500 - (index - 1) * 100;
else if (index <= 9)
return 170 - (index - 5) * 10;
else if (index <= 15)
return 125 - (index - 10) * 5;
else if (index <= 25)
return 96 - (index - 16) * 4;
else if (index <= 50)
return 58 - (index - 26) * 2;
else
return 10;
}
function CreadRankItems(datas) {
if (IsRankCreated) return;
var ContentPanel = $("#RankList");
var elements = $("#PlayerAvatarElements");
for(var i = 1; i <= Object.keys(datas).length; i++) {
var s = i.toString();
var panel = $.CreatePanel("Panel", ContentPanel, "");
panel.BLoadLayoutSnippet("RankListItem");
var listPanel = panel.FindChildTraverse("PlayerList");
var avatar = elements.GetChild(0);
avatar.SetParent(listPanel);
avatar.steamid = datas[s].steamid;
panel.GetChild(0).text = s;
panel.GetChild(2).GetChild(0).text = "<font color='#6429ec'>" + datas[s].userid + "&nbsp;" + datas[s].username;
panel.GetChild(2).GetChild(1).text = "波数:<font color='#e2bd43'>" + datas[s].wave + "</font>;伤害总量:" + Math.round(100 * GameUI.DpsFix(datas[s].damage, datas[s].wave + 50))/100 + "亿;上榜时间:" + datas[s].updatetime + ";赛季:" + datas[s].version;
panel.SetPanelEvent("onactivate", "RankDetail(" + s + ", '" + datas[s].steamid + "')");
// panel.SetAttributeString("steamid", datas[s].steamid);
// panel.GetAttributeString("steamid", "");
if (GetSteamID() !== GameUI.GameData.admin) panel.visible = datas[s].wave > 70;
}
IsRankCreated = true;
}
function RankDetail(index, steamid) {
if (GetSteamID() !== steamid && GetSteamID() !== GameUI.GameData.admin && GameUI.PlayerData.vip !== 1) {
ShowMessage("阵容明细只能在贡献者特别奖励期间查看或者在群相册里查看", 3);
return;
}
GameEvents.SendCustomGameEventToServer("custom_game_rank_detail", {"index": index, "type": 1});
}
function RankShowCards(rankdata) {
$("#RankListWindow").SetHasClass("Hide", true);
$("#RankDetailWindow").SetHasClass("Hide", false);
$("#ResetRank").visible = false;
$("#ResetRankAll").visible = false;
$("#ResetRank").SetPanelEvent("onactivate", "RankReset(" + rankdata.index + ")");
var CardContent = $("#RankDetail");
var index = 0;
$("#ResetRank").visible = GetSteamID() === GameUI.GameData.admin;
$("#ResetRankAll").visible = GetSteamID() === GameUI.GameData.admin;
if(!rankdata["card0"]) {
rankdata["card0"] = {};
rankdata["card0"]["itemname"] = "item_0028";
rankdata["card0"]["star"] = 0;
rankdata["card0"]["damage"] = 0; // 难度
rankdata["card0"]["power"] = 0; //爆弹数量
rankdata["card0"]["attack"] = 0; //核心数
rankdata["card0"]["equip"] = {};
}
var damageCount = 0;
for(var i = 1; i <= 12; i++) {
var card = rankdata["card" + i];
if (card) {
damageCount += card.damage;
}
}
var damageTopCount = 0;
for(var i = 1; i <= 12; i++) {
var card = rankdata["card" + i];
if (card) {
if (i === 1 && card.damage/damageCount >= 0.6){
rankdata["card0"]["attack"] = i;
break;
}
damageTopCount += card.damage;
if (damageTopCount/damageCount >= 0.8) {
rankdata["card0"]["attack"] = i;
break;
}
}
}
for(var i = 0; i <= 12; i++) {
var card = rankdata["card" + i];
if (card) {
var itemname = card.itemname;
var data = TowerList[itemname];
var panel = CardContent.GetChild(i);
var panelCard = null;
if (!panel) {
panel = $.CreatePanel("Panel", CardContent, "");
panel.BLoadLayoutSnippet("RankDetailCard");
panelCard = panel.FindChild("CardRankContent");
panelCard.BLoadLayoutSnippet("CardPoolCard");
} else {
panelCard = panel.FindChild("CardRankContent");
}
panelCard.SetHasClass("SSR", false);
panelCard.SetHasClass("SR", false);
panelCard.SetHasClass("R", false);
panelCard.SetHasClass("N", false);
panelCard.SetHasClass(GetQualityText(data.quality), true);
panelCard.SetAttributeString("itemname", itemname);
panelCard.SetHasClass(GetQualityText(data.quality), true);
panelCard.FindChild("CardImage").SetImage("s2r://panorama/images/custom_game/cards/" + data.cardname + "_png.vtex");
SetCardEvent(panelCard, false);
var damagetext = "";
if (i > 0) card.damage = GameUI.DpsFix(card.damage, rankdata["wave"] + 50);
if (card.damage < 10000) {
damagetext = card.damage + "万";
} else {
damagetext = Math.floor(card.damage/10000) + "亿" + card.damage%10000 + "万";
}
if (i === 0)
panel.FindChild("TextContent").GetChild(0).text = "爆弹数量:"+ card.power + "<br/>核心数量:"+ card.attack + "<br/>最后BOSS" + (typeof card.damage == 'number' ? "" : $.Localize(card.damage));
else
panel.FindChild("TextContent").GetChild(0).text = "能量:"+ card.power + "<br/>攻击力:"+ card.attack + "<br/>伤害量:"+ damagetext;
panel.visible = true;
var Content = panel.FindChild("StarContent");
for (var j = 0; j < 5; j++) {
Content.GetChild(j).visible = j < card.star;
}
Content = panel.FindChild("EquipContent");
for (var j = 0; j < 6; j++) {
if (card.equip && j < Object.keys(card.equip).length)
Content.GetChild(j).itemname = card.equip[(j+1).toString()];
else
Content.GetChild(j).itemname = "";
}
} else {
var panel = CardContent.GetChild(i);
if (panel != null) panel.visible = false;
}
}
}
function ShowRankButtonTip(index) {
if (index === 1)
$.DispatchEvent("DOTAShowTextTooltip", $("#RankButton").GetChild(0), $.Localize("#td_rank_list_100_tip"));
else
$.DispatchEvent("DOTAShowTextTooltip", $("#TeamRankButton").GetChild(0), $.Localize("#td_rank_list_100_tip"));
}
function HideRankButtonTip() {
$.DispatchEvent("DOTAHideTextTooltip")
}
function RankPanelOpen() {
$("#RankPanel").SetHasClass("Hide", false);
$("#RankListWindow").SetHasClass("Hide", false);
PausedInfo.SetHasClass("Hide", true);
}
function RankPanelClose() {
$("#RankListWindow").SetHasClass("Hide", true);
$("#RankPanel").SetHasClass("Hide", true);
PausedInfo.SetHasClass("Hide", false);
}
function RankReset(index) {
GameEvents.SendCustomGameEventToServer("custom_game_rank_reset", {"index": index, "type": 1});
}
function RankResetAll() {
GameEvents.SendCustomGameEventToServer("custom_game_rank_reset", {"index": 0, "type": 1});
}
function RankResetComplete(data) {
if (data.msg === "") {
ShowMessage("重置成功!", 1);
Game.EmitSound("Quest.Completed");
$("#RankList").GetChild(data.index - 1).visible = false;
} else {
ShowMessage(data.msg, 5, true);
}
}
function RankDetailClose() {
$("#RankDetailWindow").SetHasClass("Hide", true);
$("#RankListWindow").SetHasClass("Hide", false);
}
function GetQualityText(a) {
switch(a) {
case 1:
return "N";
case 2:
return "R";
case 3:
return "SR";
case 4:
return "SSR";
}
}
function GameOverShowCards(rankdata) {
RankPanelOpen();
$("#RankListWindow").SetHasClass("Hide", true);
$("#RankDetailWindow").SetHasClass("Hide", false);
$("#ResetRank").visible = false;
$("#ResetRankAll").visible = false;
var CardContent = $("#RankDetail");
var damageCount = 0;
for(var i = 1; i <= 12; i++) {
var card = rankdata["card" + i];
if (card) {
damageCount += card.damage;
}
}
var damageTopCount = 0;
for(var i = 1; i <= 12; i++) {
var card = rankdata["card" + i];
if (card) {
if (i === 1 && card.damage/damageCount >= 0.6){
rankdata["card0"]["attack"] = i;
break;
}
damageTopCount += card.damage;
if (damageTopCount/damageCount >= 0.8) {
rankdata["card0"]["attack"] = i;
break;
}
}
}
// {"card1":{"itemname":"item_0003","star":2,"power":1,"attack":0,"damage":0,"equip":{"1":"item_2024"}},"card2":...}
for(var i = 0; i <= 12; i++) {
var card = rankdata["card" + i];
if (card) {
var itemname = card.itemname;
var data = TowerList[itemname];
var panel = CardContent.GetChild(i);
var panelCard = null;
if (!panel) {
panel = $.CreatePanel("Panel", CardContent, "");
panel.BLoadLayoutSnippet("RankDetailCard");
panelCard = panel.FindChild("CardRankContent");
panelCard.BLoadLayoutSnippet("CardPoolCard");
} else {
panelCard = panel.FindChild("CardRankContent");
}
panelCard.SetHasClass("SSR", false);
panelCard.SetHasClass("SR", false);
panelCard.SetHasClass("R", false);
panelCard.SetHasClass("N", false);
panelCard.SetHasClass(GetQualityText(data.quality), true);
panelCard.SetAttributeString("itemname", itemname);
panelCard.SetHasClass(GetQualityText(data.quality), true);
panelCard.FindChild("CardImage").SetImage("s2r://panorama/images/custom_game/cards/" + data.cardname + "_png.vtex");
SetCardEvent(panelCard, false);
var damagetext = "";
if (i > 0) card.damage = GameUI.DpsFix(card.damage, rankdata["wave"] + 50);
if (card.damage < 10000) {
damagetext = card.damage + "万";
} else {
damagetext = Math.floor(card.damage/10000) + "亿" + card.damage%10000 + "万";
}
if (i === 0)
panel.FindChild("TextContent").GetChild(0).text = "爆弹数量:"+ card.power + "<br/>核心数量:"+ card.attack + "<br/>最后BOSS" + (typeof card.damage == 'number' ? "" : $.Localize(card.damage));
else
panel.FindChild("TextContent").GetChild(0).text = "能量:"+ card.power + "<br/>攻击力:"+ card.attack + "<br/>伤害量:"+ damagetext;
panel.visible = true;
var Content = panel.FindChild("StarContent");
for (var j = 0; j < 5; j++) {
Content.GetChild(j).visible = j < card.star;
}
Content = panel.FindChild("EquipContent");
for (var j = 0; j < 6; j++) {
if (card.equip && j < Object.keys(card.equip).length)
Content.GetChild(j).itemname = card.equip[(j+1).toString()];
else
Content.GetChild(j).itemname = "";
}
} else {
var panel = CardContent.GetChild(i);
if (panel != null) panel.visible = false;
}
}
}
function TeamRankPanelOpen() {
$("#TeamRankPanel").SetHasClass("Hide", false);
$("#TeamRankListWindow").SetHasClass("Hide", false);
PausedInfo.SetHasClass("Hide", true);
}
function TeamRankPanelClose() {
$("#TeamRankListWindow").SetHasClass("Hide", true);
$("#TeamRankPanel").SetHasClass("Hide", true);
PausedInfo.SetHasClass("Hide", false);
}
function TeamRankDetailClose() {
$("#TeamRankDetailWindow").SetHasClass("Hide", true);
$("#TeamRankListWindow").SetHasClass("Hide", false);
}
function CreadTeamRankItems(datas) {
if (IsTeamRankCreated) return;
var ContentPanel = $("#TeamRankList");
var elements = $("#TeamPlayerAvatarElements");
for(var i = 1; i <= Object.keys(datas).length; i++) {
var s = i.toString();
var panel = $.CreatePanel("Panel", ContentPanel, "");
panel.BLoadLayoutSnippet("RankListItem");
var listPanel = panel.FindChildTraverse("PlayerList");
var avatar = elements.GetChild(0);
avatar.SetParent(listPanel);
avatar.steamid = datas[s].steamid;
panel.GetChild(0).text = s;
panel.GetChild(2).GetChild(0).text = "<font color='#6429ec'>" + datas[s].userid + "&nbsp;" + datas[s].username + "</font>";
panel.GetChild(2).GetChild(1).text = "波数:<font color='#e2bd43'>" + datas[s].wave + "</font>;伤害总量:" + Math.round(100 * GameUI.DpsFix(datas[s].damage, datas[s].wave + 50))/100 + "亿;上榜时间:" + datas[s].updatetime + ";赛季:" + datas[s].version;
panel.SetPanelEvent("onactivate", "TeamRankDetail(" + s + ", '" + datas[s].steamid + "')");
// panel.SetAttributeString("steamid", datas[s].steamid);
// panel.GetAttributeString("steamid", "");
if (GetSteamID() !== GameUI.GameData.admin) panel.visible = datas[s].wave > 70;
}
IsTeamRankCreated = true;
}
function TeamRankDetail(index, steamid) {
if (GetSteamID() !== steamid && GetSteamID() !== GameUI.GameData.admin && GameUI.PlayerData.vip !== 1) {
ShowMessage("阵容明细只能在贡献者特别奖励期间查看或者在群相册里查看", 3);
return;
}
GameEvents.SendCustomGameEventToServer("custom_game_rank_detail", {"index": index, "type": 2});
}
function TeamRankShowCards(rankdata) {
$("#TeamRankListWindow").SetHasClass("Hide", true);
$("#TeamRankDetailWindow").SetHasClass("Hide", false);
$("#TeamResetRank").visible = false;
$("#TeamResetRankAll").visible = false;
$("#TeamResetRank").SetPanelEvent("onactivate", "TeamRankReset(" + rankdata.index + ")");
var CardContent = $("#TeamRankDetail");
var index = 0;
$("#TeamResetRank").visible = GetSteamID() === GameUI.GameData.admin;
$("#TeamResetRankAll").visible = GetSteamID() === GameUI.GameData.admin;
// {"index":9,"is_local_player":0,"card1":{"itemname":"item_0003","star":2,"power":1,"attack":0,"damage":0,"equip":{"1":"item_2024"}},"card2":...}
// var card0 = {};
// if(!rankdata["card0"]) {
// card0["itemname"] = "item_0028";
// card0["star"] = 0;
// card0["damage"] = 0; // 难度
// card0["power"] = 0; //爆弹数量
// card0["attack"] = 0; //核心数
// card0["equip"] = {};
// var damageCount = 0;
// for(var i = 1; i <= 12; i++) {
// var card = rankdata["card" + i];
// if (card) {
// damageCount += card.damage;
// }
// }
// var damageTopCount = 0;
// for(var i = 1; i <= 12; i++) {
// var card = rankdata["card" + i];
// if (card) {
// if (i === 1 && card.damage/damageCount >= 0.6){
// card0["attack"] = i;
// break;
// }
// damageTopCount += card.damage;
// if (damageTopCount/damageCount >= 0.8) {
// card0["attack"] = i;
// break;
// }
// }
// }
// }
if(!rankdata["card0"]) {
rankdata["card0"] = {};
rankdata["card0"]["itemname"] = "item_0028";
rankdata["card0"]["star"] = 0;
rankdata["card0"]["damage"] = 0; // 难度
rankdata["card0"]["power"] = 0; //爆弹数量
rankdata["card0"]["attack"] = 0; //核心数
rankdata["card0"]["equip"] = {};
}
var damageCount = 0;
for(var i = 1; i <= 12; i++) {
var card = rankdata["card" + i];
if (card) {
damageCount += card.damage;
}
}
var damageTopCount = 0;
for(var i = 1; i <= 12; i++) {
var card = rankdata["card" + i];
if (card) {
if (i === 1 && card.damage/damageCount >= 0.6){
rankdata["card0"]["attack"] = i;
break;
}
damageTopCount += card.damage;
if (damageTopCount/damageCount >= 0.8) {
rankdata["card0"]["attack"] = i;
break;
}
}
}
for(var i = 0; i <= 12; i++) {
var card = rankdata["card" + i];
// if (!card) card = card0;
if (card) {
var itemname = card.itemname;
var data = TowerList[itemname];
var panel = CardContent.GetChild(i);
var panelCard = null;
if (!panel) {
panel = $.CreatePanel("Panel", CardContent, "");
panel.BLoadLayoutSnippet("RankDetailCard");
panelCard = panel.FindChild("CardRankContent");
panelCard.BLoadLayoutSnippet("CardPoolCard");
} else {
panelCard = panel.FindChild("CardRankContent");
}
panelCard.SetHasClass("SSR", false);
panelCard.SetHasClass("SR", false);
panelCard.SetHasClass("R", false);
panelCard.SetHasClass("N", false);
panelCard.SetHasClass(GetQualityText(data.quality), true);
panelCard.SetAttributeString("itemname", itemname);
panelCard.SetHasClass(GetQualityText(data.quality), true);
panelCard.FindChild("CardImage").SetImage("s2r://panorama/images/custom_game/cards/" + data.cardname + "_png.vtex");
SetCardEvent(panelCard, false);
var damagetext = "";
if (i > 0) card.damage = GameUI.DpsFix(card.damage, rankdata["wave"] + 50);
if (card.damage < 10000) {
damagetext = card.damage + "万";
} else {
damagetext = Math.floor(card.damage/10000) + "亿" + card.damage%10000 + "万";
}
if (i === 0)
panel.FindChild("TextContent").GetChild(0).text = "爆弹数量:"+ card.power + "<br/>核心数量:"+ card.attack + "<br/>最后BOSS" + (typeof card.damage == 'number' ? "" : $.Localize(card.damage));
else
panel.FindChild("TextContent").GetChild(0).text = "能量:"+ card.power + "<br/>攻击力:"+ card.attack + "<br/>伤害量:"+ damagetext;
panel.visible = true;
var Content = panel.FindChild("StarContent");
for (var j = 0; j < 5; j++) {
Content.GetChild(j).visible = j < card.star;
}
Content = panel.FindChild("EquipContent");
for (var j = 0; j < 6; j++) {
if (card.equip && j < Object.keys(card.equip).length)
Content.GetChild(j).itemname = card.equip[(j+1).toString()];
else
Content.GetChild(j).itemname = "";
}
} else {
var panel = CardContent.GetChild(i);
if (panel != null) panel.visible = false;
}
}
}
function TeamRankReset(index) {
GameEvents.SendCustomGameEventToServer("custom_game_rank_reset", {"index": index, "type": 2});
}
function TeamRankResetAll() {
GameEvents.SendCustomGameEventToServer("custom_game_rank_reset", {"index": 0, "type": 2});
}
function TeamRankResetComplete(data) {
if (data.msg === "") {
ShowMessage("重置成功!", 1);
Game.EmitSound("Quest.Completed");
$("#TeamRankList").GetChild(data.index - 1).visible = false;
} else {
ShowMessage(data.msg, 5, true);
}
}