Пример #1
0
Файл: client.py Проект: wezu/a4p
    def __init__(self):
        log.debug('Starting Client')
        #open a window... but first set all the needed props
        wp = self.loadWindoProperites()
        #open the window
        base.openMainWindow(props=wp)
        #base.setBackgroundColor(0.06, 0.1, 0.12, 1)
        base.setBackgroundColor(0.0, 0.0, 0.0, 1)
        base.disableMouse()
        base.enableParticles()

        #needed to determine what window event fired
        self.window_focused = base.win.getProperties().getForeground()
        self.window_x = base.win.getXSize()
        self.window_y = base.win.getYSize()
        self.window_minimized = base.win.getProperties().getMinimized()

        #filter manager, post process
        self.filters = Filters()

        #audio sound effects (sfx) + music
        self.audio = Audio()
        self.audio.setMusic('background')
        self.audio.playMusic()

        #light manager
        self.lights = LightManager()

        #setup the user interface (gui+key/mouse bind)
        self.ui = UserInterface()

        #skybox
        self.sun_and_sky = Skybox(self.lights)

        #player (character) droid
        self.droid = PCDroid(self.ui)

        #some vars used later
        self.map_name = None
        self.loading_status = set()
        self.level_root = render.attachNewNode('level_root')
        self.level_root.hide()
        self.is_in_game = False

        #events
        base.win.setCloseRequestEvent('exit-event')
        self.accept('exit-event', self.onClientExit)
        self.accept('window-event', self.onWindowEvent)
        self.accept('window-reset', self.onWindowReset)
        self.accept('client-mouselock', self.setMouseLock)
        self.accept('load-level', self.onLevelLoad)
        self.accept('loading-done', self.onLoadingDone)
        self.accept('reload-shaders', self.onShaderReload)
        self.accept('client-set-team', self.onTeamCahnge)
        self.accept('client-quit', self.onQuit)
        # Task
        taskMgr.add(self.update, 'client_update')

        log.debug('Client started')
Пример #2
0
class InteractionManager(object):
    datePicker = DatePicker()
    session = Session()
    lightmanager = LightManager()

    def setUser(self, user):
        self.user = user

    def sendusertosession(self, previoussession):

        self.session = Session()
        self.session.setUser(self.user)


        if previoussession == 0:
            self.startSession1()
        elif previoussession == 1:
            self.startSession2()
        else:
            self.startSession3()


        self.lightmanager.setSession(previoussession + 1) # Runs light in current phaase

    def startSession1(self):
        self.session.setSessionNumber("1")
        self.session.setHeading("Afklaring")

        user = self.session.user  # get the user from the session
        self.session.appendElement("hilsen", "Hej " + user.name)

        for question in self.buildList(self.questionsforone, 5):
            self.session.appendElement("question", question)

        for statement in self.buildList(self.economyStatements, 2):
            number = randint(5000, 20000)
            concatenate = statement % (number)
            print concatenate
            self.session.appendElement("blue", concatenate)

        numberofelements = len(self.moneyStatements) - 1
        picknumber = randint(0, numberofelements)

        self.session.appendElement("blue", self.moneyStatements[picknumber] % int(user.money))

        self.session.appendElement("green", "Nuværende Addresse: " + user.address + ", " + user.city)
        for statement in self.buildList(self.workstatements, 2):
            self.session.appendElement("green", statement)

        self.session.appendElement("green", "Du har snart jubilæum i %s" % self.volunteerclubs[randint(0, len(self.volunteerclubs) - 1)])
        self.session.appendElement("green", "Du har været været ansat i %d år, i dit sidste job." % randint(0, 10))


        self.session.appendElement("red", "Fødselsdato: " + user.birthday)
        date = self.datePicker.randomDate("1/1/2012", "24/5/2016", random.uniform(0, 1))
        print date
        self.session.appendElement("red", "Du var sidst ved lægen den: " + date)

        for statement in self.buildList(self.healthstatements, 1):
            self.session.appendElement("red", statement)

        print "Starter session: 1"

    def startSession2(self):
        self.session.setSessionNumber("2")
        self.session.setHeading("Valg")

        user = self.session.user  # get the user from the session
        self.session.appendElement("hilsen", "Velkommen tilbage " + user.name)

        self.session.appendElement("valg", self.makeChoice(user))

        self.session.appendElement("telefon",
                                   "Økonomisk rådgivning kan tilgås via kommunen på tlf: 41 85 63 86 mellem 09.00 og 14.00 på alle hverdage")

        print "Starter session: 2"

    def makeChoice(self, person):
        if person.age < 30:
            self.session.appendElement("uddannelse", "En Uddannelsesvejleder kan snakke med omkring din fremtid på 33925000, alle hverdage fra 09.00 til 14.00.")
            return "Du har ikke ret til kontanthjælp, du kan i stedet for modtage uddannnelseshjælp."

        elif person.money > 10000:
            return self.nolist[randint(0, len(self.nolist) - 1)]

        else:
            return self.choicelist[randint(0, len(self.choicelist) - 1)]

    def startSession3(self):
        self.session.setSessionNumber("3")
        self.session.setHeading("Fremtid")
        print "Starter session: 3"

    def getContent(self):
        return self.session

    """
    Precondition list should be bigger than max or endless recursion
    """

    def buildList(self, list, max):
        res = []
        numlist = []

        highest = len(list)
        print max

        for number in range(0, max):
            choice = self.guessnumber(0, highest - 1, numlist)
            statement = list[choice]
            res.append(statement)

        return res

    def guessnumber(self, min, max, list):
        num = randint(min, max)
        for number in list:
            if num == number:
                return self.guessnumber(min, max, list)

        list.append(num)

        return num

    questionsforone = [
        "Har jeg råd til mad?",
        "Har jeg det jeg skal bruge i min hverdag?",
        "Hvordan har familien det?",
        "Er der sket noget jeg har behov for en anden til at snakke med om?",
        "Går det godt, alt taget i betragtning?",
        "Er de gamle skavanker helet?",
        "Hvornår har jeg sidst være ved lægen?",
        "Kunne jeg tænke mig at blive selvstændig?",
        "Var jeg glad for dit gamle arbejde?",
        "Lyst til at arbejde i en ny branche?",
        "Er jeg færdig med at uddanne mig?",
        "Hvad kan jeg blive?",
        "Hvor mange penge skal der til, for at jeg kan få det til at køre rundt?",
        "Er der balance i min økonomi?",
        "Er der mere jeg vil vide?"]

    moneyStatements = [
        "Der står %d på din konto",
        "Samlet set ejer du %d kroner"]


    #UDVID
    economyStatements = ["Du har lån for %d kroner.",
                         "Du har brugt %d kroner på elektronik det sidste halve år",
                         "Du bruger i gennemsnit %d kroner på mad hver halve år"]

    healthstatements = [
        "Din journal siger du døjer med rygproblemer.",
        "Du har været ved lægen sidste måned med ondt i knæet ved en sportskade.",
        "Din journal siger du har problemer i højre håndled fra arbejde ved din bærbare computer.",
        "Du mangler anden vaccination af din Hepapitis B for at fuldt ud vaccineret.",
        "Du har været ved vagtlægen 3 gange i løbet af sidste år."]

    workstatements = [
        "Du betragtes som erfaren indenfor din branche.",
        "Dine evner er eftertragtet hos erhvervslivet i øjeblikket.",
        "Du har en god chance for at komme hurtigt i nyt job."]



    volunteerclubs = [
        "fodboldkluben",
        "håndboldkluben",
        "klatreklubben",
        "golfklubben",
        "petanqueklubben",
        "dartklubben",
        "open space aarhus",
        "sportsklubben"]

    choicelist = [
        "Du har efter reglerne ret til kontanthjælp, da du er bedømt til ikke at være i stand til at forsørge dig selv på grund af helbredsmæssige årsager.",
        "På grund af dine økonomiske årsager er du blevet bedømt som havende krav på modtage kontanthjælp.",
        "Da du står uden forsørger efter samlivsophør, er du blevet berettiget kontanthjælp."]
    nolist = [
        "Du har ikke ret til kontanthjælp, da du efter reglerne er i stand til at forsørge dig selv.",
        "Du har ikke ret til kontanthjælp, eftersom du har nok penge på dine konti til selvforsørgelse."]
Пример #3
0
    def __init__(self, directory):
        #init ShowBase
        base = ShowBase.ShowBase()
        base.setBackgroundColor(1, 1, 1)
        #PStatClient.connect()
        self.lManager = LightManager()
        self.skyimg = PNMImage("data/sky_grad.png")

        #manager for post process filters (fxaa, soft shadows, dof)
        manager = FilterManager(base.win, base.cam)
        self.filters = setupFilters(manager, path, fxaa_only=False)

        #load a level
        self.level = loadLevel(path=path, from_dir=directory)

        self.startpos = None

        #process properties
        functions = {
            'coll_mask': self.setCollideMaskOn,
            'hide': self.hideNode,
            'startpos': self.setStratPos,
            'alpha': self.setAlpha
        }
        processProps(self.level, functions)

        #lights and shadows
        self.sun = setupLights(self.lManager)
        self.shadows = setupShadows(buffer_size=1024)

        #camera controll
        base.disableMouse()
        self.controler = CameraControler(shadows=self.shadows)
        #point and click interface
        self.pointer = PointAndClick()
        self.accept('mouse1', self.onMouseClick)

        #player model
        #could be another class.... well next time
        self.pcNode = render.attachNewNode('pcNode')
        self.actor = Actor(
            "demo_models/male", {
                "attack1": "demo_models/male_attack1",
                "attack2": "demo_models/male_attack2",
                "walk": "demo_models/male_run",
                "block": "demo_models/male_block",
                "die": "demo_models/male_die",
                "strafe": "demo_models/male_strafe2",
                "hit": "demo_models/male_hit",
                "idle": "demo_models/male_ready2"
            })
        self.actor.setBlend(frameBlend=True)
        self.actor.reparentTo(self.pcNode)
        self.actor.setScale(.1)
        self.actor.setShader(
            Shader.load(Shader.SLGLSL, path + "shaders/player_v.glsl",
                        path + "shaders/player_f.glsl"))
        self.actor.loop("idle")
        self.pcNode.setPos(self.startpos)
        #collisions
        self.coll_ray = self.pcNode.attachNewNode(CollisionNode('collRay'))
        self.coll_ray.node().addSolid(CollisionRay(0, 0, 20, 0, 0, -180))
        self.coll_ray.node().setIntoCollideMask(BitMask32.allOff())
        self.coll_ray.node().setFromCollideMask(BitMask32.bit(1))
        #self.coll_ray.show()
        self.traverser = CollisionTraverser()
        self.queue = CollisionHandlerQueue()
        self.traverser.addCollider(self.coll_ray, self.queue)

        #pathfinding
        self.navi = Navigator(path + directory + '/navmesh.csv', self.pcNode,
                              self.actor)
        self.target = render.attachNewNode('target')
        self.setTime(7.5)
        #tasks
        taskMgr.add(self.update, 'update_task', sort=45)
        self.clock = 7.5
        taskMgr.doMethodLater(1.0, self.clockTick, 'clock_task', sort=10)
        self.accept('window-event', self.windowEventHandler)
Пример #4
0
    cast.wait()
    return cast


# find the sonos system and pick the highest priority room
sonos = SonosManager(SONOS_SPEAKERS)

album_manager = AlbumManager(LASTFM_API_KEY, LASTFM_API_SECRET,
                             lastfm_username, lastfm_password)

cast = setupChromecast()
castViewer = cast.media_controller
track = {'title': 'NA', 'artist': 'NA', 'album': 'NA'}
# The 5 used below is for all
light_manager = LightManager(HUE_IP_ADDRESS,
                             hue_lights=HUE_LIGHTS,
                             limitlessled_groups=[5])
duration = ''
failed_album_artwork = False
is_paused = False

while 1:
    # get the current album is being played in currently selected sonos speaker
    track = sonos.wait_for_next_track()
    if not sonos.get_paused_state():
        # if we were paused but are now moving forward
        if is_paused:
            # This means the play button was pressed
            cast = setupChromecast()
            castViewer = cast.media_controller
            # make sure everything gets setup next time
Пример #5
0
 def __init__(self):       
     #setup
     size=512 #size of the wave buffer
     self.update_speed=1.0/60.0 #the waves only look good when generated at this constant rate (1/60=60fps)
    
     
     base = ShowBase.ShowBase()   
     base.setBackgroundColor(0.1,0.25,0.4) 
     #I don't know what I'm doin'...
     base.trackball.node().setPos(-128, 150, -50)    
     base.trackball.node().setHpr(0, 40, 0) 
     
     #wave source buffer
     self.wave_source=self.makeBuffer(size=256, texFilter=Texture.FTNearest)
     self.wave_source['quad'].setColor(0,0,0, 0)
     self.wave_source['quad'].setZ(-10)
     
     #a normal, animated actor
     visible_panda=self.makeWalkingPanda(render)
     
     #a copy of the panda, but rendered offscreen
     phantom_panda=self.makeWalkingPanda(self.wave_source['root']) 
     #do the magic       
     self.setWaveCaster(phantom_panda)
     
     #make the ping-pong buffer to draw the water waves
     #shader 2 makes no use of the wave_source texture, appart from that they are identical
     shader1=Shader.load(Shader.SL_GLSL,'v.glsl', 'make_wave_f.glsl')
     shader2=Shader.load(Shader.SL_GLSL,'v.glsl', 'make_wave2_f.glsl')        
     self.ping=self.makeBuffer(shader1, size)
     self.pong=self.makeBuffer(shader2, size)
     self.ping['quad'].setShaderInput("size",float(size))
     self.pong['quad'].setShaderInput("size",float(size))        
     self.ping['quad'].setTexture(self.pong['tex'])
     self.pong['quad'].setTexture(self.ping['tex'])        
     self.ping['quad'].setShaderInput('startmap', self.wave_source['tex'])        
     self.ping['buff'].setActive(True)
     self.pong['buff'].setActive(False)   
     
     #some vars to track the state of things
     self.time=0
     self.state=0
     
     #set lights
     #reusing some of my old stuff, no mind the light manager
     l=LightManager()
     self.sun=l.addLight(pos=(128.0, 300.0, 50.0), color=(0.9, 0.9, 0.9), radius=500.0)
     
     #skybox
     skybox=loader.loadModel('skybox/skybox')
     skybox.reparentTo(render)
     skybox.setPos(128, 128, 64)
     skybox.setScale(300)
     #preview         
     cm = CardMaker("plane")
     cm.setFrame(0, 256, 0, 256)
     self.water_plane=render.attachNewNode(cm.generate())
     self.water_plane.lookAt(0, 0, -1)
     self.water_plane.setPos(0,0,1.0)
     self.water_plane.flattenStrong()
     self.water_plane.setShader(Shader.load(Shader.SL_GLSL,'water_v.glsl','water_f.glsl'))
     self.water_plane.setShaderInput("size",float(size))
     self.water_plane.setShaderInput("normal_map",loader.loadTexture("normal.png"))
     self.water_plane.setTexture(self.pong['tex'])           
     self.water_plane.hide(BitMask32.bit(1))
     self.makeWaterBuffer()  
     #self.water_plane.hide()
  
     #update task
     taskMgr.add(self.update, 'update')