Advertisement
podoko_Lua

[la roue - exemple] timers

Apr 6th, 2015
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.76 KB | None | 0 0
  1. -- Exemple d'utilisation du module "timers" destiné à facilité la création de timers
  2.  
  3.  
  4.  
  5. -- CODE SOURCE DU MODULE TIMERS
  6.  
  7. timers = {}
  8. timers.id = 0
  9. timers.list = {}
  10. timers.toremove = {}
  11.  
  12. timers.new = function ( tic, loop, ... )
  13.     timers.id = timers.id + 1
  14.    
  15.     local id = timers.id
  16.     local time = 0
  17.     local fct = {...}
  18.    
  19.     local timer = function()
  20.         time = time + 1
  21.         if time >= tic then
  22.             for _,f in ipairs(fct) do
  23.                 f()
  24.             end
  25.             if loop then time = 0
  26.             else table.insert(timers.toremove, id)
  27.             end
  28.         end
  29.     end
  30.    
  31.     timers.list[id] = timer
  32.     return id
  33. end
  34.  
  35.  
  36. timers.remove = function ()
  37.     while(#timers.toremove~=0) do
  38.         timers.list[timers.toremove[1]] = nil
  39.         table.remove(timers.toremove, 1)
  40.     end
  41. end
  42.  
  43. timers.loop = function()
  44.     for id, timer in pairs(timers.list) do
  45.         timer()
  46.     end
  47.     timers.remove()
  48. end
  49.  
  50. timers.delete = function (id)
  51.     timers.list[id] = nil
  52. end
  53.  
  54.  
  55.  
  56. -- EVENTLOOP
  57.  
  58. function eventLoop(current, left)
  59.     timers.loop()                   -- IMPORTANT
  60.    
  61. end
  62.  
  63.  
  64.  
  65.  
  66. -- CREATION DES FONCTIONS
  67.  
  68.  
  69. function unefonctionquicreeunefonctionquiafficheuneparticuleadescoordonneesdonnees( x, y )
  70.  
  71.     return function ()
  72.         tfm.exec.displayParticle(15, x, y,0,0,0,0,nil)
  73.     end
  74.  
  75. end
  76.  
  77.  
  78. ui.addTextArea(1, "toutes les 1 secondes", nil, 50, 50, 135, 20)
  79. ui.addTextArea(2, "toutes les 2 secondes", nil, 250, 50, 135, 20)
  80. ui.addTextArea(3, "toutes les 2 secondes", nil, 450, 50, 135, 20)
  81. ui.addTextArea(4, "toutes les 2 secondes", nil, 650, 50, 135, 20)
  82. ui.addTextArea(5, "au bout de 10 secondes", nil, 50, 250, 135, 20)
  83. ui.addTextArea(6, "au bout de  10 secondes", nil, 250, 250, 135, 20)
  84. ui.addTextArea(7, "toutes les 5 secondes", nil, 450, 250, 135, 20)
  85. ui.addTextArea(8, "toutes les 5 secondes", nil, 650, 250, 135, 20)
  86.  
  87.  
  88.  
  89. f1 = unefonctionquicreeunefonctionquiafficheuneparticuleadescoordonneesdonnees(100, 100)
  90. f2 = unefonctionquicreeunefonctionquiafficheuneparticuleadescoordonneesdonnees(300, 100)
  91. f3 = unefonctionquicreeunefonctionquiafficheuneparticuleadescoordonneesdonnees(500, 100)
  92. f4 = unefonctionquicreeunefonctionquiafficheuneparticuleadescoordonneesdonnees(700, 100)
  93. f5 = unefonctionquicreeunefonctionquiafficheuneparticuleadescoordonneesdonnees(100, 300)
  94. f6 = unefonctionquicreeunefonctionquiafficheuneparticuleadescoordonneesdonnees(300, 300)
  95. f7 = unefonctionquicreeunefonctionquiafficheuneparticuleadescoordonneesdonnees(500, 300)
  96. f8 = unefonctionquicreeunefonctionquiafficheuneparticuleadescoordonneesdonnees(700, 300)
  97.  
  98.  
  99. -- CREATION DES TIMES
  100.  
  101.  
  102. timers.new(2, true, f1) -- un +1 s'affiche toutes les secondes
  103. timers.new(4, true, f2,f3,f4) -- trois +1 s'affichent toutes les 2 secondes
  104. timers.new(20, false, f5,f6) -- deux +1 s'affichent une fois au bout de 10 secondes
  105. timers.new(10, true, f7,f8) -- deux +1 s'affichent toutes les 5 secondes
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement