Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit cef0eb9

Browse files
committed
cleanup
1 parent ef0484b commit cef0eb9

File tree

6 files changed

+66
-40
lines changed

6 files changed

+66
-40
lines changed

‎models/room/room.go‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"github.com/blobs-io/blobsgame/models/player"
77
"strconv"
88
"strings"
9+
"time"
910
)
1011

1112
const (
@@ -22,6 +23,7 @@ type Room struct {
2223
Players []player.Player `json:"players"`
2324
Items []item.Item `json:"items"`
2425
Mode uint8 `json:"mode"`
26+
State uint8 `json:"state"`
2527
CreatedAt int64 `json:"createdAt"`
2628
}
2729

@@ -32,6 +34,7 @@ func New(mode uint8) *Room {
3234
Mode: mode,
3335
}
3436
r.ID = strings.ToLower(r.ModeToString()) + strconv.Itoa(len(Rooms))
37+
r.CreatedAt = time.Now().UnixNano() / int64(time.Millisecond)
3538

3639
r.Players = make([]player.Player, 0)
3740
r.Items = make([]item.Item, 0)

‎public/game/index.html‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,10 @@ <h1 class="heading centered">Tip</h1>
5757
</div>
5858
</div>
5959
</body>
60+
<script src="/js/rest.js"></script>
6061
<script src="/js/sockets.js"></script>
6162
<script src="/js/particles.js"></script>
63+
<script src="/js/functions.js"></script>
6264
<script src="/js/Game.js"></script>
6365
<script>
6466
initParticles();

‎public/js/Game.ts‎

Lines changed: 38 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,15 @@ declare class RestClient {
1313
fetchPromotions(): Promise<any[]>;
1414
fetchUser(user: string): Promise<any>;
1515
fetchRooms(): Promise<any>;
16+
fetchRoom(id: string): Promise<any>;
17+
fetchPlayers(roomId: string): Promise<any>;
1618
switchBlob(newBlob: string): Promise<any>;
1719
redeemDailyBonus(): Promise<any>;
1820
ping(): Promise<number>;
1921
static extractSessionID(): string;
2022
}
23+
// functions.js
24+
declare function modeToString(mode: number): string;
2125

2226
const rest: RestClient = new RestClient(RestClient.extractSessionID(), "Session");
2327

@@ -64,7 +68,7 @@ function getRelativeCoordinates(x: number, y: number, ownBlob: {x: number, y: nu
6468
};
6569
}
6670

67-
const useSecureWS: boolean = !document.location.href.startsWith("http://localhost");
71+
const useSecureWS: boolean = !document.location.href.startsWith("http://");
6872

6973
// Phone controls
7074
if (["Android", "iOS"].some(v => window.navigator.userAgent.includes(v))) {
@@ -117,7 +121,7 @@ if (["Android", "iOS"].some(v => window.navigator.userAgent.includes(v))) {
117121
admin: createImage("../../assets/emblems/emblem_admin.png")
118122
};
119123
const details: any = {
120-
mode: getParameterByName("mode"),
124+
mode: parseInt(getParameterByName("mode"),10),
121125
id: getParameterByName("id"),
122126
singleplayer: false
123127
};
@@ -555,6 +559,10 @@ if (["Android", "iOS"].some(v => window.navigator.userAgent.includes(v))) {
555559
FFA: "ffa",
556560
ELIMINATION: "elimination"
557561
};
562+
static TypeID: any = {
563+
FFA: 0,
564+
ELIMINATION: 1
565+
};
558566
public type: string;
559567
public blobs: BlobObject[];
560568
public createdAt: number;
@@ -636,9 +644,9 @@ if (["Android", "iOS"].some(v => window.navigator.userAgent.includes(v))) {
636644
}
637645
}
638646

639-
if (!details.mode)
647+
if (isNaN(details.mode))
640648
details.mode = Room.Type.FFA;
641-
if (!details.id)
649+
if (details.id.length===0)
642650
details.id = "ffa1";
643651
let room: EliminationRoom | Room;
644652

@@ -1570,34 +1578,43 @@ if (["Android", "iOS"].some(v => window.navigator.userAgent.includes(v))) {
15701578
}
15711579

15721580

1573-
function modeToString(mode: string): string {
1574-
if (mode === "ffa") return "Free For All";
1575-
else if (mode === "elimination") return "Elimination";
1576-
return "";
1581+
function modeToFullString(mode: number): string {
1582+
switch (mode) {
1583+
case Room.TypeID.FFA:
1584+
return "Free For All";
1585+
break;
1586+
case Room.TypeID.ELIMINATION:
1587+
return "Elimination";
1588+
break;
1589+
default:
1590+
return "";
1591+
break;
1592+
}
15771593
}
15781594
// Last part
15791595
console.log("%c You know JavaScript / TypeScript? Contribute to blobs! https://github.com/blobs-io/blobs.live", "color: green");
15801596
(async(): Promise<any> => {
15811597
{
15821598
const headingElement: HTMLCollection = document.getElementsByClassName("heading");
15831599
if (headingElement && headingElement[1]) {
1584-
headingElement[1].innerHTML = modeToString(details.mode) || "Unknown Gamemode";
1600+
headingElement[1].innerHTML = modeToFullString(details.mode) || "Unknown Gamemode";
15851601
}
15861602
}
15871603
const bar = document.getElementById("bar-inside");
15881604
if (!bar) return;
1589-
fetch("/api/players/" + details.id).then(async res => {
1590-
const data: any = await res.json();
1591-
for(const player of data) {
1592-
const tier: any = getTier(player.br || 0);
1593-
const spanElement: HTMLElement = document.createElement("span");
1594-
spanElement.className = "player";
1595-
spanElement.innerHTML = `<img src="../assets/emblems/${tier.emblemFile}" class="tier-image" width="20" height="20" alt="Tier" /><span class="player-name" style="color: #${tier.colorCode};">${player.owner}</span> (${player.br} BR)</span>`;
1596-
const playersElement: HTMLElement | null = document.getElementById("players");
1597-
if (playersElement)
1598-
playersElement.appendChild(spanElement);
1599-
}
1600-
});
1605+
1606+
const data = await rest.fetchPlayers(details.id).then(v => v.json());
1607+
1608+
for(const player of data) {
1609+
const tier: any = getTier(player.br || 0);
1610+
const spanElement: HTMLElement = document.createElement("span");
1611+
spanElement.className = "player";
1612+
spanElement.innerHTML = `<img src="../assets/emblems/${tier.emblemFile}" class="tier-image" width="20" height="20" alt="Tier" /><span class="player-name" style="color: #${tier.colorCode};">${player.owner}</span> (${player.br} BR)</span>`;
1613+
const playersElement: HTMLElement | null = document.getElementById("players");
1614+
if (playersElement)
1615+
playersElement.appendChild(spanElement);
1616+
}
1617+
16011618
let lastTick: number = Date.now();
16021619
let itr: number = 0, val: number = 0;
16031620
const interval: number = window.setInterval(() => {

‎public/js/functions.js‎

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,6 @@ function getTier(br) {
2424
return result;
2525
}
2626

27-
function nom(attackBlob, target) {
28-
if (attackBlob.x < (target.x + 30) && attackBlob.x > (target.x - 30)) {
29-
if (attackBlob.y < (target.y + 30) && attackBlob.y > (target.y - 30)) {
30-
31-
target.health -= Math.floor(Math.random() * 10) + 30;
32-
if (target.health <= 0) {
33-
socket.emit("singleplayerNomKey", { attackBlob, target }, "ffa");
34-
target.health = 100;
35-
}
36-
}
37-
}
38-
}
39-
4027
function getTierByName(name) {
4128
switch (name) {
4229
case "bronze": return getTier(1000); break;
@@ -53,7 +40,16 @@ function parseDistance(dist) {
5340
else return (dist).toFixed(0);
5441
}
5542

56-
/* levelsystem helper functions/constants */
43+
const modes = {
44+
FFA: 0,
45+
Elimination: 1
46+
};
47+
48+
function modeToString(mode) {
49+
return (Object.entries(modes).find(v => v[1] === mode) || [])[0];
50+
}
51+
52+
/* level system helper functions/constants */
5753
const xpScale = 0.09;
5854

5955
function xpToLevel(xp) {

‎public/js/rest.js‎

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,15 @@ class RestClient {
1616
}
1717

1818
fetchRooms() {
19-
return fetch(`${this.api}/rooms`);
19+
return fetch(`${this.api}/rooms`)
20+
}
21+
22+
fetchRoom(id) {
23+
return fetch(`${this.api}/rooms/${id}`);
24+
}
25+
26+
fetchPlayers(roomId) {
27+
return fetch(`${this.api}/rooms/${roomId}/players`);
2028
}
2129

2230
switchBlob(newBlob) {

‎public/js/roomOverview.js‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ async function showOverview(guest, rest) {
99
else if (state === 1) return "state-countdown";
1010
else if (state === 2) return "state-ingame";
1111
}
12-
const rooms = await rest.fetchRooms();
12+
const rooms = await rest.fetchRooms().then(v=>v.json());
1313
const roomOverview = document.createElement("div"),
1414
closeBtn = document.createElement("button"),
1515
overviewHeader = document.createElement("span");
@@ -27,16 +27,16 @@ async function showOverview(guest, rest) {
2727
roomOverview.appendChild(closeBtn);
2828
roomOverview.appendChild(overviewHeader);
2929

30-
for (const room of rooms) {
30+
for (const room of Object.values(rooms)) {
3131
const roomEntry = document.createElement("div"),
3232
roomLabel = document.createElement("span"),
3333
roomName = document.createElement("span"),
3434
playerCount = document.createElement("span"),
3535
stateEl = document.createElement("span"),
3636
joinLink = document.createElement("a");
3737
roomEntry.className = "room-entry";
38-
roomLabel.className = "room-label label-" + room.mode;
39-
roomLabel.innerText = room.mode.toUpperCase();
38+
roomLabel.className = "room-label label-" + modeToString(room.mode).toLowerCase();
39+
roomLabel.innerText = modeToString(room.mode).toUpperCase();
4040
roomName.className = "room-name";
4141
roomName.innerText = room.id.toUpperCase();
4242
playerCount.className = "player-count";

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /