generated from Nekojimi/GodotTemplate
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
766 B
33 lines
766 B
3 years ago
|
extends Reference
|
||
|
|
||
|
class_name GameState
|
||
|
|
||
|
# var parent: GameState # possibly reference the previous state and only store changed cells
|
||
|
|
||
|
# cell state info
|
||
|
var cellOwners: Array
|
||
|
|
||
|
# line state info
|
||
|
var lineOwners: Array
|
||
|
|
||
|
func init_arrays(size: Vector2):
|
||
|
var cells: int = int(size.x * size.y)
|
||
|
# A grid graph G_(m,n) has mn nodes and (m-1)n+(n-1)m=2mn-m-n edges
|
||
|
var lines: int = int((2 * size.x * size.y) - size.x - size.y)
|
||
|
for _cell in range(cells):
|
||
|
cellOwners.append(0)
|
||
|
for _line in range(lines):
|
||
|
lineOwners.append(0)
|
||
|
|
||
|
func clone() -> GameState:
|
||
|
var ret = .new()
|
||
|
ret.cellOwners = cellOwners.duplicate()
|
||
|
ret.lineOwners = lineOwners.duplicate()
|
||
|
return ret;
|
||
|
|
||
|
func get_cell_count():
|
||
|
return cellOwners.size()
|
||
|
|
||
|
func get_line_count():
|
||
|
return lineOwners.size()
|