Class: Cell

Inherits:
Array
  • Object
show all
Defined in:
lib/game_2d/game_space.rb

Overview

Cell is a portion of the game space, the exact size of one entity. The cell (0,0) contains subpixel coordinates (0,0) through (399,399).

The behavior I want from Cells is to consider them all unique objects. I want to be able to say “Subtract this set of cells from that set”. Treating Cells as equal if their contents are equal defeats this purpose.

It’s also handy if each Cell knows where it lives in the grid.

Previously, I was using Set as the superclass. That seemed to make sense, since this is an unordered collection. But Set stores everything as hash keys, and hashes get very confused if their keys get mutated without going through the API.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(cell_x, cell_y) ⇒ Cell

Returns a new instance of Cell.



44
45
46
47
48
# File 'lib/game_2d/game_space.rb', line 44

def initialize(cell_x, cell_y)
  @a = []
  @x, @y = cell_x, cell_y
  super(@a)
end

Instance Attribute Details

#xObject (readonly)

Returns the value of attribute x.



35
36
37
# File 'lib/game_2d/game_space.rb', line 35

def x
  @x
end

#yObject (readonly)

Returns the value of attribute y.



35
36
37
# File 'lib/game_2d/game_space.rb', line 35

def y
  @y
end

Instance Method Details

#==(other) ⇒ Object



37
38
39
40
41
42
# File 'lib/game_2d/game_space.rb', line 37

def ==(other)
  other.class.equal?(self.class) &&
    other.x == self.x &&
    other.y == self.y &&
    other.instance_variable_get(:@a) == @a
end

#inspectObject



51
# File 'lib/game_2d/game_space.rb', line 51

def inspect; "Cell(#{x}, #{y}) #{@a}"; end

#to_sObject



50
# File 'lib/game_2d/game_space.rb', line 50

def to_s; "(#{x}, #{y}) [#{@a.join(', ')}]"; end