Muy buenas, tengo una pequeña duda con la creación de objetos, estoy intentando crear un juego estilo Diner Dash pero tengo un problema con la creación de los clientes.
Tengo una clase llamada customer.lua que es la que tiene toda las variables y funciones de clase, y después tengo la escena llamada restaurant que es la que llama a estos clientes. El código de cada una de las clases es la siguiente:
Clase customer.lua
local customer = {} local customer\_mt = { \_\_index = customer } -- metatable local touched; local waitingWaiter; local status; local plate; local character; local number; function customer.new(number) -- constructor local newCustomer = { touched = false, waitingWaiter = false, status = "cue", plate = "espaguetti", number=number } return setmetatable( newCustomer, customer\_mt ) end function customer:init() character = display.newImageRect('images/character.png', 100, 100) character.x, character.y = 400, display.contentCenterY function touching( event ) if event.phase=="ended" then print("------customer touched") print(self.number) self.touched=true end end character:addEventListener( "touch", touching) end function customer:movement(x, y) character.x, character.y = x, y end --esta función se activa cuando el cliente llega a la mesa y espera a que el camarero le atienda function customer:timeWaitingWaiter() print ('------esperando camamero') self.status= "waiter" print(self.status) end function customer:timeWaitingFood() print ('------esperando comida') self.status= "waiting" print(self.status) end function customer:timeEating() print ('------comiendo') self.status= "eating" print(self.status) end function customer:timePaying() print ('------pagando') self.status= "paying" print(self.status) end return customer
Y para crear cada uno de los clientes a través de un timer hago que se cree un cliente cada 5 segundos:
local restaurantTables = {}
local clientsLvl = 5
local numClients = 1
local currentCustomer =nil
local c = nil
function scene:create( event )
local sceneGroup = self.view
function updateTimer(event) print(“entro en el timer”) if numClients<clientsLvl then print(“New client”) local customer = require “customer” c = customer.new(numClients) c:init() queue.enqueue© numClients = numClients+1 print("clients: "…numClients) end end local countQueue=timer.performWithDelay(5000, updateTimer, clientsLvl);
Mi problema es que no se como puedo hacer que al clicar sobre un cliente el que se seleccione sea ese y no otro ya que aunque al clicar se ven como clientes distintos, me queda como marcado el último cliente creado.
Habia pensado en hacer una variable que cuando se clique en un cliente este se copie a esta variable, pero como tengo la función de click en la clase customer no se como puedo hacerlo.
Alguna sugerencia?
Muchas gracias por la ayuda!!!