extends Node2D # class member variables go here, for example: # var a = 2 # var b = "textvar" export(bool) var confirm_state = 0 var debug = true var previous_location; var playing = 0 var play_timer = 0.0 var play_done_callback var game func _ready(): # Called every time the node is added to the scene. # Initialization here set_process_input(true) set_process(true) if self.debug: get_node('debug').set_text('%s' % self) get_node('debug').show() func _process(dt): if self.playing: self.play_timer -= dt if self.play_timer <= 0: self.play_timer = 0.0 self.playing = 0 if self.game: if self.play_done_callback: self.game.call(self.play_done_callback, self) self.game = null func _input(event): if not self.is_visible(): return if event.type == InputEvent.KEY && event.scancode == KEY_ESCAPE && confirm_state == 1: self.end_confirm_state(false) if event.type == InputEvent.KEY && (event.scancode == KEY_RETURN || event.scancode == KEY_ENTER) && confirm_state == 1: self.end_confirm_state(true) func enter_confirm_state(): if confirm_state == 1: return var game = get_node('/root/game') if game: var hand = game.get('hand') game.get_node('ui/help').set_text('Press "Enter" to play the card; Press "Escape" to cancel') for i in hand: if i.confirm_state == 1: i.end_confirm_state(false); confirm_state = 1 self.previous_location = self.get_global_pos() var r = get_viewport().get_visible_rect() var c = Vector2(r.pos.x + (r.size.x / 2), r.pos.y + (r.size.y / 2)) self.set_global_pos(c) self.set_scale(Vector2(3, 3)) self.set_z(self.get_z()+1) #get_node('Controls').show() func end_confirm_state(play_card): if confirm_state == 0: return confirm_state = 0 self.set_scale(Vector2(1, 1)) print(self.previous_location) self.set_global_pos(self.previous_location) self.set_z(self.get_z()-1) get_node('Controls').hide() var game = get_node('/root/game') if game: game.get_node('ui/help').set_text('') if play_card: game.play_card(self) func _on_click_base_input_event( viewport, event, shape_idx ): if not self.is_visible(): return if event.type == InputEvent.MOUSE_BUTTON && event.button_index == BUTTON_LEFT && event.pressed: if confirm_state != 1: self.enter_confirm_state() return self else: pass func proc_effects(game, callback = null): if callback: self.play_done_callback = callback self.game = game self.playing = 1 print('Playing card %s' % self)