sector_maker 0.1.0 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4148fcde17702fad821443b7b52ec2499058af6614c483893fe22db3fa9980ea
4
- data.tar.gz: 155ab65fcf80c2e70491eac3af3d96fa7cbf5fd1962dad44f941fc2707b9df06
3
+ metadata.gz: 4eb8dfc64d7380664d02fea20f9b5ed8859a717e221879a4cbc1f0c345ac1b0c
4
+ data.tar.gz: 4066402e5c9ea016ea850aef806120e0086b52bec0c0ae3a8326600074737534
5
5
  SHA512:
6
- metadata.gz: 6fa00d08d44f0aacc979b6f6aed268b8824371b1c372cca4617f5dd5acd56fff7e032759dcb78965a1ed2fb250630bc22a86e514d0211343b16c43c71eababc4
7
- data.tar.gz: 4e8fab0df6f42ffd44a4a820676829297f7aeca5b828c09c3ec416464e70b77546c9cf2cd67bd6ac374a7bf74123579b262417aa9275fdf49e7a668fc1a14bac
6
+ metadata.gz: 55bd99a9a40df4f13d9f2473d65a186c28e0884df42adc0d33f4898af53884987c448d502781865454951235a2f118b353b1a5518be988f2cf913c7524bee53b
7
+ data.tar.gz: 8763bd0372b0be72e62038cc120f4a13188208aceded16bee349bd8951a2374bab5ef35dac6e09264eb4a4760ea32c9530b5a1fe9f0ace252cf5262aebec14a9
data/Gemfile CHANGED
@@ -11,8 +11,8 @@ gem "rspec", "~> 3.0"
11
11
 
12
12
  gem "rubocop", "~> 1.21"
13
13
 
14
- gem "markov_namegen", "~> 0.1.4"
15
-
16
14
  gem "rubocop-rspec", "~> 2.12"
17
15
 
18
16
  gem "rubocop-rake", "~> 0.6.0"
17
+
18
+ gem "faraday", "~> 2.5"
data/Gemfile.lock CHANGED
@@ -1,13 +1,18 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sector_maker (0.1.0)
4
+ sector_maker (0.1.3)
5
+ markov_namegen (~> 0.1.4)
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
8
9
  specs:
9
10
  ast (2.4.2)
10
11
  diff-lcs (1.5.0)
12
+ faraday (2.5.2)
13
+ faraday-net_http (>= 2.0, < 3.1)
14
+ ruby2_keywords (>= 0.0.4)
15
+ faraday-net_http (3.0.0)
11
16
  json (2.6.2)
12
17
  markov_namegen (0.1.4)
13
18
  parallel (1.22.1)
@@ -47,6 +52,7 @@ GEM
47
52
  rubocop-rspec (2.12.1)
48
53
  rubocop (~> 1.31)
49
54
  ruby-progressbar (1.11.0)
55
+ ruby2_keywords (0.0.5)
50
56
  unicode-display_width (2.2.0)
51
57
 
52
58
  PLATFORMS
@@ -54,7 +60,7 @@ PLATFORMS
54
60
  x86_64-linux
55
61
 
56
62
  DEPENDENCIES
57
- markov_namegen (~> 0.1.4)
63
+ faraday (~> 2.5)
58
64
  rake (~> 13.0)
59
65
  rspec (~> 3.0)
60
66
  rubocop (~> 1.21)
@@ -7,6 +7,14 @@ module SectorMaker
7
7
  # values 1-33 mapped to 0-9, A-Z, excluding I and O.
8
8
  EHEX = [*(0..9)].zip([*("0".."9")]).to_h
9
9
  .merge([*(10..33)].zip([*("A".."Z")] - %w[I O]).to_h)
10
+ ENDPOINTS = { poster: "https://travellermap.com/api/poster",
11
+ jump: "https://travellermap.com/api/jumpmap?x=x&y=y&jump=jump" }.freeze
12
+
13
+ DEFAULT_HEADER = { "Content-Type" => "text/plain" }.freeze
14
+ DEFAULT_PARAMS = { scale: "128",
15
+ accept: "application/pdf",
16
+ options: "25591",
17
+ style: "poster" }.freeze
10
18
 
11
19
  # PLACEHOLDER NAMELIST FOR NAMEGENERATOR
12
20
  DEFAULT_NAMES = ["Alabama", "Alaska", "American Samoa", "Arizona", "Arkansas",
@@ -3,6 +3,10 @@
3
3
  module SectorMaker
4
4
  # Dice rolling methods
5
5
  module Rollable
6
+ def adjust_to_range(number, min_value: 0, max_value: 10)
7
+ number.clamp(min_value, max_value)
8
+ end
9
+
6
10
  def roll(dice_quantity = 1)
7
11
  Array.new(dice_quantity) { rand(1..6) }.sum
8
12
  end
@@ -13,12 +17,12 @@ module SectorMaker
13
17
  end
14
18
  # rubocop:enable Lint/BinaryOperatorWithIdenticalOperands
15
19
 
16
- def roll_over?(target = 8)
17
- roll(2) >= target
20
+ def roll_over?(target = 8, dice: 2)
21
+ roll(dice) >= target
18
22
  end
19
23
 
20
- def roll_under?(target = 8)
21
- roll(2) <= target
24
+ def roll_under?(target = 8, dice: 2)
25
+ roll(dice) <= target
22
26
  end
23
27
  end
24
28
  end
@@ -22,6 +22,16 @@ module SectorMaker
22
22
  File.write("#{filename}.txt", to_s)
23
23
  end
24
24
 
25
+ def export_as(file_type = :svg)
26
+ conn = Faraday.new(url: ENDPOINTS[:poster], params: DEFAULT_PARAMS,
27
+ headers: DEFAULT_HEADER)
28
+
29
+ conn.post(ENDPOINTS[:poster]) do |req|
30
+ req.params[:accept] = file_type == :pdf ? "application/pdf" : "image/svg+xml"
31
+ req.body = to_s
32
+ end
33
+ end
34
+
25
35
  def generate_sector
26
36
  SUBSECTOR_LIST.each do |letter|
27
37
  generate_subsector(letter)
@@ -31,6 +41,7 @@ module SectorMaker
31
41
  def generate_subsector(letter = A)
32
42
  col_min = COORDINATE_RANGE[letter][:col_min]
33
43
  row_min = COORDINATE_RANGE[letter][:row_min]
44
+
34
45
  col_min.upto(col_min + 7) do |col|
35
46
  row_min.upto(row_min + 9) do |row|
36
47
  hex = [col, row]
@@ -4,13 +4,13 @@ module SectorMaker
4
4
  # A Traveller5 star system
5
5
  class System
6
6
  include Rollable
7
- attr_reader :name, :hex, :uwp, :bases, :trade_codes, :travel_code, :pbg,
7
+ attr_reader :names, :hex, :uwp, :bases, :trade_codes, :travel_code, :pbg,
8
8
  :allegiance
9
9
 
10
- def initialize(sector_name: "----", mainworld_name: "blank", hex: "0101",
11
- uwp: World.new(main: true), pbg: random_pbg)
12
- @name = { sector: sector_name,
13
- main_world: mainworld_name }
10
+ def initialize(sector_name: "----", hex: "0101", mainworld_name: hex,
11
+ uwp: World.new(:main), pbg: random_pbg)
12
+ @names = { sector: sector_name,
13
+ main_world: mainworld_name }
14
14
  @hex = hex
15
15
  @uwp = uwp
16
16
  @pbg = pbg
@@ -21,7 +21,7 @@ module SectorMaker
21
21
  end
22
22
 
23
23
  def to_s
24
- "#{name[:main_world].ljust(17)} #{hex} #{uwp} #{bases} " \
24
+ "#{names[:main_world].ljust(17)} #{hex} #{uwp} #{bases} " \
25
25
  "#{trade_codes.ljust(19)} #{travel_code} #{pbg} #{allegiance[0..1]}"
26
26
  end
27
27
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SectorMaker
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.3"
5
5
  end
@@ -23,17 +23,13 @@ module SectorMaker
23
23
  end
24
24
 
25
25
  def attributes_to_ehex
26
- [@size,
27
- @atmosphere,
28
- @hydrographics,
29
- @population,
30
- @government,
31
- @law_level,
32
- @tech_level].map { |value| EHEX[value] }.join.insert(6, "-")
33
- end
34
-
35
- def adjust_to_range(number, min_value: 0, max_value: 10)
36
- [[number, min_value].max, max_value].min
26
+ [size,
27
+ atmosphere,
28
+ hydrographics,
29
+ population,
30
+ government,
31
+ law_level,
32
+ tech_level].map { |value| EHEX[value] }.join.insert(6, "-")
37
33
  end
38
34
 
39
35
  def random_starport
@@ -51,21 +47,21 @@ module SectorMaker
51
47
  end
52
48
 
53
49
  def random_atmosphere
54
- return 0 if @size < 2
50
+ return 0 if size < 2
55
51
 
56
- result = flux + @size
52
+ result = flux + size
57
53
 
58
54
  adjust_to_range(result, max_value: 15)
59
55
  end
60
56
 
61
57
  def atmosphere_mod
62
- return @atmosphere unless @atmosphere < 2 || @atmosphere > 9
58
+ return atmosphere unless atmosphere < 2 || atmosphere > 9
63
59
 
64
- @atmosphere - 4
60
+ atmosphere - 4
65
61
  end
66
62
 
67
63
  def random_hydrographics
68
- return 0 if @size < 2
64
+ return 0 if size < 2
69
65
 
70
66
  adjust_to_range(flux + atmosphere_mod)
71
67
  end
@@ -81,23 +77,23 @@ module SectorMaker
81
77
  end
82
78
 
83
79
  def random_government
84
- return 0 if @population.zero?
80
+ return 0 if population.zero?
85
81
 
86
- adjust_to_range(flux + @population, max_value: 15)
82
+ adjust_to_range(flux + population, max_value: 15)
87
83
  end
88
84
 
89
85
  def random_law_level
90
- adjust_to_range(flux + @government, max_value: 18)
86
+ adjust_to_range(flux + government, max_value: 18)
91
87
  end
92
88
 
93
89
  def random_tech_level
94
90
  calculation = [roll,
95
- STARPORT_TECH_MOD.fetch(@starport, 0),
96
- SIZE_TECH_MOD.fetch(@size, 0),
97
- ATMOSPHERE_TECH_MOD.fetch(@atmosphere, 0),
98
- HYDROGRAPHICS_TECH_MOD.fetch(@hydrographics, 0),
99
- POPULATION_TECH_MOD.fetch(@population, 0),
100
- GOVERNMENT_TECH_MOD.fetch(@government, 0)].sum
91
+ STARPORT_TECH_MOD.fetch(starport, 0),
92
+ SIZE_TECH_MOD.fetch(size, 0),
93
+ ATMOSPHERE_TECH_MOD.fetch(atmosphere, 0),
94
+ HYDROGRAPHICS_TECH_MOD.fetch(hydrographics, 0),
95
+ POPULATION_TECH_MOD.fetch(population, 0),
96
+ GOVERNMENT_TECH_MOD.fetch(government, 0)].sum
101
97
 
102
98
  adjust_to_range(calculation, max_value: 33)
103
99
  end
data/lib/sector_maker.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Creates random traveller sectors. Export a sector with #export_as
3
4
  module SectorMaker
5
+ require "faraday"
4
6
  require "markov_namegen"
5
7
  require "sector_maker/constants"
6
8
  require "sector_maker/rollable"
@@ -8,4 +10,8 @@ module SectorMaker
8
10
  require "sector_maker/system"
9
11
  require "sector_maker/sector"
10
12
  require "sector_maker/version"
13
+
14
+ def self.random_sector
15
+ Sector.new
16
+ end
11
17
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sector_maker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jack Kellenberger
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-09-03 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2022-09-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: markov_namegen
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.1.4
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.1.4
13
27
  description:
14
28
  email:
15
29
  - jackson@kellenberger.io
@@ -38,7 +52,7 @@ licenses:
38
52
  - MIT
39
53
  metadata:
40
54
  homepage_uri: https://github.com/jmkellenberger
41
- source_code_uri: https://github.com/jmkellenberger
55
+ source_code_uri: https://github.com/jmkellenberger/SectorMaker
42
56
  rubygems_mfa_required: 'true'
43
57
  post_install_message:
44
58
  rdoc_options: []