307 lines
13 KiB
JavaScript
307 lines
13 KiB
JavaScript
let addButton = document.getElementById("addPlayer");
|
|
let deleteButton = document.getElementById("removePlayer");
|
|
let changeTickButton = document.getElementById("changeTick");
|
|
let changeIdButton = document.getElementById("tickLeistenId");
|
|
let reloadButton = document.getElementById("reload");
|
|
let saveButton = document.getElementById("save");
|
|
let url = "wss://nerfingen.de/tickLeisteSocket/";
|
|
var players = [];
|
|
let Id = "Test" //Math.floor(Math.random()*10000000000000000).toString(16)
|
|
var ws = new WebSocket(url + Id);
|
|
document.getElementById("p4").innerHTML = "" + Id;
|
|
|
|
|
|
/* Handles Events from Server */
|
|
ws.onmessage = function(evt) {messageHandling(evt)};
|
|
|
|
|
|
|
|
function messageHandling(evt){
|
|
var msg = evt.data;
|
|
var obj = JSON.parse(msg);
|
|
var valid = false;
|
|
/*Changes Tick of one Player in players. Updates the Playerlist and current Player.*/
|
|
if (obj.eventType == "SetPlayerTickE") {
|
|
valid = true;
|
|
for (var i = 0; i < players.length; i++){
|
|
if (players[i].UUID == obj.playerUUID){
|
|
if (obj.tick.tickType == "Tick"){
|
|
players[i].Tick = obj.tick.tickValue;
|
|
}
|
|
else {
|
|
players[i].Tick = obj.tick.tickType;
|
|
}
|
|
var pl = players[i];
|
|
players.splice(i,1);
|
|
AddPlayer(pl);
|
|
break;
|
|
}
|
|
}
|
|
PlayerList();
|
|
CurrentPlayer();
|
|
}
|
|
/*Adds Player and their Tick to players. Updates the Playerlist and current Player.*/
|
|
if (obj.eventType == "AddPlayerTickE") {
|
|
valid = true;
|
|
var newPlayer = new Object ();
|
|
newPlayer.Name = obj.playerName;
|
|
newPlayer.UUID = obj.playerUUID;
|
|
if (obj.tick.tickType == "Tick"){
|
|
newPlayer.Tick = obj.tick.tickValue;
|
|
}
|
|
else {
|
|
newPlayer.Tick = obj.tick.tickType;
|
|
}
|
|
AddPlayer(newPlayer);
|
|
PlayerList();
|
|
CurrentPlayer();
|
|
}
|
|
/*Adds players an their Ticks to players. Updates the Playerlist and current Player.*/
|
|
if (obj.eventType == "InitializeTickLeisteE") {
|
|
valid = true;
|
|
players = [];
|
|
for (var i = 0; i<obj.tickLeiste.length;i++){
|
|
for (var j =0;j<obj.tickLeiste[i][1].length;j++){
|
|
if (obj.tickLeiste[i][0].tickType == "Tick"){
|
|
AddPlayer({Tick: obj.tickLeiste[i][0].tickValue, UUID: obj.tickLeiste[i][1][j][0], Name: obj.tickLeiste[i][1][j][1]});
|
|
}
|
|
else {
|
|
AddPlayer({Tick: obj.tickLeiste[i][0].tickType, UUID: obj.tickLeiste[i][1][j][0], Name: obj.tickLeiste[i][1][j][1]});
|
|
}
|
|
}
|
|
}
|
|
|
|
PlayerList();
|
|
CurrentPlayer();
|
|
|
|
}
|
|
/*Changes the Name of a Player in players. Updates the Playerlist and current Player*/
|
|
if (obj.eventType == "ChangeNameE") {
|
|
valid = true;
|
|
for (var i = 0; i < players.length; i++){
|
|
if (players[i].UUID == obj.playerUUID){
|
|
players[i].Name = obj.playerName;
|
|
}
|
|
}
|
|
PlayerList();
|
|
CurrentPlayer();
|
|
}
|
|
/*Removes one Player from players. Updates the Playerlist and current Player*/
|
|
if (obj.eventType == "RemovePlayerE") {
|
|
valid = true;
|
|
for (var i = 0; i < players.length; i++){
|
|
if (players[i].UUID == obj.playerUUID){
|
|
players.splice(i,1);
|
|
}
|
|
}
|
|
PlayerList();
|
|
CurrentPlayer();
|
|
}
|
|
/*If no eventType was recognized, an error is thrown.*/
|
|
if (valid == false) {
|
|
console.error('Invalid Event received');
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/*When the Button is clicked, a AddPlayerTickR request is send to the server.*/
|
|
addButton.onclick = function() {
|
|
var type = "";
|
|
if (document.getElementById("A2").value == "Abwarten") {
|
|
type = "Abwarten";
|
|
ws.send('{"requestType" : "AddPlayerTickR", "playerName" : "' + document.getElementById("A1").value + '" , "tick" : {"tickType" : "' + type + '"}}');
|
|
}
|
|
else {
|
|
if (document.getElementById("A2").value == "Bereithalten") {
|
|
type = "Bereithalten";
|
|
ws.send('{"requestType" : "AddPlayerTickR", "playerName" : "' + document.getElementById("A1").value + '" , "tick" : {"tickType" : "' + type + '"}}');
|
|
}
|
|
else {
|
|
type = "Tick";
|
|
ws.send('{"requestType" : "AddPlayerTickR", "playerName" : "' + document.getElementById("A1").value + '" , "tick" : {"tickType" : "' + type + '", "tickValue" : ' + document.getElementById("A2").value + '}}');
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/*When the Button is clicked, a RemovePlayerR request is send to the server.*/
|
|
deleteButton.onclick = function() {
|
|
var UUID = "";
|
|
for (var i = 0; i < players.length; i++){
|
|
if (players[i].Name == document.getElementById("B").value){
|
|
UUID = players[i].UUID;
|
|
}
|
|
}
|
|
ws.send('{"requestType" : "RemovePlayerR", "playerUUID" : "' + UUID + '"}');
|
|
}
|
|
|
|
/*When the Button is clicked, a SetPlayerTickR request is send to the server*/
|
|
changeTickButton.onclick = function() {
|
|
var UUID = "";
|
|
var Tick = document.getElementById("C2").value;
|
|
var type = "";
|
|
for (var i = 0; i < players.length; i++){
|
|
if (players[i].Name == document.getElementById("C1").value){
|
|
UUID = players[i].UUID;
|
|
if (Tick == "Abwarten" || Tick == "Bereithalten"){
|
|
ws.send('{"requestType" : "SetPlayerTickR", "playerUUID" : "' + UUID + '", "tick" : {"tickType" : "' + Tick + '"}}');
|
|
break;
|
|
}
|
|
else {
|
|
type = "Tick";
|
|
ws.send('{"requestType" : "SetPlayerTickR", "playerUUID" : "' + UUID + '", "tick" : {"tickType" : "' + type + '", "tickValue" : ' + Tick + '}}');
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/*When the Button is clicked, a new WebSocket connection is opened with the new ID*/
|
|
changeIdButton.onclick = function() {
|
|
newId = document.getElementById("D").value;
|
|
ws.close();
|
|
ws = new WebSocket(url + newId);
|
|
document.getElementById("p4").innerHTML = "" + newId;
|
|
ws.onmessage = function(evt) {messageHandling(evt)};
|
|
}
|
|
|
|
/*When the Button is clicked, a TickLeisteR request is send to the server.*/
|
|
reloadButton.onclick = function() {
|
|
ws.send('{"requestType" : "TickLeisteR"}');
|
|
}
|
|
|
|
saveButton.onclick = function(){
|
|
download("Tickleiste.json", JSON.stringify(players));
|
|
}
|
|
|
|
|
|
/*Updates the Playerlist according to the content of players.*/
|
|
function PlayerList(){
|
|
var content = "";
|
|
for (var i = 0; i < players.length; i++){
|
|
content = content + players[i].Name + " " + players[i].Tick + "<br>";
|
|
}
|
|
document.getElementById("p3").innerHTML = content;
|
|
}
|
|
|
|
/*Updates the current Player according to the Player with the smallest Tick in players.*/
|
|
function CurrentPlayer(){
|
|
if (players.length > 0 ){
|
|
document.getElementById("p2").innerHTML = players[0].Name;
|
|
document.getElementById("p1").innerHTML = "" + players[0].Tick;
|
|
}
|
|
else{
|
|
document.getElementById("p2").innerHTML = "-";
|
|
document.getElementById("p1").innerHTML = "-";
|
|
}
|
|
}
|
|
|
|
function AddPlayer(player){
|
|
if (players.length == 0){
|
|
players.push(player);
|
|
}
|
|
else {
|
|
var added = false;
|
|
if (player.Tick == "Abwarten"){
|
|
players.push(player);
|
|
}
|
|
else {
|
|
if (player.Tick == "Bereithalten"){
|
|
for (var i = players.length; i>0;i--){
|
|
if (players[i-1].Tick != "Abwarten"){
|
|
players.splice(i,0,player);
|
|
added = true;
|
|
break;
|
|
}
|
|
if (i == 1 && added == false){
|
|
players.splice(0,0,player);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
for (var i = 0; i<players.length;i++){
|
|
if (players[i].Tick == "Abwarten" || players[i].Tick == "Bereithalten"){
|
|
players.splice(i,0,player);
|
|
added = true;
|
|
break
|
|
}
|
|
else {
|
|
if (player.Tick < players[i].Tick){
|
|
players.splice(i,0,player);
|
|
added = true;
|
|
break;
|
|
}
|
|
if (i == (players.length -1) && added == false){
|
|
players.push(player);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function loadFile(input){
|
|
let file = input.files[0];
|
|
|
|
let reader = new FileReader();
|
|
|
|
reader.readAsText(file);
|
|
|
|
reader.onload = function() {
|
|
var pl = JSON.parse(reader.result);
|
|
var tickleiste = initializeJSONFormat(pl);
|
|
ws.send(tickleiste);
|
|
};
|
|
reader.onerror = function() {
|
|
console.log(reader.error);
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function initializeJSONFormat(arr) { // JSON ändern
|
|
var tick = -999;
|
|
var tickleiste = "";
|
|
var type = "";
|
|
for (var i=0;i<arr.length;i++){
|
|
if (arr[i].Tick == "Abwarten" || arr[i].Tick == "Bereithalten"){
|
|
type = arr[i].Tick;
|
|
}
|
|
else {
|
|
type = "Tick";
|
|
}
|
|
if (arr[i].Tick > tick){
|
|
tick = arr[i].Tick;
|
|
tickleiste = tickleiste + ']], [{"tickType" : "' + type + '", "tickvalue" : "' + arr[i].Tick + '"}, ["' + arr[i].Name + '"';
|
|
}
|
|
else {
|
|
tick = arr[i].Tick;
|
|
tickleiste = tickleiste + ', "' + arr[i].Name + '"';
|
|
}
|
|
|
|
}
|
|
tickleiste = tickleiste.slice(4);
|
|
tickleiste = '{"requestType" : "InitializeTickLeisteR", "tickLeiste" : [' + tickleiste + ']]]}';
|
|
return tickleiste;
|
|
|
|
}
|
|
|
|
function download(filename, text) {
|
|
var element = document.createElement('a');
|
|
element.setAttribute('href', 'data:text/json;charset=utf-8,' + encodeURIComponent(text));
|
|
element.setAttribute('download', filename);
|
|
|
|
element.style.display = 'none';
|
|
document.body.appendChild(element);
|
|
|
|
element.click();
|
|
|
|
document.body.removeChild(element);
|
|
}
|