Vengo del desarrollo tradicional de juegos que usa los principios de OOP y de lo que he visto se puede imitar usando LUA una vez que se sabe lo que se está haciendo. En algunas de las publicaciones de códigos, descubrí cómo se puede usar la clase directora y crear archivos que tengan una función nueva(), etc.Corona LUA y OOP Design
Lo que estoy buscando es una forma de administrar mis armas. Tengo un jugador y un oponente y preferiría tener una clase de armas, digamos weaponCanon. Lo que he hecho es:
-- private vars here
local power
local canonSprite
local whatever
local someFunction = function()
...
end
-- Private stuff here
local weaponCanon = {}
weaponCanon.fire = function(atX, atY)
...
end
weaponCanon.reset = function()
...
end
return weaponCanon
Luego, en mi código de nivel yo simplemente:
local weaponCanon = require("weaponCanon")
weaponCanon.fire(100, 100)
Esto funciona muy bien y me permite utilizar una y la mentalidad "privado" "público" al codificar mi armas. El problema es que si quiero que el jugador y el oponente para una Canon:
local playerWeapon = require("weaponCanon")
local opponentWeapon = require("weaponCanon")
Esto simplemente devuelve el mismo objeto en lugar de una nueva instancia de ese objeto. Así que solo tengo un arma Caan en la ubicación oponente del arma. Esto es obviamente lo que quiero/necesito ahora.
Nuestro juego tiene muchas armas y sería bueno tener solo una versión de cada archivo con un ajuste que nos diga si es el arma del oponente o el arma del jugador. La alternativa es copiar cada archivo y crear un weaponPlayerCanon y un weaponOpponentCanon pero me estremezco ante la idea de modificar un archivo y tener que cambiar más de 2 archivos cada vez.
¿Cómo puedo hacer que devuelva una instancia y cuál es la estructura del archivo LUA para hacerlo?
Gracias o cualquier y toda la ayuda
-d
Estoy muy al tanto de: http://lua-users.org/wiki/LuaModuleFunctionCritiqued y aquí es donde obtuve mi diseño, pero en realidad no resuelve mi problema a menos que pase por alto algo ... –
Creo que lo que se ha perdido es que necesita datos y lógica.Por lo tanto, necesita una nueva función para proporcionar la "tabla" que contenga la configuración de su arma que luego proporcionaría como parámetro para la función de fuego, por lo que disminuye el valor de potencia de la mesa pasada por la pistola. El Capítulo 15 de PIL debería orientarte en la dirección correcta http://www.lua.org/pil/15.html –
Lo que has hecho aquí me dice algo que estaba planeando probar eventualmente, así que gracias por salvarme el problema. – jhocking