summaryrefslogtreecommitdiffhomepage
path: root/samples/99_genre_rpg_roguelike/roguelike_line_of_sight/app/main.rb
diff options
context:
space:
mode:
Diffstat (limited to 'samples/99_genre_rpg_roguelike/roguelike_line_of_sight/app/main.rb')
-rw-r--r--samples/99_genre_rpg_roguelike/roguelike_line_of_sight/app/main.rb97
1 files changed, 0 insertions, 97 deletions
diff --git a/samples/99_genre_rpg_roguelike/roguelike_line_of_sight/app/main.rb b/samples/99_genre_rpg_roguelike/roguelike_line_of_sight/app/main.rb
deleted file mode 100644
index bd5f521..0000000
--- a/samples/99_genre_rpg_roguelike/roguelike_line_of_sight/app/main.rb
+++ /dev/null
@@ -1,97 +0,0 @@
-require 'app/constants.rb'
-require 'app/sprite_lookup.rb'
-require 'app/legend.rb'
-
-def tick args
- tick_game args
- tick_legend args
-end
-
-def tick_game args
- # setup the grid
- args.state.grid.padding = 104
- args.state.grid.size = 512
-
- # set up your game
- # initialize the game/game defaults. ||= means that you only initialize it if
- # the value isn't alread initialized
- args.state.player.x ||= 0
- args.state.player.y ||= 0
-
- args.state.enemies ||= [
- { x: 10, y: 10, type: :goblin, tile_key: :G },
- { x: 15, y: 30, type: :rat, tile_key: :R }
- ]
-
- args.state.info_message ||= "Use arrow keys to move around."
-
- # handle keyboard input
- # keyboard input (arrow keys to move player)
- new_player_x = args.state.player.x
- new_player_y = args.state.player.y
- player_direction = ""
- player_moved = false
- if args.inputs.keyboard.key_down.up
- new_player_y += 1
- player_direction = "north"
- player_moved = true
- elsif args.inputs.keyboard.key_down.down
- new_player_y -= 1
- player_direction = "south"
- player_moved = true
- elsif args.inputs.keyboard.key_down.right
- new_player_x += 1
- player_direction = "east"
- player_moved = true
- elsif args.inputs.keyboard.key_down.left
- new_player_x -= 1
- player_direction = "west"
- player_moved = true
- end
-
- #handle game logic
- # determine if there is an enemy on that square,
- # if so, don't let the player move there
- if player_moved
- found_enemy = args.state.enemies.find do |e|
- e[:x] == new_player_x && e[:y] == new_player_y
- end
-
- if !found_enemy
- args.state.player.x = new_player_x
- args.state.player.y = new_player_y
- args.state.info_message = "You moved #{player_direction}."
- else
- args.state.info_message = "You cannot move into a square an enemy occupies."
- end
- end
-
- args.outputs.sprites << tile_in_game(args.state.player.x,
- args.state.player.y, '@')
-
- # render game
- # render enemies at locations
- args.outputs.sprites << args.state.enemies.map do |e|
- tile_in_game(e[:x], e[:y], e[:tile_key])
- end
-
- # render the border
- border_x = args.state.grid.padding - DESTINATION_TILE_SIZE
- border_y = args.state.grid.padding - DESTINATION_TILE_SIZE
- border_size = args.state.grid.size + DESTINATION_TILE_SIZE * 2
-
- args.outputs.borders << [border_x,
- border_y,
- border_size,
- border_size]
-
- # render label stuff
- args.outputs.labels << [border_x, border_y - 10, "Current player location is: #{args.state.player.x}, #{args.state.player.y}"]
- args.outputs.labels << [border_x, border_y + 25 + border_size, args.state.info_message]
-end
-
-def tile_in_game x, y, tile_key
- tile($gtk.args.state.grid.padding + x * DESTINATION_TILE_SIZE,
- $gtk.args.state.grid.padding + y * DESTINATION_TILE_SIZE,
- tile_key)
-end