87 lines
2.7 KiB
GDScript
87 lines
2.7 KiB
GDScript
extends Node2D
|
|
|
|
|
|
# Declare member variables here. Examples:
|
|
# var a = 2
|
|
# var b = "text"
|
|
var texture
|
|
var hide_texture
|
|
var pos = 0
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
func _ready():
|
|
texture = ImageTexture.new()
|
|
texture = load("res://Asset/Tile/DropTileBottom.png")
|
|
hide_texture = ImageTexture.new()
|
|
hide_texture = load("res://Asset/Tile/HideTileBottom.png")
|
|
position = Vector2(Constants.Screen.WIDTH-Constants.Table.BOTTOM_SHOWN_MARGIN_X-
|
|
3*Constants.Tile.BOTTOM_DROP_WIDTH, Constants.Table.BOTTOM_SHOWN_MARGIN_Y+Constants.Tile.OPPOSITE_HAND_HEIGHT-20)
|
|
|
|
|
|
func show_tiles(tiles):
|
|
clear_tiles()
|
|
for suit in tiles:
|
|
if(suit["shown_type"]==Message.player_action.CHOW or
|
|
suit["shown_type"]==Message.player_action.PONG):
|
|
for i in range(3):
|
|
var tmp = suit["tiles"][i]
|
|
var t = get_tile_instance(tmp["suit"], tmp["number"])
|
|
add_child(t)
|
|
t.position = Vector2(pos+i*Constants.Tile.BOTTOM_DROP_WIDTH, 0)
|
|
elif(suit["shown_type"]==Message.player_action.EXPOSED_KONG):
|
|
for i in range(3):
|
|
var tmp = suit["tiles"][i]
|
|
var t = get_tile_instance(tmp["suit"], tmp["number"])
|
|
add_child(t)
|
|
t.position = Vector2(pos+i*Constants.Tile.BOTTOM_DROP_WIDTH, 0)
|
|
var t = get_tile_instance(suit["tiles"][3]["suit"], suit["tiles"][3]["number"])
|
|
add_child(t)
|
|
t.position = Vector2(pos+Constants.Tile.BOTTOM_DROP_WIDTH, -Constants.Tile.BOTTOM_DROP_THICK)
|
|
|
|
elif(suit["shown_type"]==Message.player_action.CONCEALED_KONG):
|
|
for i in range(3):
|
|
var t = get_hide_tile_instance()
|
|
add_child(t)
|
|
t.position = Vector2(pos+i*Constants.Tile.BOTTOM_DROP_WIDTH, 0)
|
|
var t = get_hide_tile_instance()
|
|
add_child(t)
|
|
t.position = Vector2(pos+Constants.Tile.BOTTOM_DROP_WIDTH, -Constants.Tile.BOTTOM_DROP_THICK)
|
|
elif(suit["shown_type"]==Message.player_action.ADDED_KONG):
|
|
for i in range(3):
|
|
var tmp = suit["tiles"][i]
|
|
var t = get_tile_instance(tmp["suit"], tmp["number"])
|
|
add_child(t)
|
|
t.position = Vector2(pos+i*Constants.Tile.BOTTOM_DROP_WIDTH, 0)
|
|
var hide_t = get_hide_tile_instance()
|
|
add_child(hide_t)
|
|
hide_t.position = Vector2(pos+Constants.Tile.BOTTOM_DROP_WIDTH, -Constants.Tile.BOTTOM_DROP_THICK)
|
|
|
|
pos -= Constants.Tile.BOTTOM_SHOWN_SEP + 3*Constants.Tile.BOTTOM_DROP_WIDTH
|
|
|
|
func clear_tiles():
|
|
pos = 0
|
|
for tile in get_children():
|
|
remove_child(tile)
|
|
tile.queue_free()
|
|
|
|
|
|
func get_tile_instance(suit, number):
|
|
var tile = Sprite.new()
|
|
tile.texture = texture
|
|
tile.centered = false
|
|
tile.vframes = 5
|
|
tile.hframes = 9
|
|
tile.frame_coords = Vector2(number-1, suit)
|
|
return tile
|
|
|
|
func get_hide_tile_instance():
|
|
var tile = Sprite.new()
|
|
tile.texture = hide_texture
|
|
tile.centered = false
|
|
return tile
|
|
|
|
|
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
#func _process(delta):
|
|
# pass
|