import { Game, RendererSDK, LocalPlayer, Team, Vector2 } from "wrapper/Imports";
import { State, DrawPositionX, DrawPositionY, SendAlliesChat, ChatTimeOutSend, ChatTimeOutSendRepeat } from "./Menu";
var LaneSelectionFlags_t;
(function (LaneSelectionFlags_t) {
LaneSelectionFlags_t[LaneSelectionFlags_t["SAFE_LANE"] = 1] = "SAFE_LANE";
LaneSelectionFlags_t[LaneSelectionFlags_t["OFF_LANE"] = 2] = "OFF_LANE";
LaneSelectionFlags_t[LaneSelectionFlags_t["MID_LANE"] = 4] = "MID_LANE";
LaneSelectionFlags_t[LaneSelectionFlags_t["SOFT_SUPPORT"] = 8] = "SOFT_SUPPORT";
LaneSelectionFlags_t[LaneSelectionFlags_t["HARD_SUPPORT"] = 16] = "HARD_SUPPORT";
})(LaneSelectionFlags_t || (LaneSelectionFlags_t = {}));
let roles = new Array(2).fill(new Array(5).fill(LaneSelectionFlags_t.MID_LANE));
function GetLaneName(lane_selection_flags) {
switch (lane_selection_flags) {
case LaneSelectionFlags_t.HARD_SUPPORT:
return "Hard Support";
case LaneSelectionFlags_t.MID_LANE:
return "Mid Lane";
case LaneSelectionFlags_t.OFF_LANE:
return "Off Lane";
case LaneSelectionFlags_t.SAFE_LANE:
return "Safe Lane";
case LaneSelectionFlags_t.SOFT_SUPPORT:
return "Soft Support";
default:
return undefined;
}
}
Events.on("SharedObjectChanged", (id, reason, uuid, obj) => {
if (id === 2004) {
roles[0] = obj.members.filter(member => {
return member.team === 0;
}).map(member => {
return member.lane_selection_flags;
});
roles[1] = obj.members.filter(member => {
return member.team === 1;
}).map(member => {
return member.lane_selection_flags;
});
}
});
ChatTimeOutSendRepeat.OnValue(x => {
is_send_chat = 0;
});
let player_size = 125,
team_offset = 250,
first_offset = 140,
is_send_chat = 0;
export function Draw() {
if (!State.value || !Game.IsConnected) {
return;
}
let is_in_game = Game.GameState >= DOTA_GameState.DOTA_GAMERULES_STATE_PRE_GAME;
if (is_in_game) {
return;
}
let enemy_team_id = LocalPlayer.Team - Team.Radiant ^ 1,
wSize = RendererSDK.WindowSize,
ratio = RendererSDK.GetAspectRatio();
switch (ratio) {
case "4x3":
player_size = 90;
team_offset = 230;
break;
case "16x9":
if (wSize.x === 1280 && wSize.y === 720) {
player_size = 85;
team_offset = 160;
}
break;
}
let base_enemy_pos = new Vector2(first_offset + (player_size * 5 + team_offset) * enemy_team_id + wSize.x / 100, DrawPositionY.value);
let _a = roles[enemy_team_id];
let _f = (role, i) => {
let role_str = GetLaneName(role);
if (role_str === undefined) {
return;
}
RendererSDK.Text(role_str, base_enemy_pos.Clone().AddScalarX(i * player_size + DrawPositionX.value));
if (SendAlliesChat.value) {
setTimeout(() => {
if (is_send_chat < 5) {
setTimeout(() => {
Game.ExecuteCommand("say_team " + (i + 1) + " slot " + role_str);
++is_send_chat;
}, i * 500);
}
}, ChatTimeOutSend.value * 1000);
}
};
for (let _i = _a.length; _i--;) {
_f(_a[_i], _i, _a);
}
}
export function GameStarted() {
is_send_chat = 0;
}
export function GameEnded() {
is_send_chat = 0;
}
export function GameConnect() {
is_send_chat = 0;
}