Exemple #1
0
 def __init__(self):
     Thread.__init__(self)
     self.daemon = True
     self.runthread = True
     self.idlesleep = 0.01
     self.eventpipe = deque()
     self.em = EventManager()
Exemple #2
0
def main():
    """..."""
    evManager = EventManager()
    sharedObjectRegistry = {}

    #import random
    #rng = random.Random()
    #clientID = rng.randrange( 1, 10000 )
    #playerName = str( rng.randrange(1,100) )
    #player = Player( evManager )

    from sjbeasts import AnimationTimerController
    keybd = PygameMasterController(evManager)
    spinner = CPUSpinnerController(evManager)
    animationSpinner = AnimationTimerController(evManager)
    pygameView = PygameMasterView(evManager)

    phonyModel = PhonyModel(evManager, sharedObjectRegistry)

    import gui
    gui.playerRef = gui.GlobalPlayer(evManager)
    print gui.playerRef

    #from twisted.spread.jelly import globalSecurity
    #globalSecurity.allowModules( network )

    from twisted.internet import reactor
    serverController = NetworkServerController(evManager, reactor)
    serverView = NetworkServerView(evManager, sharedObjectRegistry,
                                   serverController)

    spinner.Run()
Exemple #3
0
def main():

    # create the managers
    eMngr = EventManager()
    gMngr = GraphicManager(eMngr)
    iMngr = InputManager(eMngr, gMngr)
    uMngr = UpdateManager(eMngr)
    sMngr = SoundManager(eMngr)
    nMngr = NetworkManager(eMngr)

    print "starting game"
    # create file with input
    playFile = open(sys.argv[1], 'r')
    # start the managers
    eMngr.start()
    gMngr.start()
    iMngr.start()
    uMngr.start()
    sMngr.start()
    nMngr.start()

    # create game and start it
    # FIXME playfile should be passed to the updateManager
    game = Game(iMngr, uMngr, gMngr, sMngr, nMngr, playFile)
    game.run()

    # close the managers
    eMngr.stop()
    uMngr.stop()
    iMngr.stop()
    gMngr.stop()
    sMngr.stop()
    nMngr.stop()
Exemple #4
0
    def __init__(self):
        self.clock = pygame.time.Clock()
        self.screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
        self.event_manager = EventManager()
        self.current_page = Page(pygame.Surface((0, 0)), BLACK,
                                 self.event_manager)

        self.name_1 = "Batman"
        self.name_2 = "Superman"
Exemple #5
0
 def __init__(self, port=None, address=None):
     Thread.__init__(self)
     self.daemon = True
     self.runthread = True
     self.port = port
     self.address = address
     self.pluginlist = None
     self.clients = {}
     self.event_subscriptions = {}
     self.em = EventManager()
Exemple #6
0
def Main():

    # Sample usage used in a demo... ----
    em = EventManager()

    recordedEvents = em.Record(10)

    em.WriteToFile()

    em.Play()
Exemple #7
0
 def __init__(self):
     Thread.__init__(self)
     self.daemon = True
     self.host = None
     self.port = None
     self.user = None
     self.password = None
     self.runthread = True
     self.sendlock = False
     self.pluginlist = None
     self.em = EventManager()
    def Notify(self, event):
        HomeButton.Notify(self, event)

        if isinstance(event, PlayerExplorationEvent):
            print "SWITCHING TO EXPLORE"
            from screen_explore import ExploreScreen, \
                                       ExploreScreenController
            from eventmanager import EventManager
            dummyEvManager = EventManager()
            view = ExploreScreen(dummyEvManager, event.player, event.turns)
            cont = ExploreScreenController(self.evManager)
            ev = GUIChangeScreenRequest(([view], [cont]))
            self.evManager.Post(ev)
Exemple #9
0
 def __init__(self):
     Thread.__init__(self)
     self.daemon = True
     self.runthread = True
     self.idlesleep = 0.01
     self.eventpipe = deque()
     self.em = EventManager()
     self.ami = None
     self.queuereadflag = False
     self.queuestats = {}
     self.extstates = {}
     self.channels = {}
     self.status_expire = 60
     self.status_timeout = 1
    def Notify(self, event):
        HomeButton.Notify(self, event)

        if isinstance(event, GoToStoreEvent):
            print "SWITCHING TO STORE"
            from screen_store import StoreScreen, \
                                       StoreScreenController
            from eventmanager import EventManager
            # we don't want the new Gui reacting to events before
            # it is active, so give it a dummy event manager that
            # won't send it anything
            dummyEvManager = EventManager()
            view = StoreScreen(dummyEvManager, event.player)
            cont = StoreScreenController(self.evManager)
            ev = GUIChangeScreenRequest(([view], [cont]))
            self.evManager.Post(ev)
Exemple #11
0
def main(srvHost, srvPort):
    w = dict()
    em = EventManager()
    nm = NetworkManager(em, w)
    FRAME_TIME = 0.2  # 200 ms
    c = Clock(FRAME_TIME)
    c.start()
    slept_time = 0.0
    nm.start(srvHost, srvPort)
    counter = 100
    exit = False
    while not exit:
        nm.update(slept_time + c.time_passed())
        counter -= 1
        if counter <= 0:
            exit = True
        slept_time = c.time_left()
        c.sleep()
        print "%s" % (counter * FRAME_TIME)
Exemple #12
0
def main():
    """..."""
    from twisted.spread import pb
    from twisted.application import service
    from twisted.cred.authorizer import DefaultAuthorizer
    from twisted.internet import reactor, app

    evManager = EventManager()
    sharedObjectRegistry = {}

    log = TextLogView(evManager)
    timer = TimerController(evManager, reactor)
    #clientContr = NetworkClientController( evManager, sharedObjectRegistry )
    clientView = NetworkClientView(evManager, sharedObjectRegistry)
    game = Game(evManager)

    #from twisted.spread.jelly import globalSecurity
    #globalSecurity.allowModules( network )

    application = app.Application("myServer")
    auth = DefaultAuthorizer(application)

    #create a service, tell it to generate NetworkClientControllers
    serv = pb.Service("myService", application, auth)
    serv.perspectiveClass = NetworkClientController

    #create a Perspective
    per1 = serv.createPerspective("perspective1")
    per1.PostInit(evManager, sharedObjectRegistry)

    #create an Identity
    iden1 = auth.createIdentity("user1")
    iden1.setPassword("asdf")
    #allow it access to the perspective named perspective1
    iden1.addKeyByString("myService", "perspective1")
    auth.addIdentity(iden1)

    #application.listenTCP(8000, pb.BrokerFactory(clientContr) )
    application.listenTCP(8000, pb.PBServerFactory(pb.AuthRoot(auth)))

    application.run(save=0)
Exemple #13
0
    def __init__(self, app, parent=None, background_color=(0, 0, 0)):
        MediaNavNode.__init__(self)
        self.screen = app.screen  #: The screen surface to draw to
        self.screen_width = self.screen.get_width()
        self.screen_height = self.screen.get_height()
        self.background_color = background_color  #: The background color to fill the screen with
        self.background_image = None
        self.parent = parent  #: The parent page, used for navigation
        self.widgets = []  #: A list of widgets in this page
        self.app = app  #: The app object under which this page runs

        # Load the background
        # TODO: Remove hardcoding of background

        # Make the page an event dispatcher
        self.set_event_manager(EventManager())
        self.is_event_dispatcher = True

        # Make the page an event listener
        self.event_manager.register_listener(self)
        self.is_event_listener = True
Exemple #14
0
def main():
	"""..."""
	evManager = EventManager()

	spinner = CPUSpinnerController( evManager )
	animationSpinner = AnimationTimerController( evManager )
	pygameView = PygameMasterView( evManager )
	pygameCont = PygameMasterController( evManager )
	game = Game( evManager )

	import gui
	gui.playerRef = gui.GlobalPlayer( evManager )
	print gui.playerRef
	
	while 1:
		try:
			spinner.Run()
		except NotImplementedError, msg:
			text = "Not Implemented: "+ str(msg)
			ev = ExceptionEvent( text )
			evManager.Post( ev )
		else:
			break;
Exemple #15
0
    def display(self):
        del self.texts[2:]
        TOP = self.texts[1][1].top + 35

        format_string = "{rank:>4d} | {name:20s} | {matches_played:>14d} | {wins:>4d} | {losses:>6d} | {point_diff:>16d} | {win_per:>14.2f}"
        for index, leader in enumerate(self.leaderboard.get_top_number(10)):
            res = SMALL.render(
                format_string.format(**dict(
                    zip(("rank", "name", "matches_played", "wins", "losses",
                         "point_diff", "win_per"), leader))), True, BLACK)
            res_rect = res.get_rect()
            res_rect.top = TOP + 35 * index
            res_rect.centerx = HALF_WIDTH
            self.texts.append((res, res_rect))

        super(LeaderBoardPage, self).display()


if __name__ == '__main__':
    from properties import SCREEN_HEIGHT, SCREEN_WIDTH
    from eventmanager import EventManager
    c = pygame.time.Clock()
    s = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
    e = EventManager()
    l = LeaderBoardPage(s, e)
    l.display()
    while True:
        e.run()
        c.tick(30)
Exemple #16
0
    def __init__(self):

        from optparse import OptionParser
        parser = OptionParser(version="%prog 0.1.1")
        parser.add_option('-r', '--replay', 
                            dest='infile',
                            help='uses the recorded input instead of the user input')
        parser.add_option('-d', '--dump', 
                            dest='outfile',
                            help='writes the user input into a file')
        (options, args) = parser.parse_args()
        
        self.evm = EventManager()
        
        self.evm.RegisterListener(self)

        if options.infile:
            self.te = InputPlayer(self.evm, options.infile)
        else:
            self.te = TickEmitter(self.evm)
        
        self.system = System(self.evm)
        self.logic = Logic(self.evm)
        
        if options.outfile:
            self.input_recorder = InputRecorder(self.evm, options.outfile)
        
        self.load_map('map2.xml')
        
        #########################################
        ## create windows
        #########################################
        
        self.main_window = Widget(0,0,110,27)
        self.window = Widget(84,1,25,25)

        self.windows = {}

        self.windows['lives'] = Widget(1,1,23,3)
        self.windows['money'] = Widget(1,4,23,3)
        self.windows['points'] = Widget(1,7,23,3)

        for w in self.windows.values():
            self.window.add_child(w)
            
        self.main_window.add_child(self.window)

        self.wave_window = Widget(58,1,25,25)
        self.main_window.add_child(self.wave_window)
        
        wave_label = Widget(1,1,23,1)
        wave_label.label = 'Waves'
        wave_label.border = False
        self.wave_window.add_child(wave_label)

        self.wave_windows = []
        for i in range(0,4):
            w = WaveWidget(1,2 + i * 5, 23, 5)
            self.wave_windows.append(w)
            self.wave_window.add_child(w)
            
        self.wc = WidgetController(self.evm,self.system)
        
        help_window = Widget(1,22,56,4)

        help_window1 = Widget(0,1,56,1)
        help_window1.label = "Press space to send next wave. Hit q to quit the game."
        help_window1.border = False
        help_window.add_child(help_window1)

        help_window2 = Widget(0,2,56,1)
        help_window2.label = "Click anywhere on the map to place a tower."
        help_window2.border = False
        help_window.add_child(help_window2)
        
        self.main_window.add_child(help_window)
Exemple #17
0
    def __init__(self):
        self.verbose = False
        self.visual_debug = False

        # Llama Stuff
        self.llama_controller = LlamaControler()

        # Control Stuff
        self.want_to_expand = False
        self.researched_warpgate = False

        # Attack stuff
        self.army_manager = ArmyManager(bot=self)
        self.attack_target = None
        self.units_available_for_attack = {
            ZEALOT: 'ZEALOT',
            STALKER: 'STALKER'
        }
        self.minimum_army_size = 15

        # Defense stuff
        self.threat_proximity = 20
        self.defending_units = {}
        self.defend_around = [PYLON, NEXUS]

        # Threat stuff stuff
        self.defending_from = {}

        # Scout stuff
        self.scouting_units = set()
        self.number_of_scouting_units = 3
        self.scout_interval = 30  # Seconds
        self.scout_timer = 0
        self.map_size = None

        # Expansion and macro stuff
        self.auto_expand_after = 300  # 5 Minutes
        self.auto_expand_mineral_threshold = 22  # Should be 2.5 ~ 3 fully saturated bases
        self.maximum_workers = 80
        self.gateways_per_nexus = 2

        # Research stuff
        self.start_forge_after = 180  # seconds - 4min
        self.forge_research_priority = ['ground_weapons', 'shield']

        self.event_manager = EventManager()

        self.upgrades = {
            'ground_weapons': [
                FORGERESEARCH_PROTOSSGROUNDWEAPONSLEVEL1,
                FORGERESEARCH_PROTOSSGROUNDWEAPONSLEVEL2,
                FORGERESEARCH_PROTOSSGROUNDWEAPONSLEVEL3
            ],
            'ground_armor': [
                FORGERESEARCH_PROTOSSGROUNDARMORLEVEL1,
                FORGERESEARCH_PROTOSSGROUNDARMORLEVEL2,
                FORGERESEARCH_PROTOSSGROUNDARMORLEVEL3
            ],
            'shield': [
                FORGERESEARCH_PROTOSSSHIELDSLEVEL1,
                FORGERESEARCH_PROTOSSSHIELDSLEVEL2,
                FORGERESEARCH_PROTOSSSHIELDSLEVEL3
            ]
        }

        self.upgrade_names = {
            FORGERESEARCH_PROTOSSGROUNDWEAPONSLEVEL1: 'GROUND WEAPONS 1',
            FORGERESEARCH_PROTOSSGROUNDWEAPONSLEVEL2: 'GROUND WEAPONS 2',
            FORGERESEARCH_PROTOSSGROUNDWEAPONSLEVEL3: 'GROUND WEAPONS 2',
            FORGERESEARCH_PROTOSSGROUNDARMORLEVEL1: 'GROUND ARMOR 2',
            FORGERESEARCH_PROTOSSGROUNDARMORLEVEL2: 'GROUND ARMOR 2',
            FORGERESEARCH_PROTOSSGROUNDARMORLEVEL3: 'GROUND ARMOR 2',
            FORGERESEARCH_PROTOSSSHIELDSLEVEL1: 'SHIELDS 1',
            FORGERESEARCH_PROTOSSSHIELDSLEVEL2: 'SHIELDS 2',
            FORGERESEARCH_PROTOSSSHIELDSLEVEL3: 'SHIELDS 3'
        }
Exemple #18
0
def process_events(cfg_csv_path, cfg_csv_parsing, cfg_open_edx_spec, timestamp_format):
    print('****** Processing events *******')

    events_processing_duration = time.time()

    # MOOCdb storage interface
    moocdb = MOOCdb(cfg_csv_path['moocdb_csv_dir'])

    # Instanciating the piping architecture
    event_formatter = EventFormatter(moocdb, TIMESTAMP_FORMAT=timestamp_format)
    resource_manager = ResourceManager(moocdb, HIERARCHY_ROOT='https://')
    event_manager = EventManager(moocdb)
    submission_manager = SubmissionManager(moocdb)
    curation_helper = CurationHelper(cfg_csv_path['moocdb_csv_dir'])
    clickevents_manager = ClickEventsManager(moocdb)

    print("Processing %s" % cfg_csv_path['edx_track_event_path'])
    extract = extractor.CSVExtractor(cfg_csv_path, cfg_csv_parsing)

    num_rows = int(
        check_output(["wc", "-l", cfg_csv_path['edx_track_event_path']]).split(" ")[0])
    event_count = 0

    for raw_event in extract:
        event_count += 1
        if event_count % 500 == 0:
            progress = 'Progress: %0.4f%%' % (100.0 * float(event_count) /
                                                    float(num_rows))
            # A print statement is not used here because
            # a newline is automatically appended on each print, whereas
            # we want to use the CR character to move the terminal
            # pointer back to the beginning of the same line.
            print(progress)
            sys.stdout.write("\033[F")

        # Skip events explicitly not handled by qpipe
        if event_formatter.pass_filter(raw_event) is False:
            continue

        event = event_formatter.polish(raw_event)

        resource_id = resource_manager.create_resource(event)

        event.set_data_attr('resource_id', resource_id)
        submission_manager.update_submission_tables(event)
        curation_helper.record_curation_hints(event)
        clickevents_manager.record(event, cfg_open_edx_spec)
        event_manager.store_event(event)

    print('* All events processed')
    print('* Writing CSV output to : %s' % cfg_csv_path['moocdb_csv_dir'])

    event_formatter.serialize()
    event_manager.serialize()
    resource_manager.serialize(pretty_print_to=cfg_csv_path['resource_hierarchy_path'])
    submission_manager.serialize(pretty_print_to=cfg_csv_path['problem_hierarchy_path'])
    curation_helper.serialize()

    print('* Writing resource hierarchy to : %s' % cfg_csv_path['resource_hierarchy_path'])
    print('* Writing problem hierarchy to : %s' % cfg_csv_path['problem_hierarchy_path'])

    metadata_file_path = os.path.join(cfg_csv_path['moocdb_csv_dir'], 'metadata.csv')
    try:
        os.remove(metadata_file_path)
        print('* Removed old metadata file at %s' % metadata_file_path)
    except OSError:
        pass
    print('* Writing metadata row to : %s' % metadata_file_path)

    try:
        with open(metadata_file_path, 'w') as metafile:
            process = Popen(['git', 'describe', '--always'], stdout=PIPE)
            commit_hash, err = process.communicate()
            commit_hash = commit_hash.rstrip() if err is None else ''
            events_processing_duration = (
                int(time.time() - events_processing_duration)) / 60  # minutes
            metafile.write('%s,%s\n' %
                           (commit_hash, events_processing_duration))
    except OSError:
        pass
    moocdb.close()
Exemple #19
0
#
# Results generators and caching
#

import json
import gevent
import Database
import Options
import RHUtils
import logging
from monotonic import monotonic
from Language import __
from eventmanager import Evt, EventManager
from RHRace import WinCondition

Events = EventManager()

logger = logging.getLogger(__name__)

class CacheStatus:
    INVALID = 'invalid'
    VALID = 'valid'

def invalidate_all_caches(DB):
    ''' Check all caches and invalidate any paused builds '''
    for race in Database.SavedRaceMeta.query.all():
        race.cacheStatus = CacheStatus.INVALID

    for heat in Database.Heat.query.all():
        heat.cacheStatus = CacheStatus.INVALID
Exemple #20
0
        'time': parse_time('2013-11-10 06:00:00')
    }),
    Event({
        '_id': 3,
        'anon_screen_name': 'A',
        'time': parse_time('2013-11-10 06:05:00')
    }),
    Event({
        '_id': 4,
        'anon_screen_name': 'B',
        'time': parse_time('2013-11-10 06:10:00')
    }),
    Event({
        '_id': 5,
        'anon_screen_name': 'A',
        'time': parse_time('2013-11-10 06:10:00')
    })
]

if __name__ == '__main__':
    manager = EventManager()
    for event in EVENTS:
        e = manager.stage_event(event)
        if e:
            print ','.join([e['_id'], e['anon_screen_name'], str(e.duration)])

# Expected output is:
#  1,A,5
#  2,B,10
#  3,A,5