Skip to content

Commit ee5fd60

Browse files
authored
Merge pull request #110 from tiny-devs/dev
Release 0.6.0
2 parents 8eeef7a + 0eb7e12 commit ee5fd60

40 files changed

+949
-115
lines changed

client/public/bundle.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

client/public/index.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,9 @@ <h3 id="coins">Gold: 0</h3>
9292
<h3 id="atk-text">atk: 0</h3>
9393
<h3 id="def-text">def: 0</h3>
9494
</div>
95+
<div id="exit">
96+
<input type="button" value="exit" id="exit-btn"></input>
97+
</div>
9598
</div>
9699
</div>
97100
</div>
@@ -132,6 +135,7 @@ <h3 id="def-text">def: 0</h3>
132135
}
133136

134137
#chat-message {
138+
margin-top: 15px;
135139
width: 70%;
136140
}
137141

client/src/board/layers/SpritesLayer.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,13 @@ export class SpritesLayer {
120120
})
121121
}
122122

123+
updatePlayerId(oldId: string, newId: string) {
124+
const index = this.players.findIndex((x) => x.id === oldId)
125+
if (index != -1) {
126+
this.players[index].id = newId
127+
}
128+
}
129+
123130
getPlayerById(id: string) {
124131
return this.players.find((x) => x.id === id)
125132
}

client/src/models/Enums.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,12 @@ export enum Command {
2525
Message = 17,
2626
Dialog = 18,
2727
Rank = 19,
28-
Chat = 20
28+
Chat = 20,
29+
Save = 21,
30+
Load = 22,
31+
UpdatePlayerId = 23,
32+
Exit = 24,
33+
EraseSave = 25
2934
}
3035

3136
export enum Rooms {

client/src/parser/ParseLoad.ts

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
import { ItemsIds } from "../models/Enums"
2+
3+
export class ParseLoad {
4+
public id: string
5+
public hp: number
6+
public maxHp: number
7+
public attack: number
8+
public defense: number
9+
public level: number
10+
public xp: number
11+
public xpNeeded: number
12+
public itemsIds: ItemsIds[]
13+
public gearHead: ItemsIds | null
14+
public gearTorso: ItemsIds | null
15+
public gearLegs: ItemsIds | null
16+
public gearWeapon: ItemsIds | null
17+
18+
constructor(data: string) {
19+
const parsedData = this.parseString(data)
20+
21+
this.id = parsedData[0][1]
22+
this.hp = +parsedData[0][2]
23+
this.maxHp = +parsedData[0][3]
24+
this.attack = +parsedData[0][4]
25+
this.defense = +parsedData[0][5]
26+
this.level = +parsedData[0][6]
27+
this.xp = +parsedData[0][7]
28+
this.xpNeeded = +parsedData[0][8]
29+
30+
this.itemsIds = parsedData[1]
31+
32+
if (parsedData[2][0] != -1) {
33+
this.gearHead = parsedData[2][0]
34+
} else {
35+
this.gearHead = null
36+
}
37+
if (parsedData[2][1] != -1) {
38+
this.gearTorso = parsedData[2][1]
39+
} else {
40+
this.gearTorso = null
41+
}
42+
if (parsedData[2][2] != -1) {
43+
this.gearLegs = parsedData[2][2]
44+
} else {
45+
this.gearLegs = null
46+
}
47+
if (parsedData[2][3] != -1) {
48+
this.gearWeapon = parsedData[2][3]
49+
} else {
50+
this.gearWeapon = null
51+
}
52+
}
53+
54+
private parseString(eventDataString: string): any[][] {
55+
const allData = eventDataString.split('@')
56+
57+
const statsData = allData[0].split(',')
58+
59+
let itemsData = []
60+
if (allData[1]) {
61+
const itemsDataStrings = allData[1].split(',')
62+
for (const itemId of itemsDataStrings) {
63+
if (itemId != '') {
64+
itemsData.push(+itemId)
65+
}
66+
}
67+
}
68+
69+
let gearData = []
70+
if (allData[2]) {
71+
for (let i=2; i<6;i++) {
72+
if (allData[i] != 'empty') {
73+
gearData.push(+allData[i])
74+
} else {
75+
gearData.push(-1)
76+
}
77+
}
78+
}
79+
80+
return [statsData,itemsData,gearData]
81+
}
82+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
export class ParsePlayerIdUpdate {
2+
public oldId: string
3+
public newId: string
4+
5+
constructor(data: string) {
6+
const playerIdData = this.parseString(data)
7+
8+
this.oldId = playerIdData[1]
9+
this.newId = playerIdData[2]
10+
}
11+
12+
private parseString(eventDataString: string) {
13+
return eventDataString.split(',')
14+
}
15+
}

client/src/parser/ParseSave.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
export class ParseSave {
2+
public playerDataHex: string
3+
4+
constructor(data: string) {
5+
const saveData = this.parseString(data)
6+
7+
this.playerDataHex = saveData[1]
8+
}
9+
10+
private parseString(eventDataString: string) {
11+
return eventDataString.split(',')
12+
}
13+
}

client/src/parser/Parser.ts

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ import { ParseMessage } from './ParseMessage'
1919
import { ParseRank } from './ParseRank'
2020
import { ParseDialog } from './ParseDialog'
2121
import { ParseChat } from './ParseChat'
22+
import { ParseSave } from './ParseSave'
23+
import { ParseLoad } from './ParseLoad'
24+
import { ParsePlayerIdUpdate } from './ParsePlayerIdUpdate'
2225

2326
export class Parser {
2427
private client: Client
@@ -83,6 +86,21 @@ export class Parser {
8386
case Command.Chat:
8487
this.parseChat(data)
8588
break
89+
case Command.Save:
90+
this.parseSave(data)
91+
break
92+
case Command.Load:
93+
this.parseLoad(data)
94+
break
95+
case Command.UpdatePlayerId:
96+
this.parseIdUpdate(data)
97+
break
98+
case Command.Exit:
99+
this.parseExit(data)
100+
break
101+
case Command.EraseSave:
102+
this.client.resetPlayerData()
103+
break
86104
case Command.Error:
87105
this.parseError(data)
88106
break
@@ -221,4 +239,28 @@ export class Parser {
221239

222240
this.client.displayChat(chatData.message, chatData.playerId)
223241
}
242+
243+
private parseSave(data: string) {
244+
const saveData = new ParseSave(data)
245+
246+
this.client.savePlayerData(saveData.playerDataHex)
247+
}
248+
249+
private parseLoad(data: string) {
250+
const loadData = new ParseLoad(data)
251+
252+
this.client.loadPlayerData(loadData)
253+
}
254+
255+
private parseExit(data: string) {
256+
const saveData = new ParseSave(data)
257+
258+
this.client.exitConfirmed(saveData.playerDataHex)
259+
}
260+
261+
private parseIdUpdate(data: string) {
262+
const updateIdData = new ParsePlayerIdUpdate(data)
263+
264+
this.client.updatePlayerId(updateIdData)
265+
}
224266
}

0 commit comments

Comments
 (0)