Attempt at a fairer idler chooser
[zanchey/dispense2.git] / sql-edition / servers / VendServer.py
index eda4dc9..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 MessageKeeper import MessageKeeper
 from HorizScroll import HorizScroll
 from random import random, seed
-from Idler import TrainIdler,GrayIdler,StringIdler,ClockIdler
+from Idler import TrainIdler,GrayIdler,StringIdler,ClockIdler,FortuneIdler
 import socket
 from posix import geteuid
 
 import socket
 from posix import geteuid
 
@@ -189,11 +189,13 @@ idler = None
 def setup_idlers(v):
        global idlers, idler
        idlers = [
 def setup_idlers(v):
        global idlers, idler
        idlers = [
-               ClockIdler(v),
-               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) + "            "),
                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="-"),
                GrayIdler(v),
                TrainIdler(v),
                GrayIdler(v,one="*",zero="-"),
@@ -203,11 +205,25 @@ def setup_idlers(v):
                GrayIdler(v,one="/",zero="\\",reorder=1),
                GrayIdler(v,one="X",zero="O",reorder=1),
                ]
                GrayIdler(v,one="/",zero="\\",reorder=1),
                GrayIdler(v,one="X",zero="O",reorder=1),
                ]
+    disabled = [
+               ]
        idler = choose_idler()
 
 def choose_idler():
        global idler
        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():
        idler.reset()
 
 def idle_step():

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