chichilku3 15.0.2 → 15.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/client/client.rb +12 -12
- data/lib/client/gui.rb +15 -10
- data/lib/client/scoreboard.rb +1 -0
- data/lib/external/gosu/text.rb +4 -3
- data/lib/server/chichilku3_server.rb +5 -7
- data/lib/server/gamelogic.rb +29 -1
- data/lib/share/config.rb +4 -8
- data/lib/share/console.rb +1 -1
- data/lib/share/game_map.rb +11 -15
- data/lib/share/network.rb +2 -2
- data/lib/share/player.rb +3 -3
- metadata +8 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f68501431c234014c55d50ecf62ad13d9cc923354d4a5389d06f6172bcccaf27
|
4
|
+
data.tar.gz: 9e1f59900648b0cabf586a002ac1ea132592e000e50722d4d2add2545d811cd0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e588e44b4a93cc846ecf4d3b9eac59ddb265ea8501792a105bf2a1b68d586d0022c798a72d523e123ce29c93b5e42b64be3c528e1ddff9cbfc8dfa93d02b6b99
|
7
|
+
data.tar.gz: 542b61fc91fd62af1dd92c71a3b046b2558ded0f5edfd59a2ad5710c814b82c869e63af7f3a4524864ce1e400db6be83f862176ed133f9a15b9bc8c545f6372e
|
data/lib/client/client.rb
CHANGED
@@ -95,14 +95,14 @@ class Client
|
|
95
95
|
@recording_file = 'autorec.txt'
|
96
96
|
rec_file = "#{@cfg.chichilku3_dir}recordings/#{@recording_file}"
|
97
97
|
@is_recording = true
|
98
|
-
|
98
|
+
FileUtils.rm_rf(rec_file)
|
99
99
|
end
|
100
100
|
|
101
101
|
def recording_record_tick(data)
|
102
102
|
return unless @is_recording
|
103
103
|
|
104
104
|
recording_file = "#{@cfg.chichilku3_dir}recordings/#{@recording_file}"
|
105
|
-
|
105
|
+
File.write(recording_file, "#{data}\n", mode: 'a')
|
106
106
|
end
|
107
107
|
|
108
108
|
def recording_playback_tick
|
@@ -117,7 +117,7 @@ class Client
|
|
117
117
|
@flags[:skip] = false
|
118
118
|
|
119
119
|
# save protocol and cut it off
|
120
|
-
msg = handle_protocol(data[0].to_i, data[1], data[2
|
120
|
+
msg = handle_protocol(data[0].to_i, data[1], data[2..])
|
121
121
|
[@players, @flags, msg, [@tick, @recording_ticks_len]]
|
122
122
|
end
|
123
123
|
|
@@ -138,7 +138,7 @@ class Client
|
|
138
138
|
recording_record_tick(data)
|
139
139
|
|
140
140
|
# save protocol and cut it off
|
141
|
-
msg = handle_protocol(data[0].to_i, data[1], data[2
|
141
|
+
msg = handle_protocol(data[0].to_i, data[1], data[2..])
|
142
142
|
[@players, @flags, msg, @extra]
|
143
143
|
end
|
144
144
|
|
@@ -154,7 +154,7 @@ class Client
|
|
154
154
|
case protocol
|
155
155
|
when 0 # error packet
|
156
156
|
code = data[0..2]
|
157
|
-
error_msg = data[3
|
157
|
+
error_msg = data[3..]
|
158
158
|
case code
|
159
159
|
when NET_ERR_FULL
|
160
160
|
@console.log 'server is full.'
|
@@ -194,7 +194,7 @@ class Client
|
|
194
194
|
@game_map = GameMap.new(@console, @cfg, nil, method(:finished_download_callback), checksum)
|
195
195
|
when 6 # map download init
|
196
196
|
size = net_unpack_bigint(data[0..5])
|
197
|
-
mapname = data[6
|
197
|
+
mapname = data[6..].strip
|
198
198
|
@game_map.set_name(mapname)
|
199
199
|
@game_map.set_size(size)
|
200
200
|
accept = '0'
|
@@ -246,7 +246,7 @@ class Client
|
|
246
246
|
@force_send = nil
|
247
247
|
end
|
248
248
|
|
249
|
-
data = "#{protocol}l#{@id.to_s(16)}#{data.join
|
249
|
+
data = "#{protocol}l#{@id.to_s(16)}#{data.join}"
|
250
250
|
net_write(data)
|
251
251
|
end
|
252
252
|
|
@@ -322,7 +322,7 @@ class Client
|
|
322
322
|
# 3 0 00 00000 00 00000 00 00000 000
|
323
323
|
playercount = net_unpack_int(data[0])
|
324
324
|
@flags[:gamestate] = data[1]
|
325
|
-
data = data[2
|
325
|
+
data = data[2..]
|
326
326
|
p_strs = protocol_names_to_player_strs(playercount, data)
|
327
327
|
protocol_names_strs_to_objs(p_strs)
|
328
328
|
end
|
@@ -331,7 +331,7 @@ class Client
|
|
331
331
|
players = []
|
332
332
|
used_slots.times do |index|
|
333
333
|
size = NAME_LEN + 2 # id|score|name
|
334
|
-
players[index] = data[index * size..index * size + size - 1]
|
334
|
+
players[index] = data[index * size..(index * size) + size - 1]
|
335
335
|
end
|
336
336
|
players
|
337
337
|
end
|
@@ -341,7 +341,7 @@ class Client
|
|
341
341
|
player_strs.each do |player_str|
|
342
342
|
id = player_str[0].to_i(16)
|
343
343
|
score = net_unpack_int(player_str[1])
|
344
|
-
name = player_str[2
|
344
|
+
name = player_str[2..].strip
|
345
345
|
players << Player.new(id, 0, 0, score, name) unless id.zero?
|
346
346
|
end
|
347
347
|
# debug
|
@@ -359,7 +359,7 @@ class Client
|
|
359
359
|
# gamestate = data[1].to_i # save gamestate
|
360
360
|
@flags[:gamestate] = data[1]
|
361
361
|
# @console.log "gamestate: " + @flags[:gamestate]
|
362
|
-
data = data[2
|
362
|
+
data = data[2..] # cut slots and gamestate off
|
363
363
|
players = server_package_to_player_strs(used_slots, data)
|
364
364
|
# @console.log "players: \n#{players}"
|
365
365
|
player_strs_to_objects(players)
|
@@ -368,7 +368,7 @@ class Client
|
|
368
368
|
def server_package_to_player_strs(used_slots, data)
|
369
369
|
players = []
|
370
370
|
used_slots.times do |index|
|
371
|
-
players[index] = data[index * PLAYER_PACKAGE_LEN..index * PLAYER_PACKAGE_LEN + PLAYER_PACKAGE_LEN - 1]
|
371
|
+
players[index] = data[index * PLAYER_PACKAGE_LEN..(index * PLAYER_PACKAGE_LEN) + PLAYER_PACKAGE_LEN - 1]
|
372
372
|
end
|
373
373
|
players
|
374
374
|
end
|
data/lib/client/gui.rb
CHANGED
@@ -250,7 +250,7 @@ class Gui < Gosu::Window
|
|
250
250
|
return
|
251
251
|
end
|
252
252
|
end
|
253
|
-
net_request = '0000'.
|
253
|
+
net_request = '0000'.chars
|
254
254
|
net_request << '!!!!'
|
255
255
|
protocol = 2
|
256
256
|
|
@@ -259,7 +259,7 @@ class Gui < Gosu::Window
|
|
259
259
|
unless msg.nil?
|
260
260
|
# @console.dbg "rawmsg: #{msg}"
|
261
261
|
msg = msg.ljust(8, ' ')
|
262
|
-
net_request = msg[0..CMD_LEN].
|
262
|
+
net_request = msg[0..CMD_LEN].chars
|
263
263
|
# @console.dbg "prepedmsg: #{net_request}"
|
264
264
|
protocol = 4
|
265
265
|
end
|
@@ -305,7 +305,7 @@ class Gui < Gosu::Window
|
|
305
305
|
type = msg[0]
|
306
306
|
case type
|
307
307
|
when 0
|
308
|
-
@net_err = msg[1
|
308
|
+
@net_err = msg[1..]
|
309
309
|
@state = STATE_ERROR
|
310
310
|
when 1
|
311
311
|
@server_chat_msg = msg[1]
|
@@ -384,7 +384,7 @@ class Gui < Gosu::Window
|
|
384
384
|
return unless @is_debug
|
385
385
|
|
386
386
|
draw_rect(x, y, 4 * s, 4 * s, 0xFFFF0000, 1)
|
387
|
-
draw_rect(x + 1 * s, y + 1 * s, 2 * s, 2 * s, 0xFF00FF00, 1)
|
387
|
+
draw_rect(x + (1 * s), y + (1 * s), 2 * s, 2 * s, 0xFF00FF00, 1)
|
388
388
|
end
|
389
389
|
|
390
390
|
def draw_debug_gametiles
|
@@ -449,10 +449,10 @@ class Gui < Gosu::Window
|
|
449
449
|
@stick_images[player.img_index].draw(player.x, player.y, 0, 0.5, 0.5)
|
450
450
|
x = player.aim_x - player.x
|
451
451
|
y = player.aim_y - player.y
|
452
|
-
rot = Math.atan2(x, y) * 180 / Math::PI * -1 + 90 * -1
|
453
|
-
rot2 = Math.atan2(x, y) * 180 / Math::PI * -1 + 270 * -1
|
454
|
-
stick_center_x = player.x + TILE_SIZE / 4
|
455
|
-
stick_center_y = player.y + TILE_SIZE / 2
|
452
|
+
rot = (Math.atan2(x, y) * 180 / Math::PI * -1) + (90 * -1)
|
453
|
+
rot2 = (Math.atan2(x, y) * 180 / Math::PI * -1) + (270 * -1)
|
454
|
+
stick_center_x = player.x + (TILE_SIZE / 4)
|
455
|
+
stick_center_y = player.y + (TILE_SIZE / 2)
|
456
456
|
d = -8
|
457
457
|
d += player.state[:fire] * 3
|
458
458
|
arr_x = stick_center_x + (d * Math.cos((rot2 + 180) / 180 * Math::PI))
|
@@ -497,7 +497,7 @@ class Gui < Gosu::Window
|
|
497
497
|
next unless @net_client.game_map&.ready
|
498
498
|
|
499
499
|
unless @net_client.game_map.grass?(player.x / TILE_SIZE, player.y / TILE_SIZE)
|
500
|
-
@font.draw_text(player.name, player.x - (TILE_SIZE / 6), player.y - TILE_SIZE / 2, 0, 1, 1, 0xff_000000)
|
500
|
+
@font.draw_text(player.name, player.x - (TILE_SIZE / 6), player.y - (TILE_SIZE / 2), 0, 1, 1, 0xff_000000)
|
501
501
|
end
|
502
502
|
end
|
503
503
|
|
@@ -538,6 +538,11 @@ class Gui < Gosu::Window
|
|
538
538
|
|
539
539
|
draw_events
|
540
540
|
|
541
|
+
if @flags[:gamestate] == 'e'
|
542
|
+
@font.draw_text('GAME OVER', (WINDOW_SIZE_X / 2) - 160, 20, 0, 3, 3)
|
543
|
+
@is_scoreboard = true
|
544
|
+
end
|
545
|
+
|
541
546
|
draw_scoreboard(WINDOW_SIZE_X, WINDOW_SIZE_Y, @players, @font, @is_debug) if @is_scoreboard
|
542
547
|
if @state == STATE_REC_PLAYBACK && !@demo_ticks.nil?
|
543
548
|
@font.draw_text("#{@demo_ticks[0]}/#{@demo_ticks[1]}", 10, WINDOW_SIZE_Y - 20, 0)
|
@@ -548,7 +553,7 @@ class Gui < Gosu::Window
|
|
548
553
|
@connecting_image.draw(0, 0, 0)
|
549
554
|
if [NET_ERR_SERVER_OUTDATED, NET_ERR_CLIENT_OUTDATED].include?(net_err_code)
|
550
555
|
server_version = net_err_msg[0..4]
|
551
|
-
net_err_msg = net_err_msg[5
|
556
|
+
net_err_msg = net_err_msg[5..]
|
552
557
|
@font.draw_text("Server version: #{server_version} Your version: #{GAME_VERSION}", 50, 150, 0, 2, 2)
|
553
558
|
end
|
554
559
|
@font.draw_text((NET_ERR[net_err_code]).to_s, 50, 30, 0, 5, 5)
|
data/lib/client/scoreboard.rb
CHANGED
@@ -18,6 +18,7 @@ def draw_scoreboard(win_size_x, win_size_y, players, font, debug)
|
|
18
18
|
# row borders
|
19
19
|
draw_rect(pad_x + 3, pad_y + (i * slot_height), size_x - 6, 3, 0xaa000000)
|
20
20
|
end
|
21
|
+
players.sort_by! { |player| -player.score }
|
21
22
|
players.each_with_index do |player, i|
|
22
23
|
score_offset = text_scale * 10 * player.score.to_s.length
|
23
24
|
dbg = 0
|
data/lib/external/gosu/text.rb
CHANGED
@@ -45,9 +45,10 @@ class TextField < Gosu::TextInput
|
|
45
45
|
INACTIVE_COLOR
|
46
46
|
end
|
47
47
|
# ChillerDragon's epic shadow to at least have edited the stolen sample a lil bit
|
48
|
-
Gosu.draw_rect (x - PADDING) + 5, (y - PADDING) + 5, WIDTH + 2 * PADDING, height + 2 * PADDING, INACTIVE_COLOR,
|
49
|
-
|
50
|
-
Gosu.draw_rect x - PADDING, y - PADDING, WIDTH + 2 * PADDING, height + 2 * PADDING, color, z
|
48
|
+
Gosu.draw_rect (x - PADDING) + 5, (y - PADDING) + 5, WIDTH + (2 * PADDING), height + (2 * PADDING), INACTIVE_COLOR,
|
49
|
+
z
|
50
|
+
Gosu.draw_rect x - PADDING, y - PADDING, WIDTH + (2 * PADDING), height + (2 * PADDING), color, z
|
51
|
+
Gosu.draw_rect x - PADDING, y - PADDING, WIDTH + (2 * PADDING), height + (2 * PADDING), color, z
|
51
52
|
|
52
53
|
# Calculate the position of the caret and the selection start.
|
53
54
|
pos_x = x + FONT.text_width(text[0...caret_pos])
|
@@ -66,9 +66,7 @@ class ServerCore
|
|
66
66
|
end
|
67
67
|
|
68
68
|
# protocol 3 name prot
|
69
|
-
#
|
70
|
-
# |
|
71
|
-
pck = "3l#{net_pack_int(@players.count)}g"
|
69
|
+
pck = "3l#{net_pack_int(@players.count)}#{@gamelogic.gamestate}"
|
72
70
|
@players.each do |p|
|
73
71
|
pck += p.to_n_pck
|
74
72
|
end
|
@@ -103,7 +101,7 @@ class ServerCore
|
|
103
101
|
def players_to_packet
|
104
102
|
# player count
|
105
103
|
packet = net_pack_int(@players.empty? ? 0 : @players.count)
|
106
|
-
packet +=
|
104
|
+
packet += @gamelogic.gamestate
|
107
105
|
@players.each do |player|
|
108
106
|
packet += player.to_s
|
109
107
|
end
|
@@ -113,7 +111,7 @@ class ServerCore
|
|
113
111
|
def update_pck(data, dt)
|
114
112
|
id = data[0].to_i(16)
|
115
113
|
@console.dbg "[UPDATE] got player with id: #{id}"
|
116
|
-
@players = @gamelogic.handle_client_requests(@game_map, data[1
|
114
|
+
@players = @gamelogic.handle_client_requests(@game_map, data[1..], id, @players, dt)
|
117
115
|
nil # defaults to normal update pck
|
118
116
|
end
|
119
117
|
|
@@ -162,7 +160,7 @@ class ServerCore
|
|
162
160
|
|
163
161
|
def command_package(data, client)
|
164
162
|
id = data[0..1].to_i(16)
|
165
|
-
cmd = data[1
|
163
|
+
cmd = data[1..].strip
|
166
164
|
@console.log "[chat] ID=#{id} command='#{cmd}'"
|
167
165
|
msg = "server_recived_cmd: #{cmd}"
|
168
166
|
msg = msg.ljust(SERVER_PACKAGE_LEN - 2, '0')
|
@@ -243,7 +241,7 @@ class ServerCore
|
|
243
241
|
end
|
244
242
|
|
245
243
|
def handle_client_data(client, data, ip, dt)
|
246
|
-
response = handle_protocol(client, data[0].to_i, data[1], data[2
|
244
|
+
response = handle_protocol(client, data[0].to_i, data[1], data[2..], ip, dt)
|
247
245
|
# the response is a direct respond to an protocol
|
248
246
|
# everything above this could override important responds
|
249
247
|
# like id assignment
|
data/lib/server/gamelogic.rb
CHANGED
@@ -4,9 +4,14 @@ require_relative '../share/math'
|
|
4
4
|
|
5
5
|
# high level game logic
|
6
6
|
class GameLogic
|
7
|
+
attr_reader :gamestate
|
8
|
+
|
7
9
|
def initialize(console)
|
8
10
|
@console = console
|
9
11
|
@alive_players = 0
|
12
|
+
@scorelimit = 10
|
13
|
+
@gamestate = 'g'
|
14
|
+
@ticks_till_new_round = 0
|
10
15
|
end
|
11
16
|
|
12
17
|
def on_player_connect(client, players)
|
@@ -34,7 +39,27 @@ class GameLogic
|
|
34
39
|
end
|
35
40
|
end
|
36
41
|
|
42
|
+
def start_round(players)
|
43
|
+
@gamestate = 'g'
|
44
|
+
players.each do |player|
|
45
|
+
player.score = 0
|
46
|
+
player.die
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def end_round
|
51
|
+
@console.log 'round end'
|
52
|
+
@gamestate = 'e'
|
53
|
+
@ticks_till_new_round = (5 / MAX_TICK_SPEED).to_i
|
54
|
+
end
|
55
|
+
|
37
56
|
def tick(game_map, players, dt, tick)
|
57
|
+
if @gamestate == 'e'
|
58
|
+
@ticks_till_new_round -= 1
|
59
|
+
return players if @ticks_till_new_round.positive?
|
60
|
+
|
61
|
+
start_round(players)
|
62
|
+
end
|
38
63
|
players.each do |player|
|
39
64
|
# reset values (should stay first)
|
40
65
|
player.reset_collide
|
@@ -51,7 +76,10 @@ class GameLogic
|
|
51
76
|
# player collsions works
|
52
77
|
# but it eats performance and delays jumping
|
53
78
|
check_collide(players, player)
|
79
|
+
|
80
|
+
end_round if player.score >= @scorelimit
|
54
81
|
end
|
82
|
+
players
|
55
83
|
end
|
56
84
|
|
57
85
|
def game_map_collision_vertical(game_map, player)
|
@@ -153,7 +181,7 @@ class GameLogic
|
|
153
181
|
dy = (player.aim_y - player.y).clamp(-200, 200) / 20
|
154
182
|
dx *= (player.fire_ticks / 10).clamp(1, 3)
|
155
183
|
dy *= (player.fire_ticks / 10).clamp(1, 3)
|
156
|
-
player.projectile.fire(player.x + TILE_SIZE / 4, player.y + TILE_SIZE / 2, dx, dy, player)
|
184
|
+
player.projectile.fire(player.x + (TILE_SIZE / 4), player.y + (TILE_SIZE / 2), dx, dy, player)
|
157
185
|
end
|
158
186
|
player.fire_ticks = 0
|
159
187
|
player.state[:fire] = 0
|
data/lib/share/config.rb
CHANGED
@@ -11,9 +11,9 @@ class Config
|
|
11
11
|
def initialize(console, file)
|
12
12
|
@chichilku3_dir = ''
|
13
13
|
if OS.linux?
|
14
|
-
@chichilku3_dir = "#{
|
14
|
+
@chichilku3_dir = "#{Dir.home}/.chichilku/chichilku3/"
|
15
15
|
elsif OS.mac?
|
16
|
-
@chichilku3_dir = "#{
|
16
|
+
@chichilku3_dir = "#{Dir.home}/Library/Application Support/chichilku/chichilku3/"
|
17
17
|
# elsif OS.windows?
|
18
18
|
# @chichilku3_dir = "%APPDATA%\\chichilku\\chichilku3\\"
|
19
19
|
else
|
@@ -44,9 +44,7 @@ class Config
|
|
44
44
|
return if File.file?(to)
|
45
45
|
|
46
46
|
tmp = JSON.parse(File.read(from))
|
47
|
-
File.
|
48
|
-
f.write(tmp.to_json)
|
49
|
-
end
|
47
|
+
File.write(to, tmp.to_json)
|
50
48
|
end
|
51
49
|
|
52
50
|
def sanitize_data(data)
|
@@ -61,8 +59,6 @@ class Config
|
|
61
59
|
end
|
62
60
|
|
63
61
|
def save
|
64
|
-
File.
|
65
|
-
f.write(JSON.pretty_generate(data))
|
66
|
-
end
|
62
|
+
File.write(@file, JSON.pretty_generate(data))
|
67
63
|
end
|
68
64
|
end
|
data/lib/share/console.rb
CHANGED
data/lib/share/game_map.rb
CHANGED
@@ -103,8 +103,8 @@ class GameMap
|
|
103
103
|
x = 0
|
104
104
|
gamerow.chars.each do |tile|
|
105
105
|
if tile == 'i'
|
106
|
-
grass[:x2] = x * TILE_SIZE + TILE_SIZE
|
107
|
-
grass[:y] = y * TILE_SIZE + TILE_SIZE / 2 + 2
|
106
|
+
grass[:x2] = (x * TILE_SIZE) + TILE_SIZE
|
107
|
+
grass[:y] = (y * TILE_SIZE) + (TILE_SIZE / 2) + 2
|
108
108
|
grass[:x1] = x * TILE_SIZE if grass[:x1].nil?
|
109
109
|
else
|
110
110
|
@grass_rows.push(grass) unless grass == {}
|
@@ -140,15 +140,15 @@ class GameMap
|
|
140
140
|
end
|
141
141
|
|
142
142
|
def death?(x, y)
|
143
|
-
{ x
|
143
|
+
{ x:, y: } if @gametiles[y][x] == 'X'
|
144
144
|
end
|
145
145
|
|
146
146
|
def collision?(x, y)
|
147
|
-
{ x
|
147
|
+
{ x:, y: } if @gametiles[y][x] == 'O'
|
148
148
|
end
|
149
149
|
|
150
150
|
def grass?(x, y)
|
151
|
-
{ x
|
151
|
+
{ x:, y: } if @gametiles[y][x] == 'i'
|
152
152
|
end
|
153
153
|
|
154
154
|
# SERVER
|
@@ -177,7 +177,7 @@ class GameMap
|
|
177
177
|
def zip
|
178
178
|
map_dir = "#{@cfg.chichilku3_dir}maps/#{@mapname}"
|
179
179
|
map_zip = "#{@cfg.chichilku3_dir}maps/#{@mapname}.zip"
|
180
|
-
|
180
|
+
FileUtils.rm_rf map_zip
|
181
181
|
|
182
182
|
@console.log "archiving map '#{map_zip}' ..."
|
183
183
|
Zip::File.open(map_zip, Zip::File::CREATE) do |zipfile|
|
@@ -213,7 +213,7 @@ class GameMap
|
|
213
213
|
return nil if @mapname == '' || @mapname.nil?
|
214
214
|
|
215
215
|
if offset + size > @b64_size
|
216
|
-
@b64_data[offset
|
216
|
+
@b64_data[offset..].ljust(size, ' ')
|
217
217
|
else
|
218
218
|
@b64_data[offset...offset + size]
|
219
219
|
end
|
@@ -227,14 +227,14 @@ class GameMap
|
|
227
227
|
|
228
228
|
def prepare_download
|
229
229
|
@tmpfile = "#{@cfg.chichilku3_dir}tmp/#{@mapname}"
|
230
|
-
|
230
|
+
FileUtils.rm_rf @tmpfile
|
231
231
|
end
|
232
232
|
|
233
233
|
def download(data)
|
234
234
|
data.strip!
|
235
235
|
@progress += data.size
|
236
236
|
@console.dbg "downloading #{@progress} / #{@b64_size} ..."
|
237
|
-
|
237
|
+
File.write(@tmpfile, data, mode: 'a')
|
238
238
|
if @progress >= @b64_size
|
239
239
|
@console.log 'finished download'
|
240
240
|
@callback.call(load)
|
@@ -260,7 +260,7 @@ class GameMap
|
|
260
260
|
end
|
261
261
|
end
|
262
262
|
end
|
263
|
-
|
263
|
+
FileUtils.rm_rf map_archive
|
264
264
|
map_dir
|
265
265
|
end
|
266
266
|
|
@@ -268,11 +268,7 @@ class GameMap
|
|
268
268
|
outfile = "#{dl_path}.zip"
|
269
269
|
@console.log 'converting downloaded map ...'
|
270
270
|
File.open(@tmpfile, 'rb') do |map_encoded|
|
271
|
-
File.
|
272
|
-
map_png.write(
|
273
|
-
Base64.decode64(map_encoded.read)
|
274
|
-
)
|
275
|
-
end
|
271
|
+
File.binwrite(outfile, Base64.decode64(map_encoded.read))
|
276
272
|
end
|
277
273
|
unzip
|
278
274
|
end
|
data/lib/share/network.rb
CHANGED
@@ -26,7 +26,7 @@ MAX_MAPNAME_LEN = 43
|
|
26
26
|
MAX_CLIENTS = 12
|
27
27
|
PLAYER_PACKAGE_LEN = 16
|
28
28
|
CLIENT_PACKAGE_LEN = 11 # used by server
|
29
|
-
SERVER_PACKAGE_LEN = MAX_CLIENTS * PLAYER_PACKAGE_LEN + 4 # used by client
|
29
|
+
SERVER_PACKAGE_LEN = (MAX_CLIENTS * PLAYER_PACKAGE_LEN) + 4 # used by client
|
30
30
|
|
31
31
|
MAX_TIMEOUT = 5
|
32
32
|
MAX_TICK_SPEED = 0.01 # the lower the faster client and server tick
|
@@ -135,7 +135,7 @@ def net_unpack_bigint(net_int)
|
|
135
135
|
if i.zero?
|
136
136
|
sum = net_unpack_int(c)
|
137
137
|
else
|
138
|
-
sum += net_unpack_int(c) * (NET_MAX_INT + 1)**i
|
138
|
+
sum += net_unpack_int(c) * ((NET_MAX_INT + 1)**i)
|
139
139
|
end
|
140
140
|
end
|
141
141
|
sum
|
data/lib/share/player.rb
CHANGED
@@ -64,11 +64,11 @@ class Player
|
|
64
64
|
return if @tick % 5 != 0
|
65
65
|
|
66
66
|
new_x = true if @x != @last_x
|
67
|
-
if @y
|
67
|
+
if @y == @last_y
|
68
|
+
@not_changed_y += 1
|
69
|
+
else
|
68
70
|
new_y = true
|
69
71
|
@not_changed_y = 0
|
70
|
-
else
|
71
|
-
@not_changed_y += 1
|
72
72
|
end
|
73
73
|
|
74
74
|
if new_x || new_y
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chichilku3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 15.0.
|
4
|
+
version: 15.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ChillerDragon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-07-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fileutils
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: 1.6.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.
|
26
|
+
version: 1.6.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: gosu
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,7 +150,8 @@ files:
|
|
150
150
|
homepage: https://github.com/chichilku/chichilku3
|
151
151
|
licenses:
|
152
152
|
- Unlicense
|
153
|
-
metadata:
|
153
|
+
metadata:
|
154
|
+
rubygems_mfa_required: 'true'
|
154
155
|
post_install_message:
|
155
156
|
rdoc_options: []
|
156
157
|
require_paths:
|
@@ -159,14 +160,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
159
160
|
requirements:
|
160
161
|
- - ">="
|
161
162
|
- !ruby/object:Gem::Version
|
162
|
-
version:
|
163
|
+
version: 3.1.2
|
163
164
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
164
165
|
requirements:
|
165
166
|
- - ">="
|
166
167
|
- !ruby/object:Gem::Version
|
167
168
|
version: '0'
|
168
169
|
requirements: []
|
169
|
-
rubygems_version: 3.
|
170
|
+
rubygems_version: 3.3.7
|
170
171
|
signing_key:
|
171
172
|
specification_version: 4
|
172
173
|
summary: Stick battle game
|