Attempt at a fairer idler chooser
[zanchey/dispense2.git] / sql-edition / servers / VendServer.py
index 7c4a278..b623be6 100755 (executable)
@@ -4,7 +4,7 @@
 USE_DB = 0
 
 import ConfigParser
-import sys, os, string, re, pwd, signal
+import sys, os, string, re, pwd, signal, math
 import logging, logging.handlers
 from traceback import format_tb
 if USE_DB: import pg
@@ -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
 
@@ -26,6 +26,13 @@ Mark Tearle
 Nick Bannon
 Cameron Patrick
 and a collective of hungry alpacas.
+
+
+
+For a good time call +61 8 6488 3901
+
+
+
 """
 
 GREETING = 'UCC SNACKS'
@@ -178,11 +185,19 @@ def center(str):
 
 idlers = []
 idler = None
+
 def setup_idlers(v):
        global idlers, idler
        idlers = [
-               TrainIdler(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="-"),
                GrayIdler(v,one="/",zero="\\"),
                GrayIdler(v,one="X",zero="O"),
@@ -190,17 +205,31 @@ def setup_idlers(v):
                GrayIdler(v,one="/",zero="\\",reorder=1),
                GrayIdler(v,one="X",zero="O",reorder=1),
                ]
-               #StringIdler(v),
-               #StringIdler(v, text=CREDITS),
+    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