Ok this is the actual inital code... need to convert from mongo to sqlite...
This commit is contained in:
parent
8c856ce465
commit
8fa1664bcb
13 changed files with 1168 additions and 0 deletions
67
rpg_grid.rb
Normal file
67
rpg_grid.rb
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
class RpgGrid
|
||||
@mc = nil
|
||||
@gridSize = nil
|
||||
|
||||
# need the @mc to query occupied locations.
|
||||
def initialize(mc, grid_size=25)
|
||||
@mc = mc
|
||||
@gridSize = grid_size
|
||||
end
|
||||
|
||||
# Finds a place to put either a player or a monster that isn't currently occupied
|
||||
# Players need to spawn in a non-player cell, monsters can replace an existing monster
|
||||
def find_location()
|
||||
loop do
|
||||
x = rand(@gridSize)
|
||||
y = rand(@gridSize)
|
||||
|
||||
loc = [x, y]
|
||||
|
||||
n = @mc.collection().find({'location' => [x, y]})
|
||||
if n.count == 0 then
|
||||
return loc
|
||||
elsif n.first["type"] == :monster then
|
||||
@mc.collection().delete_one({"_id" => n.first["_id"]})
|
||||
return loc
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Move the +/- 1 on the x/y with them "bumping" off the walls to find a new position.
|
||||
# Gotta keep em in the grid.
|
||||
def get_move_location(cur_loc=nil)
|
||||
if cur_loc == nil then
|
||||
cur_loc = [0, 0]
|
||||
end
|
||||
|
||||
# get the x/y differences
|
||||
dx = get_move_diff(cur_loc[0])
|
||||
dy = get_move_diff(cur_loc[1])
|
||||
|
||||
# Build a new [x,y] to save to location
|
||||
new_loc = [cur_loc[0] + dx, cur_loc[1] + dy]
|
||||
|
||||
return new_loc
|
||||
end
|
||||
|
||||
# Should keep all chars inside the @gridSize playfield though without getting locked on an edge
|
||||
def get_move_diff(cur_loc)
|
||||
# i should be a num between 0 and 2. If 0 == 0, 1 == 1, 2 == -1. Intuitive right?
|
||||
i = rand(3)
|
||||
d = 0
|
||||
|
||||
if i == 2 then
|
||||
d = -1
|
||||
else
|
||||
d = i
|
||||
end
|
||||
|
||||
if cur_loc == 0 and d == -1 then
|
||||
d = rand(2)
|
||||
elsif cur_loc == @gridSize - 1 and d == 1 then
|
||||
d = rand(2) - 1
|
||||
end
|
||||
|
||||
return d
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue