Beispiel #1
0
def on_event(id, event):
    global LAUNCH_SPEED
    if (event.GetType() == "GeneratorOutputEvent"):
        if (event.mGeneratorID == id):
            outputItems = event.mOutputs
            playerPosition = fge.GetTransform(event.mPlayerID).GetPosition()
            generatorTransform = fge.GetTransform(id)
            generatorPosition = generatorTransform.GetPosition()
            generatorScale = generatorTransform.GetScale()
            for i in range(0, len(outputItems)):
                outputItem = fge.CreateEntity(outputItems[i])
                itemBody = fge.GetRuntimeBody(outputItem)
                itemBody.Init()
                if (i == 0):
                    pickupEvent = fge.GetPlayerPickupEvent()
                    pickupEvent.mPlayerID = event.mPlayerID
                    pickupEvent.mItemID = outputItem
                    fge.SendEvent(pickupEvent, event.mPlayerID)
                else:
                    itemTransform = fge.GetRuntimeTransform(outputItem)
                    itemScale = itemTransform.GetScale()
                    itemTransform.SetPosition(
                        generatorPosition[0], generatorPosition[1] + 0.5 *
                        (generatorScale[1] + itemScale[1]),
                        generatorPosition[2])
                    toPlayer = [
                        playerPosition[0] - generatorPosition[0],
                        playerPosition[1] - generatorPosition[1],
                        playerPosition[2] - generatorPosition[2]
                    ]
                    itemBody.SetVelocity(LAUNCH_SPEED * toPlayer[0],
                                         LAUNCH_SPEED * toPlayer[1],
                                         LAUNCH_SPEED * toPlayer[2])
                    print("reached YEET")
Beispiel #2
0
def on_update(id, dt):
    global INITIAL_POS_Z
    global PAUSED
    cam = fge.GetCamera(id)
    im = InputManager.GetInstance()
    if (im.IsTriggered("cam1")):
        cm = CameraManager.GetInstance()
        cm.SetCurrentCamera(cam)
    if (PAUSED):
        return
    cameraTransform = fge.GetTransform(id)
    cameraPos = cameraTransform.GetPosition()
    sumX = 0.0
    sumZ = 6.0 * INITIAL_POS_Z
    playerIDs = fge.GetEntities("Player")
    numPlayers = len(playerIDs)
    for playerID in playerIDs:
        playerTransform = fge.GetTransform(playerID)
        sumX += playerTransform.GetPosition()[0]
        sumZ += playerTransform.GetPosition()[2] + INITIAL_POS_Z
    sumX /= len(playerIDs) + 6
    sumZ /= len(playerIDs) + 6
    cameraPos[0] = cameraPos[0] + dt * (sumX - cameraPos[0]) * 0.001
    cameraPos[2] = cameraPos[2] + dt * (sumZ - cameraPos[2]) * 0.001
    cameraTransform.SetPosition(cameraPos[0], cameraPos[1], cameraPos[2])
Beispiel #3
0
def on_event(id, event):
    if (event.GetType() == "PlayerPickupEvent"):
        if (event.mPlayerID == id):
            audio = fge.GetAudio(id)
            audio.Load("cartoon_jump-002.wav")
            audio.Play()
            audio.Volume(0.1)
            itemID = event.mItemID
            playerHands = fge.GetCarrier(id)
            itemBody = fge.GetBody(itemID)
            if (itemBody is None):
                itemBody = fge.GetRuntimeBody(itemID)
            itemBody.mConstrainX = True
            itemBody.mConstrainY = True
            itemBody.mConstrainZ = True
            playerHands.AddItem(itemID)
            playerScale = fge.GetTransform(id).GetScale()
            itemCollider = fge.GetCollider(itemID)
            if (itemCollider is None):
                itemCollider = fge.GetRuntimeCollider(itemID)
            itemCollider.mIsTrigger = True
            itemTransform = fge.GetTransform(itemID)
            if (itemTransform is None):
                itemTransform = fge.GetRuntimeTransform(itemID)
            itemScale = itemTransform.GetScale()
            itemTransform.SetLocalPosition(
                0.0, playerScale[1] * 0.5,
                0.5 + (itemScale[2] / playerScale[2]) / 2.0)
Beispiel #4
0
def on_init(id):
    global WAYPOINT_WEIGHTS
    global CURRENT_WAYPOINT
    global NEXT_WAYPOINT
    global WAYPOINT_IDS

    ob = fge.GetObserver(id)
    ob.SetValue("time", 0.0)

    WAYPOINT_IDS = fge.GetEntities("GridWaypoint", True)
    numWaypoints = len(WAYPOINT_IDS)
    WAYPOINT_WEIGHTS.clear()
    for i in range(numWaypoints):
        WAYPOINT_WEIGHTS.append(1.0)

    if (numWaypoints > 0):
        CURRENT_WAYPOINT = -1
        CURRENT_WAYPOINT = get_next()
        NEXT_WAYPOINT = get_next()

        entityTransform = fge.GetTransform(id)
        currentPos = fge.GetTransform(CURRENT_WAYPOINT).GetPosition()
        entityTransform.SetPosition(currentPos[0], currentPos[1] + 0.01,
                                    currentPos[2])

        waypoint = fge.GetGridWaypoint(CURRENT_WAYPOINT)
        if (waypoint is not None):
            ob.SetValue(
                "time",
                RNG.GetInstance().GenerateInteger(waypoint.GetMinDuration(),
                                                  waypoint.GetMaxDuration()))
Beispiel #5
0
def toggle_particles(running):
    global CURRENT_WAYPOINT
    global NEXT_WAYPOINT

    currentPos = fge.GetTransform(CURRENT_WAYPOINT).GetPosition()
    currentParticles = fge.GetParticles(CURRENT_WAYPOINT)
    currentParticles.SetPosition(currentPos[0], currentPos[1], currentPos[2])
    currentParticles.SetRunning(running)

    nextPos = fge.GetTransform(NEXT_WAYPOINT).GetPosition()
    nextParticles = fge.GetParticles(NEXT_WAYPOINT)
    nextParticles.SetPosition(nextPos[0], nextPos[1], nextPos[2])
    nextParticles.SetRunning(running)
Beispiel #6
0
def on_event(id, event):
    global FORCE
    if (event.GetType() == "ContactEvent"):
        otherID = -1
        if (event.mId1 == id):
            otherID = event.mId2
        else:
            otherID = event.mId1
        otherTransform = fge.GetTransform(otherID)
        otherPosition = otherTransform.GetPosition()
        rotatedForce = fge.rotate(FORCE, fge.GetTransform(id))
        otherTransform.SetPosition(otherPosition[0] + rotatedForce[0],
                                   otherPosition[1] + rotatedForce[1],
                                   otherPosition[2] + rotatedForce[2])
Beispiel #7
0
def on_update(id, dt):
    global CHANGE_TIME
    global TOGGLE_TIME
    global OPEN_ROTATION
    global CLOSED_ROTATION
    ob = fge.GetObserver(id)
    changeTime = ob.GetValue("changeTime")
    changeTime = changeTime - dt * .001
    isOpen = int(ob.GetValue("isOpen")) == 1
    toggleTime = ob.GetValue("toggleTime")
    if (changeTime < 0.0):
        isOpen = not isOpen
        collider = fge.GetCollider(id)
        if (isOpen):
            collider.mIsTrigger = False
        else:
            collider.mIsTrigger = True
        ob.SetValue("isOpen", isOpen)
        toggleTime = 0.0
        changeTime = CHANGE_TIME
    if (toggleTime >= 0.0):
        toggleTime = toggleTime + (1.0 / TOGGLE_TIME) * dt * .001
        if (toggleTime > 1.0):
            toggleTime = 1.0
        transform = fge.GetTransform(id)
        newRot = []
        if (isOpen):
            newRot = fge.lerp3(CLOSED_ROTATION, OPEN_ROTATION, toggleTime)
        else:
            newRot = fge.lerp3(OPEN_ROTATION, CLOSED_ROTATION, toggleTime)
        transform.SetRotation(newRot[0], newRot[1], newRot[2])
        if (toggleTime >= 1.0):
            toggleTime = -1.0
    ob.SetValue("changeTime", changeTime)
    ob.SetValue("toggleTime", toggleTime)
Beispiel #8
0
def on_update(id, dt):
    processor = fge.GetProcessor(id)
    processorContainer = fge.GetCarrier(id)
    processorRecipes = processor.GetRecipes()
    for recipe in processorRecipes:
        recipeMap = recipe[1]
        recipeOutput = recipe[0]
        recipeMatch = True
        for resource in recipeMap:
            recipeMatch = recipeMatch and (len(
                processorContainer.GetItems(fge.DecodeResource(resource)))
                                           == recipeMap[resource])
        if (recipeMatch):
            recipeMatchEvent = fge.GetRecipeMatchEvent()
            recipeMatchEvent.mProcessorID = id
            recipeMatchEvent.mOutput = recipeOutput
            fge.SendEvent(recipeMatchEvent, id)
    if (processor.IsWorking()):
        t = processor.GetCurrentProcessingTime(
        ) / processor.GetMaxProcessingTime()
        processorContainer = fge.GetCarrier(id)
        itemIDs = processorContainer.GetItems()
        for itemID in itemIDs:
            itemTransform = fge.GetTransform(itemID)
            itemPosition = itemTransform.GetLocalPosition()
            x = (t - 1.0) * itemPosition[0]
            y = (t - 1.0) * itemPosition[1] + 1.25 * t
            z = (t - 1.0) * itemPosition[2]
            itemTransform.SetLocalPosition(x, y, z)
Beispiel #9
0
def on_update(id, dt):
    global MOVE_TIME
    global START
    global END
    ob = fge.GetObserver(id)
    movingUp = int(ob.GetValue("movingUp")) == 1
    moveTime = ob.GetValue("moveTime")
    moveTime = moveTime + (1.0 / MOVE_TIME) * dt * .001
    if (moveTime > 1.0):
        moveTime = 1.0
    transform = fge.GetTransform(id)
    newPos = []
    if (movingUp):
        newPos = fge.lerp3(END, START, moveTime)
    else:
        newPos = fge.lerp3(START, END, moveTime)
    transform.SetPosition(newPos[0], newPos[1], newPos[2])
    if (moveTime >= 1.0):
        moveTime = 0.0
    positionZ = transform.GetPosition()[2]
    if (positionZ <= START[2]):
        ob.SetValue("movingUp", 0.0)
    if (positionZ >= END[2]):
        ob.SetValue("movingUp", 1.0)
    ob.SetValue("moveTime", moveTime)
Beispiel #10
0
def on_event(id, event):
    global ITEM_SPACING
    if (event.GetType() == "ContainerInputEvent"):
        if (event.mContainerID == id):
            audio = fge.GetAudio(id)
            audio.Load("GameDeliver01.mp3", False)
            audio.Play()
            audio.Volume(0.1)
            playerHands = fge.GetCarrier(event.mPlayerID)
            heldItems = playerHands.GetItems()
            inputItems = heldItems[:event.mNumItems]
            dropEvent = fge.GetPlayerDropEvent()
            dropEvent.mPlayerID = event.mPlayerID
            fge.SendEvent(dropEvent, event.mPlayerID)
            processorContainer = fge.GetCarrier(id)
            for itemID in inputItems:
                itemBody = fge.GetBody(itemID)
                itemBody.mConstrainX = True
                itemBody.mConstrainY = True
                itemBody.mConstrainZ = True
                containerLen = len(processorContainer.GetItems())
                processorContainer.AddItem(itemID)
                itemCollider = fge.GetCollider(itemID)
                itemCollider.mIsTrigger = True
                itemTransform = fge.GetTransform(itemID)
                if (containerLen % 2) == 0:
                    itemTransform.SetLocalPosition(
                        0, 1.25,
                        math.ceil(containerLen / 2.0) * ITEM_SPACING)
                else:
                    itemTransform.SetLocalPosition(
                        0, 1.25,
                        -1 * math.ceil(containerLen / 2.0) * ITEM_SPACING)
Beispiel #11
0
def on_init(id):
    ob = fge.GetObserver(id)
    transform = fge.GetTransform(id)
    position = transform.GetPosition()
    ob.SetValue("resetX", position[0])
    ob.SetValue("resetY", position[1])
    ob.SetValue("resetZ", position[2])
Beispiel #12
0
def on_event(id, event):
    global ITEM_SPACING
    if (event.GetType() == "ContainerInputEvent"):
        if (event.mContainerID == id):
            #audio = fge.GetAudio(id)
            #audio.Load("GameDeliver01.mp3", False)
            #audio.Play()
            #audio.Volume(0.1)
            playerHands = fge.GetCarrier(event.mPlayerID)
            heldItems = playerHands.GetItems()
            inputItems = heldItems[:event.mNumItems]
            dropEvent = fge.GetPlayerDropEvent()
            dropEvent.mPlayerID = event.mPlayerID
            fge.SendEvent(dropEvent, event.mPlayerID)
            blockContainer = fge.GetCarrier(id)
            for itemID in inputItems:
                itemBody = fge.GetBody(itemID)
                itemBody.mConstrainX = True
                itemBody.mConstrainY = True
                itemBody.mConstrainZ = True
                blockContainer.AddItem(itemID)
                itemCollider = fge.GetCollider(itemID)
                itemCollider.mIsTrigger = True
                itemTransform = fge.GetTransform(itemID)
                itemScale = itemTransform.GetLocalScale()
                itemTransform.SetLocalPosition(0.0, 0.5 + 0.5 * itemScale[1],
                                               0.0)
Beispiel #13
0
def on_init(id):
    global MOVE_TIME
    ob = fge.GetObserver(id)
    ob.SetValue("moveTime", 0.0)
    transform = fge.GetTransform(id)
    ob.SetValue("movingUp", 0.0)
    if (transform.GetPosition()[2] >= 5.0):
        ob.SetValue("movingUp", 1.0)
Beispiel #14
0
def on_event(id,event):
    global GRID_ID
    if(event.GetType() == "SetCellEvent"):
        GRID_ID = event.mGridID
    if(event.GetType() == "ContainerInputEvent"):
        if(event.mContainerID == id):	
            playerHands = fge.GetCarrier(event.mPlayerID)	
            heldItems = playerHands.GetItems()
            inputItems = heldItems[:event.mNumItems]
            dropEvent = fge.GetPlayerDropEvent()
            dropEvent.mPlayerID = event.mPlayerID
            fge.SendEvent(dropEvent, event.mPlayerID)
            cellContainer = fge.GetCarrier(id)
            cellTransform = fge.GetTransform(id)
            cellPosition = cellTransform.GetPosition()
            cellScale = cellTransform.GetScale()
            for itemID in inputItems:
                itemBody = fge.GetBody(itemID)
                itemBody.mConstrainX = True
                itemBody.mConstrainY = True
                itemBody.mConstrainZ = True
                containerLen = len(cellContainer.GetItems())
                cellContainer.AddItem(itemID)
                itemCollider = fge.GetCollider(itemID)
                itemCollider.mIsTrigger = True
                itemTransform = fge.GetTransform(itemID)
                itemScale = itemTransform.GetScale()
                itemTransform.SetPosition(cellPosition[0], cellPosition[1] + 0.5 * itemScale[1] + 0.5 * cellScale[1], cellPosition[2])
            ob = fge.GetObserver(id)
            resource = fge.DecodeResource(int(ob.GetValue("resource")))
            if len(inputItems) > 0:
                if resource == fge.GetType(inputItems[0]):
                    itemTransform = fge.GetTransform(inputItems[0])
                    itemScale = itemTransform.GetScale()
                    itemTransform.SetPosition(cellPosition[0], cellPosition[1] + 0.5 * itemScale[1]  + 0.5 * cellScale[1] + 1.0, cellPosition[2])
                    cellUpdateEvent = fge.GetCellUpdateEvent()
                    cellUpdateEvent.mMatch = True
                    cellUpdateEvent.mCellID = id
                    cellUpdateEvent.mPlayerID = event.mPlayerID
                    fge.SendEvent(cellUpdateEvent, GRID_ID)
                    audio = fge.GetAudio(id)
                    audio.Load("GameDeliver01.mp3", False)
                    audio.Play()	
                    audio.Volume(0.1)
                    EntityManager.GetInstance().ToggleEntityEnable(id, False)
Beispiel #15
0
def on_init(id):
    global CHANGE_TIME
    ob = fge.GetObserver(id)
    ob.SetValue("changeTime", CHANGE_TIME)
    ob.SetValue("toggleTime", -1.0)
    transform = fge.GetTransform(id)
    collider = fge.GetCollider(id)
    collider.mIsTrigger = False
    ob.SetValue("isOpen", 1.0)
    if (transform.GetRotation()[0] < 0.0):
        ob.SetValue("isOpen", 0.0)
        collider.mIsTrigger = True
Beispiel #16
0
def on_update(id, dt):
    con = fge.GetController(id)
    player = fge.GetPlayer(id)
    #update the player
    speed = 8.0
    x = y = 0
    rot_num = 0
    rot = 0
    particles = fge.GetParticles(id)
    if(con.IsPressed("up")):
        rot += 180
        rot_num +=1
        y -= speed
    elif(con.IsPressed("down")):
        rot += 0
        rot_num +=1
        y += speed
    if(con.IsPressed("left")):
        if(con.IsPressed("up")):
            rot += 270
        else:
            rot += -90
        rot_num +=1
        x -= speed
    elif(con.IsPressed("right")):
        rot += 90
        rot_num +=1
        x += speed
    if(rot_num >= 1):
        player.Rotate(rot/rot_num)
    if(x!=0 or y != 0):
        playerTransform = fge.GetTransform(id)
        playerPos = playerTransform.GetPosition()
        playerScale = playerTransform.GetScale()
        particles.SetPosition(playerPos[0], playerPos[1], playerPos[2])
        particles.SetRunning(True)
        sprint = con.IsTriggered("Sprint")
        if(sprint):
            x = 2*x
            y = 2*y
        player.Move(x,y,sprint)
    body  =  fge.GetBody(id)
    vel = body.GetVelocity()
    xV = vel[0]
    zV = vel[2]
Beispiel #17
0
def on_event(id,event):
    if(event.GetType() == "ContainerInputEvent"):
        if(event.mContainerID == id):
            playerHands = fge.GetCarrier(event.mPlayerID)		
            heldItems = playerHands.GetItems()
            inputItems = heldItems[:event.mNumItems]
            dropEvent = fge.GetPlayerDropEvent()
            dropEvent.mPlayerID = event.mPlayerID
            fge.SendEvent(dropEvent, event.mPlayerID)
            container = fge.GetCarrier(id)
            for itemID in inputItems:
                itemBody = fge.GetBody(itemID)
                itemBody.mConstrainX = True
                itemBody.mConstrainY = True
                itemBody.mConstrainZ = True
                container.AddItem(itemID)
                itemCollider = fge.GetCollider(itemID)
                itemCollider.mIsTrigger = True
                itemTransform = fge.GetTransform(itemID)
                itemTransform.SetLocalPosition(0, -4, 0)
Beispiel #18
0
def on_update(id, dt):
    transform = fge.GetTransform(id)
    position = transform.GetPosition()
    if (position[1] < -10.0):
        carrier = fge.GetCarrier(id)
        if (carrier is not None):
            items = carrier.GetItems()
            carrier.Void()
            for item in items:
                if (fge.GetType(item) == "Game"):
                    resetGridEvent = fge.GetResetGridEvent()
                    fge.BroadcastEvent(resetGridEvent)
                fge.DeleteEntity(item)
        ob = fge.GetObserver(id)
        transform.SetPosition(ob.GetValue("resetX"), ob.GetValue("resetY"), ob.GetValue("resetZ"))
        transform.SetRotation(0.0, 0.0, 0.0)
        player = fge.GetPlayer(id)
        player.Rotate(0.0)
        body = fge.GetBody(id)
        if (body is not None):
            body.SetVelocity(0.0, 0.0, 0.0)
Beispiel #19
0
def UpdateIntro(id, dt):
    global STATE
    global CAMERA_START
    global CAMERA_END
    global TALLY

    ob = fge.GetObserver(id)
    time = ob.GetValue("time")
    time = time + dt * 0.001

    cameraID = CameraManager.GetInstance().GetCameraID()
    if (cameraID != -1):
        t = time
        if (t > 1.0):
            t = 1.0
        newPos = fge.lerp3(CAMERA_START, CAMERA_END, t)
        fge.GetTransform(cameraID).SetPosition(newPos[0], newPos[1], newPos[2])
    if (time > 2.0):
        Renderer.GetInstance().RenderText(
            "Ready?", 0.0, -100.0, 5.0, 0, 0, 0,
            1.0 - ((max(min(time, 4.0), 3.0) - 3.0) / (4.0 - 3.0)))
    if (time > 4.0):
        STATE = state.Gameplay
        TALLY = 0.0

        AudioManager.GetInstance().Load("ModuleDeliver01.mp3", False)
        AudioManager.GetInstance().PlaySFX("ModuleDeliver01.mp3", 0.5, 0.5,
                                           1.0, 1.0)

        pauseEvent = fge.GetPauseEvent()
        pauseEvent.mPause = False
        fge.BroadcastEvent(pauseEvent)

        time = 0.0

    ob.SetValue("time", time)
Beispiel #20
0
def on_init(id):
    global INITIAL_POS_Z
    global INITIALIZED
    INITIAL_POS_Z = fge.GetTransform(id).GetPosition()[2]
Beispiel #21
0
def teleport(id):
    global NEXT_WAYPOINT

    entityTransform = fge.GetTransform(id)
    nextPos = fge.GetTransform(NEXT_WAYPOINT).GetPosition()
    entityTransform.SetPosition(nextPos[0], nextPos[1] + 0.01, nextPos[2])
Beispiel #22
0
def on_event(id, event):
    global PAUSED
    global SCORE
    global GAMES
    global GAME_WEIGHTS
    global METRIC
    global UI_IDS
    global MAX_TIME
    global REQUEST_TIME
    global REQUEST_TIME_MAX
    global REWARD
    global MUSIC
    global FINISHED
    global DIFFICULTY
    global CHANGED
    global LIMIT
    global LEVEL_NUMBER
    global STATE
    global CAMERA_START
    global CAMERA_END
    global LEVEL_NAME
    if (event.GetType() == "InitLevelEvent"):
        FINISHED = 0
        STARTED = False
        CHANGED = False
        playerIDs = fge.GetEntities("Player", True)
        for playerID in playerIDs:
            playerNum = fge.GetController(playerID).GetPlayer()
            if (playerNum < event.mNumPlayers):
                EntityManager.GetInstance().ToggleEntityEnable(playerID, True)
        MAX_TIME = event.mTime
        LIMIT = event.mGames
        LEVEL_NAME = event.mLevelName
        LEVEL_NUMBER = event.mLevelNumber

        DIFFICULTY = difficulty.Easy.value

        GAMES = function(LEVEL_NUMBER, DIFFICULTY)
        MUSIC = event.mMusic
        numGames = len(GAMES)

        for game in GAMES:
            GAME_WEIGHTS.append(1.0)
        METRIC = event.mGrading
        randomNum = numGames * RNG.GetInstance().GenerateFloat(0.0, 1.0)
        selectionIndex = 0
        comparisonSum = GAME_WEIGHTS[selectionIndex]
        while randomNum > comparisonSum:
            selectionIndex = selectionIndex + 1
            comparisonSum = comparisonSum + GAME_WEIGHTS[selectionIndex]
        gameInt = GAMES[selectionIndex]
        #   print("INTITNIT")
        #  print(gameInt)
        requestMadeEvent = fge.GetRequestMadeEvent()
        requestMadeEvent.mGame = gameInt
        fge.BroadcastEvent(requestMadeEvent)

        gridID = fge.GetEntities("Grid")
        grid = fge.GetGrid(gridID[0])
        recipeSize = len(grid.GetRecipe(gameInt))
        REQUEST_TIME_MAX = 17.5 * recipeSize
        REQUEST_TIME = REQUEST_TIME_MAX
        REWARD = 2.0 * recipeSize

        STATE = state.Intro

        audio = fge.GetAudio(id)
        audio.Load(event.mMusic, True)
        audio.PlayLoop()
        audio.Volume(0.1)
        AudioManager.GetInstance().UnPauseAll()

        fge.ClearRuntimeLists()

        cameraID = CameraManager.GetInstance().GetCameraID()
        if (cameraID != -1):
            cameraTransform = fge.GetTransform(cameraID)
            CAMERA_END = cameraTransform.GetPosition()
            cameraFront = CameraManager.GetInstance().GetFront()
            CAMERA_START = [
                CAMERA_END[0] - 2.0 * cameraFront[0],
                CAMERA_END[1] - 2.0 * cameraFront[1],
                CAMERA_END[2] - 2.0 * cameraFront[2]
            ]
            cameraTransform.SetPosition(CAMERA_START[0], CAMERA_START[1],
                                        CAMERA_START[2])

        pauseEvent = fge.GetPauseEvent()
        pauseEvent.mPause = True
        fge.BroadcastEvent(pauseEvent)
    if (event.GetType() == "RequestFilledEvent"):
        FINISHED += 1
        #print("Finished = ",FINISHED)

        game = event.mRequestedGame
        deltaMultiplier = 0.5
        if REQUEST_TIME >= 0.0:
            if REQUEST_TIME > 0.5 * REQUEST_TIME_MAX:
                deltaMultiplier = 2.0
            else:
                deltaMultiplier = 1.0
        SCORE = SCORE + round(REWARD * deltaMultiplier)

        #DIFFICULTY = difficulty.Medium.value if FINISHED == testChangeDiff.Easy else difficulty.Hard.value if FINISHED == testChangeDiff.Medium else DIFFICULTY
        if FINISHED == LIMIT[0]:
            DIFFICULTY = difficulty.Medium.value
            CHANGED = True
        if FINISHED == LIMIT[0] + LIMIT[1]:
            DIFFICULTY = difficulty.Hard.value
            CHANGED = True
    #    if FINISHED >= LIMIT[0] + LIMIT[1] + LIMIT[2] :
    #        DIFFICULTY = difficulty.All.value
    #        CHANGED = True
    #print("DIff = ", DIFFICULTY)

        GAMES = function(LEVEL_NUMBER, DIFFICULTY)
        numGames = len(GAMES)

        if CHANGED:
            for game in GAMES:
                GAME_WEIGHTS.append(1.0)
                randomNum = numGames * RNG.GetInstance().GenerateFloat(
                    0.0, 1.0)
                CHANGED = False

        else:
            weightSum = 0.0
            for i in range(numGames):
                if game == GAMES[i]:
                    GAME_WEIGHTS[i] = 0.5 * GAME_WEIGHTS[i]
                else:
                    GAME_WEIGHTS[i] = 2.0 * GAME_WEIGHTS[i]
                weightSum = weightSum + GAME_WEIGHTS[i]
                randomNum = weightSum * RNG.GetInstance().GenerateFloat(
                    0.0, 1.0)

        #for x in range(numGames):
    #      print(GAME_WEIGHTS[x])

        selectionIndex = 0
        comparisonSum = GAME_WEIGHTS[selectionIndex]
        while randomNum > comparisonSum:
            selectionIndex = selectionIndex + 1
            comparisonSum = comparisonSum + GAME_WEIGHTS[selectionIndex]
        gameInt = GAMES[selectionIndex]
        requestMadeEvent = fge.GetRequestMadeEvent()
        requestMadeEvent.mGame = gameInt
        fge.BroadcastEvent(requestMadeEvent)

        gridID = fge.GetEntities("Grid")
        grid = fge.GetGrid(gridID[0])
        recipeSize = len(grid.GetRecipe(gameInt))
        REQUEST_TIME_MAX = 17.5 * recipeSize
        REQUEST_TIME = REQUEST_TIME_MAX
        REWARD = 2.0 * recipeSize
        #for i in range(numGames):
        #    if i == selectionIndex:
        #        EntityManager.GetInstance().ToggleEntityEnable(UI_IDS[i], True)
        #    else:
        #        EntityManager.GetInstance().ToggleEntityEnable(UI_IDS[i], False)
    if (event.GetType() == "PauseEvent"):
        PAUSED = event.mPause
Beispiel #23
0
def UpdateEnding(id, dt):
    global EXITING
    global TALLY
    global SCORE
    global METRIC
    global GRADES
    global LEVEL_NAME
    global STARTED_TALLY

    ob = fge.GetObserver(id)
    time = ob.GetValue("time")
    time = time + dt * 0.001

    pointsPerSecond = 25.0

    if (time + dt * 0.001 > 2.0):
        if (not STARTED_TALLY):
            STARTED_TALLY = True
            cameraID = CameraManager.GetInstance().GetCameraID()
            if (cameraID is not -1):
                windowID = fge.CreateEntity("Billboard", cameraID)
                windowTransform = fge.GetRuntimeTransform(windowID)
                cameraFront = CameraManager.GetInstance().GetFront()
                cameraPos = fge.GetTransform(cameraID).GetPosition()
                windowTransform.SetPosition(cameraPos[0] + cameraFront[0],
                                            cameraPos[1] + cameraFront[1],
                                            cameraPos[2] + cameraFront[2])
                windowTransform.SetScale(0.6, 0.6, 0.6)
                windowModel = fge.GetRuntimeModel(windowID)
                windowModel.mpMaterial = ResourceManager.GetInstance(
                ).LoadMaterial("WindowGrey")

    if (time > 2.0):
        if (not EXITING):
            TALLY = TALLY + pointsPerSecond * dt * 0.001
            if (TALLY > SCORE):
                TALLY = SCORE
            if (InputManager.GetInstance().IsTriggered("Interact")):
                TALLY = SCORE
                EXITING = True
                Renderer.GetInstance().Fade(False, 1.0)
        grade = "F"
        for i in range(len(METRIC)):
            if METRIC[i] <= TALLY:
                grade = GRADES[i]
            else:
                break
        result_str = ""
        if (math.isclose(TALLY, SCORE)):
            if grade == "F":
                result_str = "Fail"
            else:
                result_str = "Pass"
        score_str = "Score: {:0.0f}".format(TALLY)
        grade_str = "Grade: {}".format(grade)
        Renderer.GetInstance().RenderText(LEVEL_NAME, -110.0, 150.0, 2.0, 0, 0,
                                          0, 1)
        Renderer.GetInstance().RenderText(score_str, -100.0, -0.0, 2.0, 0, 0,
                                          0, 1)
        Renderer.GetInstance().RenderText(grade_str, -100.0, -100.0, 2.0, 0, 0,
                                          0, 1)
        Renderer.GetInstance().RenderText(result_str, -25.0, -250.0, 2.0, 0, 0,
                                          0, 1)
    if (Renderer.GetInstance().GetFadeMultiplier() <= 0.0):
        LevelCompleteEvent = fge.GetLevelCompleteEvent()
        LevelCompleteEvent.mScore = 50
        LevelCompleteEvent.mGrade = "A"
        fge.BroadcastEvent(LevelCompleteEvent)
        AudioManager.GetInstance().StopAll()
        fge.ChangeScene("LevelScreenFinal")

    ob.SetValue("time", time)
Beispiel #24
0
def on_update(id, dt):
    con = fge.GetController(id)
    player = fge.GetPlayer(id)
    #update the player
    speed = 8.0
    x = y = 0
    rot_num = 0
    rot = 0
    particles = fge.GetParticles(id)
    if (con.IsPressed("up")):
        rot += 180
        rot_num += 1
        y -= speed
    elif (con.IsPressed("down")):
        rot += 0
        rot_num += 1
        y += speed
    if (con.IsPressed("left")):
        if (con.IsPressed("up")):
            rot += 270
        else:
            rot += -90
        rot_num += 1
        x -= speed
    elif (con.IsPressed("right")):
        rot += 90
        rot_num += 1
        x += speed
    if (rot_num >= 1):
        player.Rotate(rot / rot_num)
    if (x != 0 or y != 0):
        playerTransform = fge.GetTransform(id)
        playerPos = playerTransform.GetPosition()
        playerScale = playerTransform.GetScale()
        #particles.SetPosition(playerPos[0], playerPos[1], playerPos[2])
        particles.SetRunning(True)
        sprint = con.IsTriggered("Sprint")
        if (sprint):
            x = 2 * x
            y = 2 * y
        player.Move(x, y, sprint)
    else:
        particles.SetRunning(False)
    playerHands = fge.GetCarrier(id)
    heldItems = playerHands.GetItems()
    lenHeldItems = len(heldItems)
    pickupAreaIDs = fge.GetChildren(id, "SearchArea")
    for pickupAreaID in pickupAreaIDs:
        pickupArea = fge.GetAreaSearch(pickupAreaID)
        foundIDs = pickupArea.GetFound()
        for foundID in foundIDs:
            foundType = fge.GetType(foundID)
            if (lenHeldItems == 0):
                if (foundType == "Processor"):
                    container = fge.GetCarrier(foundID)
                    processor = fge.GetProcessor(foundID)
                    if (len(container.GetItems()) > 0
                            and not processor.IsWorking()):
                        if (con.IsTriggered("Interact")):
                            containerOutputEvent = fge.GetContainerOutputEvent(
                            )
                            containerOutputEvent.mPlayerID = id
                            containerOutputEvent.mContainerID = foundID
                            containerOutputEvent.mNumItems = 1
                            fge.SendEvent(containerOutputEvent, foundID)
                        else:
                            containerModel = fge.GetModel(foundID)
                            if containerModel is not None:
                                containerModel.Highlight()
                        break
                if (foundType == "Block"):
                    container = fge.GetCarrier(foundID)
                    if (len(container.GetItems()) > 0):
                        if (con.IsTriggered("Interact")):
                            containerOutputEvent = fge.GetContainerOutputEvent(
                            )
                            containerOutputEvent.mPlayerID = id
                            containerOutputEvent.mContainerID = foundID
                            containerOutputEvent.mNumItems = 1
                            fge.SendEvent(containerOutputEvent, foundID)
                        else:
                            containerModel = fge.GetModel(foundID)
                            if containerModel is not None:
                                containerModel.Highlight()
                        break
                elif (foundType == "Container"):
                    continue
                elif (foundType == "Generator"):
                    inputType = ""
                    if (con.IsTriggered("Interact")):
                        inputType = "Interact"
                    if (con.IsTriggered("Sprint")):
                        inputType = "Sprint"
                    if (con.IsTriggered("action3")):
                        inputType = "action3"
                    if (con.IsTriggered("action4")):
                        inputType = "action4"
                    if (inputType != ""):
                        generatorInputEvent = fge.GetGeneratorInputEvent()
                        generatorInputEvent.mGeneratorID = foundID
                        generatorInputEvent.mPlayerID = id
                        generatorInputEvent.mInputType = inputType
                        fge.SendEvent(generatorInputEvent, foundID)
                    else:
                        highlightEvent = fge.GetHighlightEvent()
                        fge.SendEvent(highlightEvent, foundID)
                        itemModel = fge.GetModel(foundID)
                        if itemModel is not None:
                            itemModel.Highlight()
                    break
                elif (foundType == "GridCell"):
                    container = fge.GetCarrier(foundID)
                    if (len(container.GetItems()) > 0):
                        if (con.IsTriggered("Interact")):
                            containerOutputEvent = fge.GetContainerOutputEvent(
                            )
                            containerOutputEvent.mPlayerID = id
                            containerOutputEvent.mContainerID = foundID
                            containerOutputEvent.mNumItems = 1
                            fge.SendEvent(containerOutputEvent, foundID)
                        else:
                            containerModel = fge.GetModel(foundID)
                            if containerModel is not None:
                                containerModel.Highlight()
                        break
                elif (not fge.HasParent(foundID)
                      or fge.GetType(fge.GetParentID(foundID)) == "Platform"):
                    if (con.IsTriggered("Interact")):
                        pickupEvent = fge.GetPlayerPickupEvent()
                        pickupEvent.mPlayerID = id
                        pickupEvent.mItemID = foundID
                        fge.SendEvent(pickupEvent, id)
                    else:
                        itemModel = fge.GetModel(foundID)
                        if itemModel is not None:
                            itemModel.Highlight()
                    break
            else:
                if (fge.GetType(heldItems[0]) != "Game"):
                    if (foundType == "Processor"):
                        processor = fge.GetProcessor(foundID)
                        processorContainter = fge.GetCarrier(foundID)
                        if (processor.GetMaxInput() > len(
                                processorContainter.GetItems())):
                            if (con.IsTriggered("Interact")):
                                containerInputEvent = fge.GetContainerInputEvent(
                                )
                                containerInputEvent.mPlayerID = id
                                containerInputEvent.mContainerID = foundID
                                containerInputEvent.mNumItems = 1
                                fge.SendEvent(containerInputEvent, foundID)
                            else:
                                processorModel = fge.GetModel(foundID)
                                if processorModel is not None:
                                    processorModel.Highlight()
                            break
                    if (foundType == "Block"):
                        container = fge.GetCarrier(foundID)
                        block = fge.GetBlock(foundID)
                        if (1 > len(container.GetItems())
                                and block.CanInput()):
                            if (con.IsTriggered("Interact")):
                                containerInputEvent = fge.GetContainerInputEvent(
                                )
                                containerInputEvent.mPlayerID = id
                                containerInputEvent.mContainerID = foundID
                                containerInputEvent.mNumItems = 1
                                fge.SendEvent(containerInputEvent, foundID)
                            else:
                                processorModel = fge.GetModel(foundID)
                                if processorModel is not None:
                                    processorModel.Highlight()
                        break
                    if (foundType == "GridCell"):
                        cellContainter = fge.GetCarrier(foundID)
                        if (1 > len(cellContainter.GetItems())):
                            if (con.IsTriggered("Interact")):
                                containerInputEvent = fge.GetContainerInputEvent(
                                )
                                containerInputEvent.mPlayerID = id
                                containerInputEvent.mContainerID = foundID
                                containerInputEvent.mNumItems = 1
                                fge.SendEvent(containerInputEvent, foundID)
                            else:
                                cellModel = fge.GetModel(foundID)
                                if cellModel is not None:
                                    cellModel.Highlight()
                            break
                else:
                    if (foundType == "Container"):
                        if (con.IsTriggered("Interact")):
                            containerInputEvent = fge.GetContainerInputEvent()
                            containerInputEvent.mPlayerID = id
                            containerInputEvent.mContainerID = foundID
                            containerInputEvent.mNumItems = 1
                            fge.SendEvent(containerInputEvent, foundID)
                        else:
                            processorModel = fge.GetModel(foundID)
                            if processorModel is not None:
                                processorModel.Highlight()
                        break
        if (len(foundIDs) == 0 and lenHeldItems > 0
                and fge.GetType(heldItems[0]) != "Game"
                and con.IsTriggered("Interact")):
            dropEvent = fge.GetPlayerDropEvent()
            dropEvent.mPlayerID = id
            fge.SendEvent(dropEvent, id)
    body = fge.GetBody(id)
    vel = body.GetVelocity()
    xV = vel[0]
    zV = vel[2]