summaryrefslogtreecommitdiff
path: root/Sprite.gd
blob: d535946f665ada8f7c0536adf0e4a4600b10607f (plain) (blame)
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
31
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
88
extends Sprite

signal clicked

var CELL_W = 128
var CELL_H = 128

export var piece = 'pawn'
export var team = 0

export var has_moved = false
export var in_check = false
export var killed = false # queue_free() isn't fast enough; get_nodes.by_group("piece") will still find this so mark explictly

func get_move_pattern():
	return self.move_patterns.get(piece)

enum piece_color {
	black = 0,
	white = 128
	grey = 256,
	litegrey = 384,
	pink = 512,
	red = 640,
	orange = 768,
	yellow = 896,
	green = 1024,
	blue = 1152,
	teal = 1280,
	purple = 1408
}

enum piece_map {
	pawn = 0,
	knight = 128,
	bishop = 256,
	rook = 384,
	queen = 512,
	king = 640
}

func _ready():
	#print("Trying Red Pawn... Color: %s, Piece: " % piece_color.red, piece_map.pawn)
	#var atlas = get_texture()
	#atlas.set_region(Rect2(piece_map.king, piece_color.red, CELL_W, CELL_H))
	#print(atlas.get_region())
	#get_texture().set_region(Rect2(piece_map.king, piece_color.red, CELL_W, CELL_H))
	
	#position = Vector2(500,500)
	pass

func init(new_piece, color, new_team = 0):
	get_texture().set_region(Rect2(new_piece, color, CELL_W, CELL_H))
	self.set_piece(self.get_piece_name_by_region(), self.get_piece_color_by_region())
	self.set_team(new_team)

func _on_Area2D_input_event(_viewport, event, _shape_idx):
	if event.is_action_pressed("mouse1"):
		emit_signal("clicked")

func set_piece(new_piece, color):
	piece = new_piece
	get_texture().set_region(Rect2(self.piece_map.get(new_piece), self.piece_color.get(color), CELL_W, CELL_H))

func get_piece():
	return piece

func get_team():
	return team

func set_team(new_team):
	team = new_team

func get_piece_name_by_region():
	var region = get_texture().get_region()
	for map in piece_map:
		if piece_map.get(map) == region.position.x:
			return map

func get_piece_color_by_region():
	var region = get_texture().get_region()
	for map in piece_color:
		if piece_color.get(map) == region.position.y:
			return map

func kill():
	killed = true
	queue_free()