Update v0.5.2

Co-authored-by: Mohsen Taghavi <mohsenemx@users.noreply.github.com>
archived
peshomir 2022-12-26 00:06:47 +02:00
parent c3d88d9088
commit 489e6c899a
3 changed files with 98 additions and 32 deletions

104
game.js
View File

@ -1,4 +1,4 @@
const fx_version = '0.5.1'; // FX Client Version const fx_version = '0.5.2'; // FX Client Version
const fx_update = 'Dec 25'; // FX Client Last Updated const fx_update = 'Dec 25'; // FX Client Last Updated
const ter_version = '1.82.9'; // Territorial Version const ter_version = '1.82.9'; // Territorial Version
@ -18,6 +18,7 @@ var settings = {
"fontName": "Trebuchet MS" "fontName": "Trebuchet MS"
}; };
var settingsWindowOpen = false; var settingsWindowOpen = false;
var donationHistoryWindowOpen = false;
var settingsManager = new (function() { var settingsManager = new (function() {
this.save = function() { this.save = function() {
settings.fontName = document.getElementById("settings_fontname").value.trim(); settings.fontName = document.getElementById("settings_fontname").value.trim();
@ -44,6 +45,7 @@ function removeWins() {
alert("Successfully reset wins"); alert("Successfully reset wins");
} }
} }
// yes, I know, this code is 🤮, I will fix it later
function openSettingsWindow() { function openSettingsWindow() {
settingsWindowOpen = true; settingsWindowOpen = true;
document.getElementById("settings_fontname").value = settings.fontName; document.getElementById("settings_fontname").value = settings.fontName;
@ -54,13 +56,56 @@ function closeSettingsWindow() {
settingsWindowOpen = false; settingsWindowOpen = false;
document.querySelector(".settings").style.display = "none"; document.querySelector(".settings").style.display = "none";
} }
document.getElementById("canvasA").addEventListener("mousedown", closeSettingsWindow); function openDonationHistoryWindow() {
donationHistoryWindowOpen = true;
document.querySelector("#donationhistory").style.display = "block";
}
function closeDonationHistoryWindow() {
if (!donationHistoryWindowOpen) return;
donationHistoryWindowOpen = false;
document.querySelector("#donationhistory").style.display = "none";
}
function closeAllWindows() {
if (settingsWindowOpen) closeSettingsWindow();
if (donationHistoryWindowOpen) closeDonationHistoryWindow();
}
document.getElementById("canvasA").addEventListener("mousedown", closeAllWindows);
//var tfxc = document.createElement('div'); //var tfxc = document.createElement('div');
//tfxc.setAttribute('class', 'settingsd'); //tfxc.setAttribute('class', 'settingsd');
var settingsGearIcon = document.createElement('img'); var settingsGearIcon = document.createElement('img');
settingsGearIcon.setAttribute('src', 'assets/geari_white.png'); settingsGearIcon.setAttribute('src', 'assets/geari_white.png');
//gear.setAttribute('id', 'optionsimg'); //gear.setAttribute('id', 'optionsimg');
//tfxc.appendChild(gear); //tfxc.appendChild(gear);
var donationsTracker = new (function(){
this.donationHistory = Array();
// fill the array with empty arrays with length of 3
for (var i = 0; i < 512; i++) this.donationHistory.push([]);
// from inside of game:
// (!gE[g].startsWith("[Bot] ") && donationsTracker.logDonation(g,k,x))
this.logDonation = function(senderID, receiverID, amount) {
this.donationHistory[receiverID].push([senderID,amount]);
};
this.getRecipientHistoryOf = function(playerID) {
return this.donationHistory[playerID];
};
});
// usage from inside: displayDonationsHistory(Y, gE);
function displayDonationsHistory(playerID, playerNames) {
var history = donationsTracker.getRecipientHistoryOf(playerID);
console.log("History for " + playerNames[playerID] + ":");
console.log(history);
document.querySelector("#donationhistory h1").innerHTML = "Donation history for " + playerNames[playerID];
var historyText = "";
history.reverse();
if (history.length > 0) history.forEach(function(historyItem, index) {
historyText += (history.length - index) + ". Received " + historyItem[1] + " resources from " + playerNames[historyItem[0]] + "<br>";
});
else historyText = "Nothing to display";
document.querySelector("#donationhistory p#donationhistory_text").innerHTML = historyText;
openDonationHistoryWindow();
}
var setVarByName; var setVarByName;
@ -2034,18 +2079,23 @@ var setVarByName;
if (n) if (n)
a5.cG(); a5.cG();
else { else {
// draw order buttons
var N = (A + J) / D; var N = (A + J) / D;
cH.imageSmoothingEnabled = !0; cH.imageSmoothingEnabled = !0;
cH.setTransform(D, 0, 0, D, z, y); cH.setTransform(D, 0, 0, D, z, y);
t[0] ? fY ? cH.drawImage(this.kx[3], 0, 0) : cH.drawImage(this.kx[0], 0, 0) : t[8] ? cH.drawImage(this.kv[0], 0, 0) : cH.drawImage(K[0], 0, 0); t[0] ? fY ? cH.drawImage(this.kx[3], 0, 0) : cH.drawImage(this.kx[0], 0, 0) : t[8] ? cH.drawImage(this.kv[0], 0, 0) : cH.drawImage(K[0], 0, 0);
t[1] && cH.drawImage(this.kx[1], N, 0); t[1] && cH.drawImage(this.kx[1], N, 0);
// donation
t[2] && cH.drawImage(this.kx[2], -N, 0); t[2] && cH.drawImage(this.kx[2], -N, 0);
t[4] && cH.drawImage(this.kx[4], 0, N); t[4] && cH.drawImage(this.kx[4], 0, N);
// non-agression pact
t[5] && cH.drawImage(this.kx[5], N, N); t[5] && cH.drawImage(this.kx[5], N, N);
// point
t[6] && cH.drawImage(this.kx[6], 0, -N); t[6] && cH.drawImage(this.kx[6], 0, -N);
// target
t[7] && cH.drawImage(this.kx[7], N, -N); t[7] && cH.drawImage(this.kx[7], N, -N);
cH.imageSmoothingEnabled = !1; cH.imageSmoothingEnabled = !1;
cH.setTransform(1, 0, 0, 1, 0, 0) cH.setTransform(1, 0, 0, 1, 0, 0);
} }
} }
} }
@ -2461,16 +2511,15 @@ var setVarByName;
; ;
this.lN = function () { this.lN = function () {
100 <= ax[aw] || A(80, "Your balance is too low!", 9, 0, cK, hq, -1, !1) 100 <= ax[aw] || A(80, "Your balance is too low!", 9, 0, cK, hq, -1, !1)
} };
;
this.lM = function () { this.lM = function () {
A(80, "Boosting is disallowed in the first minute!", 9, 0, cK, hq, -1, !1) A(80, "Boosting is disallowed in the first minute!", 9, 0, cK, hq, -1, !1)
} };
; // Sending donation
this.n1 = function (G, M) { this.n1 = function (G, M) {
2 !== fP[aw] && A(200, "You exported " + eL.gF(G) + " resource" + (1 === G ? "" : "s") + " to " + gE[M] + ".", 30, M, "rgb(190,255,190)", hq, -1, !0) 2 !== fP[aw] && A(200, "You exported " + eL.gF(G) + " resource" + (1 === G ? "" : "s") + " to " + gE[M] + ".", 30, M, "rgb(190,255,190)", hq, -1, !0)
} };
; // Receiving donation
this.n3 = function (G, M) { this.n3 = function (G, M) {
if (2 !== fP[aw]) { if (2 !== fP[aw]) {
var Q = 2 === fP[M] || M >= cq; var Q = 2 === fP[M] || M >= cq;
@ -2478,8 +2527,7 @@ var setVarByName;
A(80 > R ? 80 : R, (Q ? "A bot" : gE[M]) + " supported you with " + eL.gF(G) + " resource" + (1 === G ? "" : "s") + ".", 31, M, gD, Q ? "rgba(205,205,205,0.9)" : "rgba(205,255,205,0.9)", -1, !0); A(80 > R ? 80 : R, (Q ? "A bot" : gE[M]) + " supported you with " + eL.gF(G) + " resource" + (1 === G ? "" : "s") + ".", 31, M, gD, Q ? "rgba(205,205,205,0.9)" : "rgba(205,255,205,0.9)", -1, !0);
B(31, q ? 4 : 6) B(31, q ? 4 : 6)
} }
} };
;
this.iq = function (G) { this.iq = function (G) {
var M, Q = c4.dU(); var M, Q = c4.dU();
for (M = 2; 0 <= M; M--) for (M = 2; 0 <= M; M--)
@ -2705,8 +2753,7 @@ var setVarByName;
t.clearRect(0, 0, this.c1, this.c1); t.clearRect(0, 0, this.c1, this.c1);
23 === k ? t.drawImage(hm.ky[2], 0, 0) : 36 === k ? t.drawImage(hm.ky[0], 0, 0) : 49 === k ? t.drawImage(hm.ky[1], 0, 0) : t.drawImage(x, this.c1 * g % (g === k ? this.na * this.c1 : 4E3), g === k ? as(g, this.na) * this.c1 : 0, this.c1, this.c1, 0, 0, this.c1, this.c1); 23 === k ? t.drawImage(hm.ky[2], 0, 0) : 36 === k ? t.drawImage(hm.ky[0], 0, 0) : 49 === k ? t.drawImage(hm.ky[1], 0, 0) : t.drawImage(x, this.c1 * g % (g === k ? this.na * this.c1 : 4E3), g === k ? as(g, this.na) * this.c1 : 0, this.c1, this.c1, 0, 0, this.c1, this.c1);
this.l0[k] = l this.l0[k] = l
} };
;
this.nr = function () { this.nr = function () {
this.l0[this.a6 - 5] = this.l0[26]; this.l0[this.a6 - 5] = this.l0[26];
this.l0[this.a6 - 4] = this.ns(this.a6 - 5, 2); this.l0[this.a6 - 4] = this.ns(this.a6 - 5, 2);
@ -4389,8 +4436,8 @@ var setVarByName;
return X !== T ? (X = T, return X !== T ? (X = T,
g(), g(),
c4.c5 = !0) : !1 c4.c5 = !0) : !1
} };
; // mouseClick
this.pO = function (S, O) { this.pO = function (S, O) {
if (!ba) if (!ba)
return !1; return !1;
@ -4404,11 +4451,11 @@ var setVarByName;
-1 !== T)) { -1 !== T)) {
var Y = ei[T + V]; var Y = ei[T + V];
T === y - 1 && sD[aw] >= V + y - 1 && (Y = aw); T === y - 1 && sD[aw] >= V + y - 1 && (Y = aw);
0 !== fB[Y] && eR.gc(Y, 800, !1, 0) //0 !== fB[Y] && eR.gc(Y, 800, !1, 0)
displayDonationsHistory(Y, gE);
} }
return !0 return !0
} };
;
this.pU = function (S, O, T) { this.pU = function (S, O, T) {
return ba ? !1 : z(S, O) ? (S = n(O), return ba ? !1 : z(S, O) ? (S = n(O),
S = sy(-1, S, y), S = sy(-1, S, y),
@ -4421,8 +4468,7 @@ var setVarByName;
g(), g(),
c4.c5 = !0), c4.c5 = !0),
!0) : !1 !0) : !1
} };
;
this.cG = function () { this.cG = function () {
cH.drawImage(A, m0, m0) cH.drawImage(A, m0, m0)
} }
@ -4844,13 +4890,18 @@ var setVarByName;
x -= x >= as(ax[g], 2) ? l : 0; x -= x >= as(ax[g], 2) ? l : 0;
var t = bU[k] * iz - ax[k]; var t = bU[k] * iz - ax[k];
0 >= t || (x = x > t ? t : x, 0 >= t || (x = x > t ? t : x,
g === aw && (e5.n1(x, k), // if the donating player is us, show a message and add to statistics
b0.b1[12] += l, g === aw && (e5.n1(x, k), b0.b1[12] += l, b0.b1[16] += x),
b0.b1[16] += x), // if the receiving player is us, show message and add to statistics
k === aw && (e5.n3(x, g), k === aw && (e5.n3(x, g), b0.b1[10] += x),
b0.b1[10] += x), // remove points (+tax) from donating player
ax[g] -= x + l, ax[g] -= x + l,
ax[k] += x) // add points to receiving player
ax[k] += x,
// track donations
((!gE[g].startsWith("[Bot] ")) && donationsTracker.logDonation(g,k,x))
//donationsTracker.logDonation(g,k,x)
)
} }
} }
function tl() { function tl() {
@ -7518,6 +7569,7 @@ var setVarByName;
this.z7 = document.createElement("INPUT"); this.z7 = document.createElement("INPUT");
this.z7.setAttribute("type", "file"); this.z7.setAttribute("type", "file");
this.z7.setAttribute("accept", ".gif,.jpg,.jpeg,.png,.json"); this.z7.setAttribute("accept", ".gif,.jpg,.jpeg,.png,.json");
this.z7.setAttribute("id", "inputfilebtn");
this.z7.style.position = "absolute"; this.z7.style.position = "absolute";
this.z7.style.color = this.me(255, 255, 255); this.z7.style.color = this.me(255, 255, 255);
this.lq(); this.lq();

View File

@ -51,7 +51,7 @@
</style> </style>
<!-- FX Client CSS --> <!-- FX Client CSS -->
<style> <style>
.settings { .window {
position: fixed; position: fixed;
background-color: rgba(0, 0, 0, 0.7); background-color: rgba(0, 0, 0, 0.7);
width: 90%; width: 90%;
@ -72,7 +72,7 @@
font-size: calc(14px + (0.6*(1vw+1vh+4))); font-size: calc(14px + (0.6*(1vw+1vh+4)));
transition: 0.2s; transition: 0.2s;
} }
.settings button, .settings input { .window button, .window input {
background-color: rgba(0, 0, 0, 0.7); background-color: rgba(0, 0, 0, 0.7);
color: white; color: white;
font-size: 20px; font-size: 20px;
@ -96,7 +96,7 @@
/*border: 1px solid white;*/ /*border: 1px solid white;*/
border-radius: 8px; border-radius: 8px;
} }
.settings input:focus { .window input:focus {
background-color: rgba(222, 222, 222, 0.36); background-color: rgba(222, 222, 222, 0.36);
/*border: 1px solid white;*/ /*border: 1px solid white;*/
border-radius: 8px; border-radius: 8px;
@ -105,17 +105,30 @@
transition: 0.2s transition: 0.2s
} }
</style> </style>
<!-- Styles for in-game stuff -->
<style>
.inputfilebtn {
padding: 10px;
}
</style>
</head> </head>
<body onload="aiCommand746(0);"> <body onload="aiCommand746(0);">
<canvas id="canvasA" width="128" height="128"></canvas> <canvas id="canvasA" width="128" height="128"></canvas>
<div class="settings" style="display:none"> <div class="window settings" style="display:none">
<h1>Settings</h1> <h1>Settings</h1>
Font name: <input id="settings_fontname" placeholder="Enter font name" value="Arial"><br> Font name: <input id="settings_fontname" placeholder="Enter font name" value="Arial"><br>
<br><button onclick="removeWins()">Reset Wins Counter</button><hr> <br><button onclick="removeWins()">Reset Wins Counter</button><hr>
<button onclick="settingsManager.resetAll()">Reset Settings</button> <button onclick="settingsManager.resetAll()">Reset Settings</button>
<button onclick="settingsManager.save()">Save Settings</button> <button onclick="settingsManager.save()">Save Settings</button>
</div> </div>
<div class="window" id="donationhistory" style="display:none">
<h1>Donation history for </h1>
<p>Note: donations from bots are not shown here</p>
<p id="donationhistory_text"></p>
</div>
<script src="game.js"></script> <script src="game.js"></script>
</body> </body>
</html> </html>

View File

@ -12,6 +12,7 @@ FX Client is the first Territorial.io client, targeting better User Interface an
8. Adds a text to display "Maximum Troops" 8. Adds a text to display "Maximum Troops"
9. Adds a win counter 9. Adds a win counter
10. Adds a settings menu from which the game font can be changed 10. Adds a settings menu from which the game font can be changed
11. Adds the ability to view the history of who donated to a player during the game
### Contact Us ### Contact Us
Our Website: https://fxclient.cf Our Website: https://fxclient.cf