terminal_hero 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,29 @@
1
+ # A module containing methods for processing and validating input
2
+ module InputHandler
3
+ # Given an array of command-line arguments, return the associated action if any,
4
+ # or else return false
5
+ def self.process_command_line_args(
6
+ args,
7
+ new_game_args: GameData::COMMAND_LINE_ARGUMENTS[:new_game],
8
+ load_game_args: GameData::COMMAND_LINE_ARGUMENTS[:load_game]
9
+ )
10
+ return false unless args.is_a?(Array) && !args.empty?
11
+
12
+ args.map(&:downcase)
13
+ return :new_game if new_game_args.include?(args[0])
14
+ return [:load_game, args[1]] if load_game_args.include?(args[0]) && args.length > 1
15
+ return :load_game if load_game_args.include?(args[0])
16
+
17
+ return false
18
+ end
19
+
20
+ # Check if a given character name is valid for creating or loading a character
21
+ def self.character_name_valid?(name)
22
+ return false unless name.is_a?(String)
23
+ return false unless (3..15).include?(name.length)
24
+ return false unless name.match?(/^\w*$/)
25
+ return false if name.match?(/\s/)
26
+
27
+ return true
28
+ end
29
+ end
@@ -0,0 +1,38 @@
1
+ begin
2
+ require "logger"
3
+ require "tmpdir"
4
+ rescue LoadError => e
5
+ # Display load errors using puts (not calling external methods which may not have been loaded)
6
+ puts "It appears that a dependency was unable to be loaded: "
7
+ puts e.message
8
+ puts "Please try installing dependencies mannually by running the command "\
9
+ "\"bundle install\" from within the installation directory."
10
+ puts "If you installed this application as a gem, you could try reinstalling it by "\
11
+ "running \"gem uninstall terminal_hero\" followed by \"gem install terminal_hero\""
12
+ exit
13
+ end
14
+
15
+ # A module containing general utility methods
16
+ module Utils
17
+ # Returns a value "collared" within a given range
18
+ def self.collar(min, val, max)
19
+ return [[min, val].max, max].min
20
+ end
21
+
22
+ # Clones a hash, then clones each of its values (but not any deeper values)
23
+ def self.depth_two_clone(hash)
24
+ clone = hash.dup
25
+ clone.each { |key, value| clone[key] = value.dup }
26
+ return clone
27
+ end
28
+
29
+ # Logs an error to a log file in the user's OS's global temp directory and
30
+ # returns the path to the file for display to the user.
31
+ def self.log_error(e)
32
+ temp_directory = Dir.mktmpdir("/terminal-hero-logs")
33
+ log_file = File.open(File.join(temp_directory, "th-error.log"), "w")
34
+ logger = Logger.new(log_file)
35
+ logger.error("An error occurred: #{e.full_message}")
36
+ return File.path(log_file)
37
+ end
38
+ end
metadata ADDED
@@ -0,0 +1,60 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: terminal_hero
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Chris Kamp
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-04-11 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Terminal Hero is a simple turn-based roleplaying game, created for coursework.
14
+ Players can navigate an ASCII world map, encounter monsters and fight using a turn-based
15
+ combat system. There is a leveling system and players can allocate stat points to
16
+ different combat attributes.
17
+ email:
18
+ executables:
19
+ - terminal_hero
20
+ extensions: []
21
+ extra_rdoc_files: []
22
+ files:
23
+ - bin/terminal_hero
24
+ - lib/terminal_hero.rb
25
+ - lib/terminal_hero/classes/creature.rb
26
+ - lib/terminal_hero/classes/errors/invalid_input_error.rb
27
+ - lib/terminal_hero/classes/errors/no_feature_error.rb
28
+ - lib/terminal_hero/classes/map.rb
29
+ - lib/terminal_hero/classes/monster.rb
30
+ - lib/terminal_hero/classes/player.rb
31
+ - lib/terminal_hero/classes/stat_menu.rb
32
+ - lib/terminal_hero/classes/tile.rb
33
+ - lib/terminal_hero/modules/display_controller.rb
34
+ - lib/terminal_hero/modules/game_controller.rb
35
+ - lib/terminal_hero/modules/game_data.rb
36
+ - lib/terminal_hero/modules/input_handler.rb
37
+ - lib/terminal_hero/modules/utils.rb
38
+ homepage: https://github.com/chris-kamp/terminal-hero
39
+ licenses: []
40
+ metadata: {}
41
+ post_install_message:
42
+ rdoc_options: []
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ requirements: []
56
+ rubygems_version: 3.1.2
57
+ signing_key:
58
+ specification_version: 4
59
+ summary: A simple turn-based roleplaying game, playable in the terminal.
60
+ test_files: []