Files
MahjongGame/Table/OppoShown.gd
T

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