Attempt at a fairer idler chooser
[zanchey/dispense2.git] / sql-edition / servers / VendServer.py
index c82dda8..b623be6 100755 (executable)
@@ -15,7 +15,7 @@ from VendingMachine import VendingMachine, VendingException
 from MessageKeeper import MessageKeeper
 from HorizScroll import HorizScroll
 from random import random, seed
-from Idler import TrainIdler,GrayIdler,StringIdler
+from Idler import TrainIdler,GrayIdler,StringIdler,ClockIdler,FortuneIdler
 import socket
 from posix import geteuid
 
@@ -189,10 +189,13 @@ idler = None
 def setup_idlers(v):
        global idlers, idler
        idlers = [
-               StringIdler(v),
+               StringIdler(v, text="Kill 'em all", repeat=False),
                StringIdler(v, text=CREDITS),
                StringIdler(v, text=str(math.pi) + "            "),
                StringIdler(v, text=str(math.e) + "            "),
+               FortuneIdler(v),
+               ClockIdler(v),
+               StringIdler(v),
                GrayIdler(v),
                TrainIdler(v),
                GrayIdler(v,one="*",zero="-"),
@@ -202,15 +205,31 @@ def setup_idlers(v):
                GrayIdler(v,one="/",zero="\\",reorder=1),
                GrayIdler(v,one="X",zero="O",reorder=1),
                ]
+    disabled = [
+               ]
        idler = choose_idler()
 
 def choose_idler():
        global idler
-       idler = idlers[int(random()*len(idlers))]
+       iiindex = 0
+
+       if idler:
+               iiindex = idlers.index(idler)
+
+       iilen = len(idlers)
+
+       move = int(random()*len(idlers)) + 1
+
+       while move >= 0:
+               idler = idlers[( (iiindex + 1) % iilen)]
+               move = move - idler.affinity()
+
        idler.reset()
 
 def idle_step():
        global idler
+       if idler.finished():
+               choose_idler()
        idler.next()
 
 def run_forever(rfh, wfh, options, cf):

UCC git Repository :: git.ucc.asn.au