µLua DS - Forum officiel | Official forum Index du Forum

µLua DS - Forum officiel | Official forum
Le bon endroit pour en savoir plus sur MicroLua et pour parler de vos projets ! | The right place to learn more about MicroLua and talk about your projects !

 FAQFAQ   RechercherRechercher   MembresMembres   GroupesGroupes   S’enregistrerS’enregistrer   ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

bug de return

 
Poster un nouveau sujet   Répondre au sujet    µLua DS - Forum officiel | Official forum Index du Forum -> Section française -> Demande d'aide
Sujet précédent :: Sujet suivant  
Auteur Message
geeker


Hors ligne

Inscrit le: 23 Déc 2012
Messages: 363

MessagePosté le: Jeu 30 Mai 2013 - 16:18    Sujet du message: bug de return Répondre en citant

Bonjour.
J'ai commencé à bosser sur l'ajout d'add-ons à LED .
J'ai fait un fichier qui se charge de charger, et d’exécuter les fonctions de ces add-ons .
Mais j'ai un problème avec le chargement: je fais un return sur un fichier, mais je n'arrive pas à obtenir les données de ce return .
Le code du loader:
Code:

_addon = {}

function _addon.load()
 if not _led then
  _led = System.currentDirectory()
 end
 System.changeDirectory(_led.."addons/")
 if System.currentDirectory() ~= (_led.."addons/") then
  return
 end
 local toload = System.listDirectory(System.currentDirectory())
 --debug
 if Debug.isDebugOn then
  while not Keys.held.B do
   Controls.read()
   for l = 1, #toload do
    screen.print(SCREEN_DOWN, 0, l*8, toload[l].name)
   end
   render()
  end
  l = nil
 end
 --
 local i = 0
 local ls = 1
 while toload[i] and toload[i+1] do
  if toload[i] then
   if not toload[i].isDir then
    add = dofile(toload[i].name)
    if add and Debug.isDebugOn then
     while not Keys.held.A do
      Controls.read()
      screen.print(SCREEN_DOWN, 0, 0, tostring(add))
      render()
     end
     _addon[ls] = add
     for did=0, 2 do
      if not ls then break end
      _Print_Middle_(SCREEN_DOWN, 91, "loading addon "..ls.." ...")
      render()
     end
     ls = ls + 1
    elseif Debug.isDebugOn then
     while not Keys.held.A do
      Controls.read()
      screen.print(SCREEN_DOWN, 0, 0, "No returns.")
      render()
     end
    end
   end
  end
  i = i + 1
 end
 
 toload = nil
 i = nil
 ls = nil
 System.changeDirectory(_led)
 for did=0, 2 do
  _Print_Middle_(SCREEN_DOWN, 91, "Loading...")
  render()
 end
 collectgarbage()
end

function _addon.use(nb, f)
 if not _addon[nb] then
  return false
 end
 if f == "onSave" and _addon[nb].onSave then
  _addon[nb].onSave()
 elseif f == "onOpen" and _addon[nb].onOpen then
  _addon[nb].onOpen()
 elseif f == "onLoad" and _addon[nb].onLoad then
  _addon[nb].onLoad()
 elseif f == "onMain" and _addon[nb].onMain then
  _addon[nb].onMain()
 elseif f == "onQuit" and _addon[nb].onQuit then
  _addon[nb].onQuit()
 end
end

function _addon.check(c)
 i = 1
 while _addon[i] do
  _addon.use(i, c)
  i = i + 1
 end
 i = nil
end

function _addon.unload()
 _addon = nil
 collectgarbage()
end

--initialize
_addon.load()
_addon.check("onLoad")



Et un add-on d'exemple:
Code:

local function onLoad()
 while Stylus.held do
  Controls.read()
 end
 while not Stylus.held do
  Controls.read()
  screen.drawFillRect(SCREEN_DOWN, 0, 0, 256, 192, Color.new(31,31,31))
  render()
 end
end

return {
 onLoad = onLoad
}


J'ai fais des tests sur ordi (avec des strings), et là ça a marché, mais pas sur DS ...
Le truc, c'est que je tient à ne pas faire un système "typé", où il faut faire tel tableau, avec telles données etc.
Le return est donc la meilleure solution !

Merci de vos réponses !

EDIT: le loader peut s'utiliser sans LED !
_________________
Beta-testeur de l'extrème
Tox: FFBDC8B34DC3CDE51F8F1CB0A628147DE740ACD1D44682EB5492A681F6541E32E8D8BB6052B3
CtrµLua: ctrulua.github.io
Des p'tits true, des p'tits true, toujours des p'tits true ...


Revenir en haut
Visiter le site web du posteur
Publicité






MessagePosté le: Jeu 30 Mai 2013 - 16:18    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
geeker


Hors ligne

Inscrit le: 23 Déc 2012
Messages: 363

MessagePosté le: Sam 1 Juin 2013 - 11:44    Sujet du message: bug de return Répondre en citant

Mr. Green J'ai réussi, il fallait juste changer un "and" en "or" et modifier l'emplacement de la vérification du debug, c'est pour ça que mes tests marchaient mais pas le loader .
Il sera dans la prochaine version de LED RGB, et en cadeau, voici la structure d'un add-on:
Code:
local function main() --sera exécutée dans la boucle principale
 code
end

local function file() --sera exécutée dans l'explorateur de fichiers
 code
end

local function load() --sera exécutée au démarage
 code
end

local function open() --sera exécutée au chargement d'un fichier
 code
end

local function save() --sera exécutée à la sauvegarde d'un fichier
 code
end

local function quit() --sera exécutée à la fin du programme
 code
end

return {
 onLoad = load,
 onOpen = open,
 onSave = save,
 onMain = main,
 onQuit = quit,
 onFile = file
}


Je vais peut-être en mettre d'autre, je verrai .
_________________
Beta-testeur de l'extrème
Tox: FFBDC8B34DC3CDE51F8F1CB0A628147DE740ACD1D44682EB5492A681F6541E32E8D8BB6052B3
CtrµLua: ctrulua.github.io
Des p'tits true, des p'tits true, toujours des p'tits true ...


Revenir en haut
Visiter le site web du posteur
thomh@ck


Hors ligne

Inscrit le: 01 Aoû 2011
Messages: 360
Localisation: Notepad++

MessagePosté le: Sam 1 Juin 2013 - 12:43    Sujet du message: bug de return Répondre en citant

C'est super ce système Okay j'ai hâte de voir la suite
_________________
Vous aimez l'Origami ?


Revenir en haut
Visiter le site web du posteur
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 10:27    Sujet du message: bug de return

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    µLua DS - Forum officiel | Official forum Index du Forum -> Section française -> Demande d'aide Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  

Index | Creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com