MContainerBase.gd 2.0 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
#MContainerBase
extends Node2D
class_name MContainerBase

export var offset_x = 44
export var offset_y = 44
export var offset_z = 0
export var extra_offset_x = 22
export var extra_offset_y = 22
export var size_x = 5
export var size_y = 5
export var size_z = 3
export var mask_file = ""

var box = []


func _ready():
	add_to_group(name)
	add_to_group("game")
	var Mask = FileReader.read(mask_file,null)
	box.resize(size_x)
	for i in range(size_x):
		box[i] = []
		box[i].resize(size_y)
		for j in range(size_y):
			box[i][j] = []
			box[i][j].resize(size_z)
			for k in range(size_z):
				if Mask == null or Mask[i][j] == 1:
开发游戏的老王's avatar
开发游戏的老王 已提交
31
					box[i][j][k] = add_tile(i,j,k,get_parent().redistribute_face())
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
				else:
					box[i][j][k] = null
	
	for x in range(size_x):
		for y in range(size_y):
			for z in range(size_z):
				check_is_on_top(x,y,z)

func check_is_on_top(x,y,z):
	print("Not Defined")


func has_tile(x,y,z) -> bool:
	if x < size_x and y < size_y and z < size_z and box[x][y][z] is MTile:
		return true
	else:
		return false


func on_refresh():
	var children = get_children()
	for c in children:
		if(c is MTile):
			c.set_face_number(get_parent().redistribute_face())

func refresh_children(node:Node):
	if(node is MTile):
		node.set_face_number(get_parent().redistribute_face())
	var children = node.get_children()
	for c in children:
		refresh_children(c)

func add_tile(x,y,z,face_num):
	var tile = Constants.tile_scn.instance()
	tile.set_face_number(face_num)
	tile.z_index = z
	tile.location_x = x
	tile.location_y = y
	tile.location_z = z
	tile.set_container_name(name)
	add_child(tile)
	if z % 2 == 0:
		tile.global_position = global_position + Vector2(x * offset_x,y*offset_y)
	else:
		tile.global_position = global_position + Vector2(x * offset_x + extra_offset_x,y*offset_y + extra_offset_y)
	
	tile.global_position += Vector2(0,z*offset_z)
	
	return tile

func on_tile_popped(x,y,z):
	box[x][y][z] = null
	for x in range(size_x):
		for y in range(size_y):
			for z in range(size_z):
				check_is_on_top(x,y,z)