openra 1.8.1 → 1.8.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4cfff6bc6fcdee2c6e36d65bef3937bcf2aa4198e1ebdd0a8ec32e582722a1b4
4
- data.tar.gz: 79223a7df569fc9281761e77e0ce53c28665b24cf37216bdf39264e873f64b37
3
+ metadata.gz: c3636042a779c88135640420729bddffea4af5f7be68ce85f215a01c09b42c24
4
+ data.tar.gz: 5762e992a1d242bc8b02ae1f07bc4a6628f28f9cb77d30001aa5b39fd645c0c7
5
5
  SHA512:
6
- metadata.gz: 64c38c423dd054f8dd4df6e71240329d28fd1fb2c301eb13a9ebf3022f8594d11e0b93666d8cd934127f354fdc53bb71c450f0e9a06cd37b9649759eaa52c47e
7
- data.tar.gz: 3ce0518fc30b657d975ebc40993321e0b3692747301f21f227eaf1b35df4325206924bbf7bd804a22d51846f9e8888721fcec274dc9015acc25bd4858c65c153
6
+ metadata.gz: 47d3f9b58ce7c8132ef1c25f053a30cd016dfa4c7adc13fba47647996b491050ebf73a3b7836378f9c42d93fb797a08acb09b626f3f85507f018b8e50e2d857d
7
+ data.tar.gz: c9b9bf3d3782942c5348eb4ef347de4f65d5ecb9183217b4015692eec02905183e17ee416f6496e103c99fed61a59a8ff44143e57ef2f715aa51ae21cdbb0465
@@ -1,12 +1,20 @@
1
1
  ## Unreleased
2
2
 
3
- [Compare v1.8.1...HEAD](https://github.com/AMHOL/openra-ruby/compare/v1.8.1...HEAD)
3
+ [Compare v1.8.2...HEAD](https://github.com/AMHOL/openra-ruby/compare/v1.8.2...HEAD)
4
+
5
+ ## v1.8.2
6
+
7
+ ### Fixes
8
+
9
+ * [core] Fix encoding issues again ([AMHOL](https://github.com/AMHOL))
10
+
11
+ [Compare v1.8.1...v1.8.2](https://github.com/AMHOL/openra-ruby/compare/v1.8.1...v1.8.2)
4
12
 
5
13
  ## v1.8.1
6
14
 
7
15
  ### Updates
8
16
 
9
- * [replay-data] Update support powers to include game time and target positions
17
+ * [replay-data] Update support powers to include game time and target positions ([AMHOL](https://github.com/AMHOL))
10
18
 
11
19
  [Compare v1.8.0...v1.8.1](https://github.com/AMHOL/openra-ruby/compare/v1.8.0...v1.8.1)
12
20
 
@@ -14,7 +22,7 @@
14
22
 
15
23
  ### Added
16
24
 
17
- * [replay-data] Add support_powers with usage counts to output
25
+ * [replay-data] Add support_powers with usage counts to output ([AMHOL](https://github.com/AMHOL))
18
26
 
19
27
  [Compare v1.7.0...v1.8.0](https://github.com/AMHOL/openra-ruby/compare/v1.7.0...v1.8.0)
20
28
 
@@ -7,6 +7,7 @@ require 'dry/cli'
7
7
  require 'openra/version'
8
8
  require 'openra/constants'
9
9
  require 'openra/replays'
10
+ require 'openra/cli/utils'
10
11
  require 'openra/cli/commands/formatters'
11
12
  require 'openra/cli/commands/detect_production_macros'
12
13
  require 'openra/cli/commands/replay_data'
@@ -26,7 +26,7 @@ module Openra
26
26
  ) unless game_started
27
27
  when 'StartProduction'
28
28
  commands[order.client_index.to_s] << {
29
- target: order.target,
29
+ target: utf8(order.target),
30
30
  msec: order.frame * sync_info.global_settings.frametime_multiplier
31
31
  }
32
32
  end
@@ -40,7 +40,7 @@ module Openra
40
40
 
41
41
  {
42
42
  index: player.index,
43
- name: player.name,
43
+ name: utf8(player.name),
44
44
  team: player.team,
45
45
  outcome: player.outcome,
46
46
  production_stats: production_stats,
@@ -4,6 +4,8 @@ module Openra
4
4
  class CLI
5
5
  module Commands
6
6
  class ReplayData < Dry::CLI::Command
7
+ include CLI::Utils
8
+
7
9
  desc 'Output replay data to stdout'
8
10
 
9
11
  argument :replay, required: true, desc: 'Path of the replay file to read data from'
@@ -18,7 +20,7 @@ module Openra
18
20
  version: replay.metadata.version,
19
21
  server_name: nil,
20
22
  map: {
21
- name: replay.metadata.map_name,
23
+ name: utf8(replay.metadata.map_name),
22
24
  hash: replay.metadata.map_hash
23
25
  },
24
26
  game: {
@@ -56,7 +58,7 @@ module Openra
56
58
 
57
59
  {
58
60
  index: client.index,
59
- name: client.name,
61
+ name: utf8(client.name),
60
62
  preferred_color: client.preferred_color,
61
63
  color: client.color,
62
64
  spawn: {
@@ -102,7 +104,7 @@ module Openra
102
104
  Openra::YAML.load(order.target)
103
105
  ).clients
104
106
  when *support_powers.keys
105
- key = support_powers.fetch(order.command.force_encoding('UTF-8'))
107
+ key = support_powers.fetch(utf8(order.command))
106
108
  client_hash = data[:clients].find do |candidate|
107
109
  candidate[:index] == order.client_index.to_s
108
110
  end
@@ -119,7 +121,7 @@ module Openra
119
121
  end
120
122
 
121
123
  client_hash[:build] << {
122
- structure: order.target,
124
+ structure: utf8(order.target),
123
125
  game_time: time(order.frame * sync_info.global_settings.frametime_multiplier),
124
126
  placement: order.target_pos.to_i
125
127
  }
@@ -127,40 +129,27 @@ module Openra
127
129
  data[:chat] << {
128
130
  channel: 'server',
129
131
  name: nil,
130
- message: order.target
132
+ message: utf8(order.target)
131
133
  }
132
134
  when 'Chat'
133
135
  data[:chat] << {
134
136
  channel: 'global',
135
- name: client.name,
136
- message: order.target
137
+ name: utf8(client.name),
138
+ message: utf8(order.target)
137
139
  }
138
140
  when 'TeamChat'
139
141
  data[:chat] << {
140
142
  channel: client.team,
141
- name: client.name,
142
- message: order.target
143
+ name: utf8(client.name),
144
+ message: utf8(order.target)
143
145
  }
144
146
  end
145
147
  end
146
148
 
147
- data[:server_name] = sync_info.global_settings.server_name
149
+ data[:server_name] = utf8(sync_info.global_settings.server_name)
148
150
 
149
151
  puts FORMATTERS.fetch(options[:format]).call(data)
150
152
  end
151
-
152
- private
153
-
154
- def time(msec)
155
- sec = msec / 1000
156
- mm, ss = sec.divmod(60)
157
- hh, mm = mm.divmod(60)
158
-
159
- {
160
- formatted: '%02d:%02d:%02d' % [hh, mm, ss],
161
- msec: msec.to_i
162
- }
163
- end
164
153
  end
165
154
  end
166
155
  end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Openra
4
+ class CLI
5
+ module Utils
6
+ def utf8(string)
7
+ string.force_encoding('UTF-8').to_s
8
+ end
9
+
10
+ def time(msec)
11
+ sec = msec / 1000
12
+ mm, ss = sec.divmod(60)
13
+ hh, mm = mm.divmod(60)
14
+
15
+ {
16
+ formatted: '%02d:%02d:%02d' % [hh, mm, ss],
17
+ msec: msec.to_i
18
+ }
19
+ end
20
+ end
21
+ end
22
+ end
@@ -42,9 +42,7 @@ module Openra
42
42
  uint32 :extra_data, onlyif: HAS_EXTRA_DATA
43
43
 
44
44
  def target
45
- target = standard? ? standard_order_target : immediate_order_target
46
-
47
- Types::UTF8String.(target)
45
+ standard? ? standard_order_target : immediate_order_target
48
46
  end
49
47
 
50
48
  def type
@@ -11,7 +11,7 @@ module Openra
11
11
  attribute :color, Types::Strict::String.meta(from: 'Color')
12
12
  attribute :faction_name, Types::Strict::String.meta(from: 'Faction')
13
13
  attribute :spawn_point, Types::Strict::String.meta(from: 'SpawnPoint')
14
- attribute :name, Types::UTF8String.meta(from: 'Name')
14
+ attribute :name, Types::Strict::String.meta(from: 'Name')
15
15
  attribute :ip, Types::Strict::String.meta(from: 'IpAddress')
16
16
  attribute :state, Types::Strict::String.meta(from: 'State')
17
17
  attribute :team, Types::Strict::String.meta(from: 'Team')
@@ -6,7 +6,7 @@ module Openra
6
6
  transform_types(&:omittable)
7
7
 
8
8
  define do
9
- attribute :server_name, Types::UTF8String.meta(from: 'ServerName')
9
+ attribute :server_name, Types::Strict::String.meta(from: 'ServerName')
10
10
  attribute :map_hash, Types::Strict::String.meta(from: 'Map')
11
11
  attribute :timestep, Types::Params::Integer.meta(from: 'Timestep')
12
12
  attribute :order_latency, Types::Params::Integer.meta(
@@ -9,7 +9,7 @@ module Openra
9
9
  attribute :mod, Types::Strict::String.meta(from: 'Mod')
10
10
  attribute :version, Types::Strict::String.meta(from: 'Version')
11
11
  attribute :map_hash, Types::Strict::String.meta(from: 'MapUid')
12
- attribute :map_name, Types::UTF8String.meta(from: 'MapTitle')
12
+ attribute :map_name, Types::Strict::String.meta(from: 'MapTitle')
13
13
  attribute :start_time, Types::Timestamp.meta(from: 'StartTimeUtc')
14
14
  attribute :end_time, Types::Timestamp.meta(from: 'EndTimeUtc')
15
15
  attribute :players, Types::Strict::Array.of(Player).meta(sequence: 'Player')
@@ -5,7 +5,7 @@ module Openra
5
5
  class Player < Openra::Struct
6
6
  define do
7
7
  attribute :index, Types::Strict::String.meta(from: 'ClientIndex')
8
- attribute :name, Types::UTF8String.meta(from: 'Name')
8
+ attribute :name, Types::Strict::String.meta(from: 'Name')
9
9
  attribute :is_human, Types::Params::Bool.meta(from: 'IsHuman')
10
10
  attribute :is_bot, Types::Params::Bool.meta(from: 'IsBot')
11
11
  attribute :faction_name, Types::Strict::String.meta(from: 'FactionName')
@@ -9,9 +9,5 @@ module Openra
9
9
  Timestamp = Constructor(Time) do |input|
10
10
  ::DateTime.strptime(input, '%Y-%m-%d %H-%M-%S').to_time
11
11
  end
12
-
13
- UTF8String = Types::String.constructor do |input|
14
- input.force_encoding('UTF-8')
15
- end
16
12
  end
17
13
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Openra
4
- VERSION = '1.8.1'.freeze
4
+ VERSION = '1.8.2'.freeze
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openra
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.1
4
+ version: 1.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Holland
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-11 00:00:00.000000000 Z
11
+ date: 2020-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -179,6 +179,7 @@ files:
179
179
  - lib/openra/cli/commands/formatters.rb
180
180
  - lib/openra/cli/commands/replay_data.rb
181
181
  - lib/openra/cli/commands/version.rb
182
+ - lib/openra/cli/utils.rb
182
183
  - lib/openra/constants.rb
183
184
  - lib/openra/replays.rb
184
185
  - lib/openra/replays/file.rb