Ejemplo n.º 1
0
    def __init__(self, combatants):

        self.engine = annchienta.getEngine()
        self.videoManager = annchienta.getVideoManager()
        self.inputManager = annchienta.getInputManager()
        self.mapManager = annchienta.getMapManager()
        self.audioManager = annchienta.getAudioManager()
        self.cacheManager = annchienta.getCacheManager()
        self.mathManager = annchienta.getMathManager()
        self.sceneManager = scene.getSceneManager()
        self.battleManager = getBattleManager()

        self.activeCombatants = self.combatants = combatants
        self.running = True

        self.enemies = filter(lambda c: c.hostile, self.activeCombatants)
        self.allies = filter(lambda c: not c.hostile, self.activeCombatants)

        # Set positions for combatants
        for i in range(len(self.allies)):
            a = self.allies[i]
            w, h = a.getSize()
            a.setPosition(
                self.videoManager.getScreenWidth() / 2 - 30 - i * 10 - w,
                100 + i * 40 - h)

        for i in range(len(self.enemies)):
            e = self.enemies[i]
            w, h = e.getSize()
            e.setPosition(self.videoManager.getScreenWidth() / 2 + 30 + i * 10,
                          100 + i * 40 - h)

        self.updateCombatantArrays()

        self.background = None
Ejemplo n.º 2
0
def runMiniGame():
    sceneManager = SceneManager.getSceneManager()
    videoManager = annchienta.getVideoManager()
    mapManager = annchienta.getMapManager()

    sceneManager.initDialog( [] )

    # Clear entire screen.
    videoManager.clear()
    videoManager.setColor(0,0,0)
    videoManager.drawRectangle( 0, 0, videoManager.getScreenWidth(), videoManager.getScreenHeight() )
    videoManager.flip()

    # Some intro talk.
    sceneManager.text( "August:\nAnd so we took Banver's ship in attempt to reach the Jemor continent.", None )
    sceneManager.text( "August:\nBut soon we were noticed by these sky pirates Banver mentioned.", None )
    sceneManager.text( "August:\nAt first, it seemed like there weren't too many, so we tried to evade them.", None )
    sceneManager.text( "August:\nBut then...", None )

    # Save first
    sceneManager.text( "Info: Your game was saved automatically.", None )
    path = os.path.join(os.path.expanduser("~"), ".fall-of-imiryn/save.xml")
    partyManager.save(path)

    game = Game()
    game.run()

    sceneManager.quitDialog()

    # If we made it...
    if mapManager.isRunning():
        partyManager.addRecord("fleet_caught_by_captain")
        partyManager.refreshMap()
Ejemplo n.º 3
0
 def __init__(self, name, toolTip=None):
     MenuItem.__init__(self, name, toolTip)
     self.inputManager = annchienta.getInputManager()
     self.videoManager = annchienta.getVideoManager()
     self.mapManager = annchienta.getMapManager()
     self.sceneManager = scene.getSceneManager()
     self.options = []
Ejemplo n.º 4
0
    def __init__( self ):

        self.engine = annchienta.getEngine()
        self.videoManager = annchienta.getVideoManager()
        self.inputManager = annchienta.getInputManager()
        self.cacheManager = annchienta.getCacheManager()
        self.mapManager   = annchienta.getMapManager()
        self.mathManager  = annchienta.getMathManager()
        self.sceneManager = SceneManager.getSceneManager()

        # Background spriteace
        self.background = annchienta.Surface( "images/backgrounds/sky.png" )
        self.backgroundY = 0.0

        # Create a ship for the player
        self.ship = GameObject( annchienta.Vector( videoManager.getScreenWidth()/2, videoManager.getScreenHeight()/2 ),
                                annchienta.Surface( "sprites/ship_small.png" ) )

        # Load sprites into cache
        self.enemySprite = annchienta.Surface("sprites/ship_pirate.png")

        # All enemies
        self.enemies = []

        # The final enemy
        self.captain = None

        # Number of miliseconds we need to fly to gain victory
        self.victoryTime = 60000
Ejemplo n.º 5
0
    def text(self,
             text,
             backgroundProcess=annchienta.getMapManager(),
             italics=False):

        # Make sure we're dealing with text
        text = str(text)

        # Choose font
        font = self.italicsFont if italics else self.defaultFont

        # No accidental clicks
        self.inputManager.update()

        if not backgroundProcess:
            self.videoManager.storeBuffer(7)

        while self.inputManager.isRunning(
        ) and not self.inputManager.buttonTicked(
                0) and not self.inputManager.interactKeyTicked():

            self.inputManager.update()

            # Update our background process
            if backgroundProcess:
                backgroundProcess.update(False)

            self.videoManager.clear()

            # Draw the background
            if backgroundProcess:
                backgroundProcess.draw()
            else:
                self.videoManager.restoreBuffer(7)

            self.drawBox(self.margin, self.margin,
                         self.videoManager.getScreenWidth() - self.margin, 110)
            self.videoManager.setClippingRectangle(
                2 * self.margin, 2 * self.margin,
                self.videoManager.getScreenWidth() - 3 * self.margin,
                110 - self.margin)
            self.defaultColor()
            height = self.renderTextInArea(
                text, 2 * self.margin, 2 * self.margin,
                self.videoManager.getScreenWidth() - 3 * self.margin, font)
            height -= 110 - font.getLineHeight()
            self.videoManager.disableClipping()
            self.videoManager.flip()

        if not backgroundProcess:
            self.videoManager.restoreBuffer(7)

        self.mapManager.resync()
Ejemplo n.º 6
0
    def speak(self, speaker, text, italics=False):

        # Quick backup, then look at speaker
        originalCameraFollow = self.mapManager.getCameraFollow()
        self.mapManager.cameraFollow(speaker)

        # Run text
        self.text(speaker.getName().capitalize() + ":\n" + text,
                  annchienta.getMapManager(), italics)

        # Reset stuff
        self.mapManager.cameraFollow(originalCameraFollow)
Ejemplo n.º 7
0
    def __init__(self, mapControl):

        # References
        self.inputManager = annchienta.getInputManager()
        self.mapManager = annchienta.getMapManager()

        # Store mapcontrol
        self.mapControl = mapControl

        # Set parameters
        self.selectWholeTiles(True)
        self.setRadius(32)
Ejemplo n.º 8
0
    def __init__(self):

        # Currently viewed map.
        self.currentMap = None

        # Get a few references.
        self.videoManager = annchienta.getVideoManager()
        self.mapManager = annchienta.getMapManager()

        # Set the video mode
        self.videoManager.setVideoMode(640, 480, "NATE - Map View")

        # Initial camera position
        self.cameraPosition = annchienta.Vector(0, 0)

        # Draw grid method
        self.drawGridType = self.SIMPLE_DRAW_GRID
Ejemplo n.º 9
0
    def __init__( self, name, toolTip=None ):
        
        # Stuff for sounds
        self.cacheManager = annchienta.getCacheManager()
        self.audioManager = annchienta.getAudioManager()
        self.soundClickRev = self.cacheManager.getSound('sounds/click-reverse.ogg')
        self.soundClickNeg = self.cacheManager.getSound('sounds/click-negative.ogg')
        self.soundClickPos = self.cacheManager.getSound('sounds/click-positive.ogg')
        self.soundClickNeu = self.cacheManager.getSound('sounds/click-neutral.ogg')
        self.soundSave =     self.cacheManager.getSound('sounds/save.ogg')
    
        # Base constructor
        MenuItem.MenuItem.__init__( self, name, toolTip )
        
        # Get references
        self.inputManager = annchienta.getInputManager()
        self.videoManager = annchienta.getVideoManager()
        self.mapManager = annchienta.getMapManager()
        self.sceneManager = SceneManager.getSceneManager()

        # Flags
        self.done = False
        self.canceled = False
        
        # Size of the menu
        self.width, self.height = 0, 0

        # Position on the screen
        self.x, self.y = 0, 0
        self.columns = 1
        self.rows = 1

        # If the tooltip should be drawn on top of the screen
        self.toolTipOnTop = True

        # Kinda self explanatory
        self.maxItemsInColumn = 4

        # The options in the menu. Use setOptions() to set them!
        self.options = []

        # The currently selected item index
        self.selectedOptionIndex = 0
        self.selectedOption = None
Ejemplo n.º 10
0
    def __init__(self):

        # Get references
        self.engine = annchienta.getEngine()
        self.videoManager = annchienta.getVideoManager()
        self.inputManager = annchienta.getInputManager()
        self.audioManager = annchienta.getAudioManager()
        self.cacheManager = annchienta.getCacheManager()
        self.mapManager = annchienta.getMapManager()

        # Load our assets
        self.defaultFont = annchienta.Font("assets/regular.ttf", 14)
        self.italicsFont = annchienta.Font("assets/italics.ttf", 14)
        self.largeDefaultFont = annchienta.Font("assets/regular.ttf", 20)
        self.largeItalicsFont = annchienta.Font("assets/italics.ttf", 20)
        self.boxTextures = map(
            lambda i: annchienta.Surface("assets/box" + str(i) + ".png"),
            range(9))

        self.margin = 6
Ejemplo n.º 11
0
    def __init__(self, currentMap, fileName=None):

        # Store the map and filename
        self.currentMap = currentMap
        self.fileName = fileName

        # Get a reference to the MapManager
        self.mapManager = annchienta.getMapManager()

        # Load the document if we specified a filename.
        # Else, create a new document.
        if fileName:

            self.document = xml.dom.minidom.parse(fileName)
            self.mapElement = self.document.getElementsByTagName("map")[0]

        else:

            self.document = xml.dom.minidom.Document()
            self.mapElement = self.document.createElement("map")

            # Set map attributes
            self.mapElement.setAttribute("width",
                                         str(self.currentMap.getWidth()))
            self.mapElement.setAttribute("height",
                                         str(self.currentMap.getHeight()))
            self.mapElement.setAttribute("tilewidth",
                                         str(self.mapManager.getTileWidth()))
            self.mapElement.setAttribute("tileheight",
                                         str(self.mapManager.getTileHeight()))
            self.mapElement.setAttribute(
                "tileset",
                str(
                    self.toRelativePath(
                        self.currentMap.getTileSet().getDirectory())))

            # Add to document
            self.document.appendChild(self.mapElement)

            # Temporary filename
            self.fileName = "untitled.xml"
Ejemplo n.º 12
0
    def __init__(self):

        # Get a few annchienta references
        self.mapManager = annchienta.getMapManager()

        # The instance that controls the map
        self.mapControl = MapControl.MapControl(self)

        # A window to create new maps
        self.newMapWindow = NewMapWindow.NewMapWindow(self.mapControl)

        # Glade file we'll be using
        self.gladefile = "MainWindow.glade"

        # Create glade instance
        self.widgetTree = gtk.glade.XML(self.gladefile)

        # Create a dictionary for events
        dic = {
            "on_window_delete_event": self.close,
            "on_gameWorkingDirectoryChooser_selection_changed":
            self.updateGameWorkingDirectory,
            "on_tileWidthSpinButton_value_changed": self.updateTileWidth,
            "on_drawGridComboBox_changed": self.updateDrawGrid,
            "on_createNewMapButton_clicked": self.createNewMap,
            "on_openMapFileChooser_selection_changed": self.updateOpenMapFile,
            "on_saveMapFileChooser_selection_changed": self.updateSaveMapFile,
            "on_saveMapButton_clicked": self.saveMap,
            "on_nextLayerButton_clicked": self.nextLayer,
            "on_addLayerButton_clicked": self.addLayer,
            "on_changeLayerZSpinButton_value_changed": self.updateLayerZ,
            "on_editWholeTilesCheckButton_toggled": self.updateWholeTiles,
            "on_editRadiusSpinButton_value_changed": self.updateEditRadius,
            "on_showTilesWindowButton_clicked": self.showTilesWindow,
            "on_showSidesWindowButton_clicked": self.showSidesWindow
        }

        # Connect that dictionary
        self.widgetTree.signal_autoconnect(dic)
Ejemplo n.º 13
0
    def __init__( self ):

        # Get references
        self.engine = annchienta.getEngine()
        self.videoManager = annchienta.getVideoManager()
        self.inputManager = annchienta.getInputManager()
        self.cacheManager = annchienta.getCacheManager()
        self.mapManager   = annchienta.getMapManager()
        self.mathManager  = annchienta.getMathManager()
        self.sceneManager = SceneManager.getSceneManager()

        # Load images
        self.background = annchienta.Surface("images/backgrounds/water.png")
        self.cacheManager.getSurface("sprites/rock1.png")
        self.cacheManager.getSurface("sprites/rock2.png")

        # Initial positions
        self.backgroundY = 0.0
        self.speed = 0.1
        self.nextSpawn = 500
        self.rocks = []

        self.raft = RaftObject( annchienta.Surface("sprites/raft.png"), annchienta.Vector( self.videoManager.getScreenWidth()/2, self.videoManager.getScreenHeight()/2 ) )
Ejemplo n.º 14
0
    def __init__(self, combatants, background, canFlee):

        # Set variables
        self.combatants = combatants
        self.running = True
        self.background = background
        self.canFlee = canFlee
        self.won = False
        self.actionLock = False

        # Get references
        self.engine = annchienta.getEngine()
        self.videoManager = annchienta.getVideoManager()
        self.inputManager = annchienta.getInputManager()
        self.cacheManager = annchienta.getCacheManager()
        self.mathManager = annchienta.getMathManager()
        self.mapManager = annchienta.getMapManager()
        self.audioManager = annchienta.getAudioManager()
        self.sceneManager = SceneManager.getSceneManager()
        self.partyManager = PartyManager.getPartyManager()

        # Lines for the 'console' window
        self.lines = []
Ejemplo n.º 15
0
    def __init__(self):

        # Get some references
        self.engine = annchienta.getEngine()
        self.inputManager = annchienta.getInputManager()
        self.mapManager = annchienta.getMapManager()
        self.cacheManager = annchienta.getCacheManager()
        self.mathManager = annchienta.getMathManager()
        self.sceneManager = SceneManager.getSceneManager()

        # Set variables
        self.player = 0
        self.records = []
        self.inventory = 0
        self.lastMaps = []
        self.currentMap = 0
        self.startTime = 0

        # Create a map loader
        self.mapLoader = MapLoader()

        # Battle variables
        self.randomBattleDelay = self.mathManager.randInt(300, 400)
Ejemplo n.º 16
0
    def __init__(self):

        # Stuff for sounds
        self.cacheManager = annchienta.getCacheManager()
        self.audioManager = annchienta.getAudioManager()
        self.soundClickRev = self.cacheManager.getSound(
            'sounds/click-reverse.ogg')
        self.soundClickNeg = self.cacheManager.getSound(
            'sounds/click-negative.ogg')
        self.soundClickPos = self.cacheManager.getSound(
            'sounds/click-positive.ogg')
        self.soundClickNeu = self.cacheManager.getSound(
            'sounds/click-neutral.ogg')
        self.soundSave = self.cacheManager.getSound('sounds/save.ogg')

        # General references
        self.mapManager = annchienta.getMapManager()
        self.inputManager = annchienta.getInputManager()
        self.partyManager = PartyManager.getPartyManager()

        self.menu = Menu.Menu("In-Game Menu", "Select action.")

        options = []

        # An option that does nothing.
        options += [
            MenuItem.MenuItem("continue", "Close menu and continue playing.")
        ]

        # A submenu for party management.
        options += [MenuItem.MenuItem("party", "Change equipment, heal...")]

        # An option to quit.
        options += [MenuItem.MenuItem("quit", "Stop playing.")]

        self.menu.setOptions(options)
        self.menu.top()
Ejemplo n.º 17
0
class SceneManager:

    margin = 6
    defaultFont, italicsFont = None, None
    boxTextures = []

    engine = annchienta.getEngine()
    videoManager = annchienta.getVideoManager()
    inputManager = annchienta.getInputManager()
    audioManager = annchienta.getAudioManager()
    cacheManager = annchienta.getCacheManager()
    mathManager = annchienta.getMathManager()
    mapManager = annchienta.getMapManager()

    def waitForClick(self):
        self.videoManager.storeBuffer(7)
        self.inputManager.update()
        while self.inputManager.running(
        ) and not self.inputManager.buttonTicked(0):
            self.inputManager.update()
            self.videoManager.clear()
            self.videoManager.restoreBuffer(7)
            self.videoManager.flip()

        self.mapManager.resync()

    def defaultColor(self):
        self.videoManager.setColor(255, 255, 255)

    def activeColor(self):
        self.videoManager.setColor(255, 255, 0)

    def inactiveColor(self):
        self.videoManager.setColor(170, 170, 170)

    ## \brief Draw a box.
    #
    #  A box is the main GUI element. You can customize the box layout
    #  by changing bitmaps.
    def drawBox(self, x1, y1, x2, y2):

        #self.videoManager.push()
        #self.videoManager.identity()
        self.videoManager.boxBlur(x1, y1, x2, y2)
        #self.videoManager.pop()

        # If there are not enough textures, just draw a stupid simple box.
        if (len(self.boxTextures) <= 8):
            self.videoManager.setColor(100, 100, 150, 200)
            self.videoManager.drawRectangle(x1, y1, x2, y2)
            self.videoManager.setColor()
        else:
            # Draw the corner textures
            self.videoManager.drawSurface(self.boxTextures[0], x1, y1)
            self.videoManager.drawSurface(self.boxTextures[2],
                                          x2 - self.boxTextures[2].getWidth(),
                                          y1)
            self.videoManager.drawSurface(self.boxTextures[6], x1,
                                          y2 - self.boxTextures[6].getHeight())
            self.videoManager.drawSurface(self.boxTextures[8],
                                          x2 - self.boxTextures[2].getWidth(),
                                          y2 - self.boxTextures[6].getHeight())

            # Draw the side textures as patterns.
            self.videoManager.drawPattern(self.boxTextures[1],
                                          x1 + self.boxTextures[0].getWidth(),
                                          y1,
                                          x2 - self.boxTextures[2].getWidth(),
                                          y1 + self.boxTextures[1].getHeight())
            self.videoManager.drawPattern(self.boxTextures[7],
                                          x1 + self.boxTextures[7].getWidth(),
                                          y2 - self.boxTextures[7].getHeight(),
                                          x2 - self.boxTextures[8].getWidth(),
                                          y2)
            self.videoManager.drawPattern(self.boxTextures[3], x1,
                                          y1 + self.boxTextures[0].getHeight(),
                                          x1 + self.boxTextures[3].getWidth(),
                                          y2 - self.boxTextures[6].getHeight())
            self.videoManager.drawPattern(self.boxTextures[5],
                                          x2 - self.boxTextures[5].getWidth(),
                                          y1 + self.boxTextures[2].getHeight(),
                                          x2,
                                          y2 - self.boxTextures[8].getHeight())

            # Draw the main texture as pattern.
            self.videoManager.drawPattern(self.boxTextures[4],
                                          x1 + self.boxTextures[0].getWidth(),
                                          y1 + self.boxTextures[0].getHeight(),
                                          x2 - self.boxTextures[8].getWidth(),
                                          y2 - self.boxTextures[8].getHeight())

    ## \brief Renders justified text.
    #
    #  \return The height of the rendered text.
    def renderTextInArea(self, text, x1, y1, x2, font):
        paragraphs = text.split('\n')
        spaceWidth = font.getStringWidth(' ')
        maxWidth = x2 - x1
        oy1 = y1
        for paragraph in paragraphs:
            words = paragraph.split()
            lineWords = []
            totalWidth = 0
            for word in words:
                if totalWidth + font.getStringWidth(
                        word) + spaceWidth < maxWidth:
                    totalWidth += font.getStringWidth(word) + spaceWidth
                    lineWords.append(word)
                else:
                    if len(lineWords) <= 0:
                        break
                    totalWidth = -spaceWidth
                    for w in lineWords:
                        totalWidth += font.getStringWidth(w)
                    actualSpaceWidth = (maxWidth -
                                        totalWidth) / (len(lineWords))
                    x = x1
                    for w in lineWords:
                        self.videoManager.drawString(font, w, x, y1)
                        x += font.getStringWidth(w) + actualSpaceWidth
                    y1 += font.getLineHeight()
                    totalWidth = font.getStringWidth(word)
                    lineWords = [word]
            x = x1
            for w in lineWords:
                self.videoManager.drawString(font, w, x, y1)
                x += font.getStringWidth(w) + spaceWidth
            y1 += font.getLineHeight()
        # Return the height elapsed.
        return y1 - oy1

    ## \brief Display some text.
    #
    #  \param text The text to be displayed.
    def text(self, text, font=None):

        font = self.defaultFont if font is None else font

        text = str(text)

        self.inputManager.update()
        self.videoManager.storeBuffer(7)

        while self.inputManager.running(
        ) and not self.inputManager.buttonTicked(0):

            self.inputManager.update()

            self.videoManager.clear()
            self.videoManager.restoreBuffer(7)
            self.drawBox(self.margin, self.margin,
                         self.videoManager.getScreenWidth() - self.margin, 110)
            self.videoManager.setClippingRectangle(
                2 * self.margin, 2 * self.margin,
                self.videoManager.getScreenWidth() - 3 * self.margin,
                110 - self.margin)
            self.defaultColor()
            height = self.renderTextInArea(
                text, 2 * self.margin, 2 * self.margin,
                self.videoManager.getScreenWidth() - 3 * self.margin, font)
            height -= 110 - font.getLineHeight()
            self.videoManager.disableClipping()
            self.videoManager.flip()

        self.videoManager.restoreBuffer(7)
        self.mapManager.resync()

    def thoughts(self, text):

        text = str(text)
        scroll = 0
        self.inputManager.update()
        self.videoManager.storeBuffer(7)
        while self.inputManager.running(
        ) and not self.inputManager.buttonTicked(0):

            self.inputManager.update()

            self.videoManager.clear()
            self.videoManager.setColor(0, 0, 0)
            self.videoManager.drawRectangle(
                0, 0, self.videoManager.getScreenWidth(),
                self.videoManager.getScreenHeight())
            self.defaultColor()
            self.renderTextInArea(
                text, 2 * self.margin, 100,
                self.videoManager.getScreenWidth() - 2 * self.margin,
                self.italicsFont)
            self.videoManager.flip()

        self.videoManager.restoreBuffer(7)
        self.mapManager.resync()

    ## \brief Display some info.
    #
    #  \param text The text to be displayed.
    def info(self, text, timeOut=800):

        text = str(text)
        self.inputManager.update()
        self.videoManager.storeBuffer(7)

        start = self.engine.getTicks()

        done = False

        while not done:

            self.inputManager.update()

            self.videoManager.clear()
            self.videoManager.restoreBuffer(7)
            self.drawBox(
                self.margin,
                self.videoManager.getScreenHeight() - self.margin * 3 -
                self.defaultFont.getLineHeight(),
                self.videoManager.getScreenWidth() - self.margin,
                self.videoManager.getScreenHeight() - self.margin)
            self.defaultColor()
            self.videoManager.drawString(
                self.defaultFont, text, 2 * self.margin,
                self.videoManager.getScreenHeight() - self.margin * 2 -
                self.defaultFont.getLineHeight())
            self.videoManager.flip()

            if not self.inputManager.running(
            ) or self.inputManager.buttonTicked(0):
                done = True

            if timeOut is not None:
                if self.engine.getTicks() > start + timeOut:
                    done = True

        self.videoManager.restoreBuffer(7)
        self.mapManager.resync()

    ## \brief lets someone say something.
    #
    def speak(self, object, text):

        self.mapManager.cameraPeekAt(object, True)
        self.videoManager.clear()
        self.mapManager.renderFrame()
        self.text(object.getName().capitalize() + ":\n" + text,
                  self.defaultFont)

    def chat(self, speaker, intro, answers):

        if speaker is not None:
            self.mapManager.cameraPeekAt(speaker, True)
        self.videoManager.clear()
        self.mapManager.renderFrame()

        selected = 0
        self.inputManager.update()
        self.videoManager.storeBuffer(7)

        intro = (speaker.getName().capitalize() + ":\n" +
                 intro) if speaker is not None else intro

        done = False

        while self.inputManager.running() and not done:

            self.inputManager.update()

            y = 0

            self.videoManager.clear()
            self.videoManager.restoreBuffer(7)
            self.drawBox(self.margin, self.margin,
                         self.videoManager.getScreenWidth() - self.margin, 110)
            # Make sure everything goes in the box.
            self.videoManager.setClippingRectangle(
                2 * self.margin, 2 * self.margin,
                self.videoManager.getScreenWidth() - 2 * self.margin,
                110 - self.margin)
            self.defaultColor()
            height = self.renderTextInArea(
                intro, 2 * self.margin, 2 * self.margin + y,
                self.videoManager.getScreenWidth() - 2 * self.margin,
                self.defaultFont)
            y += height + self.margin

            for i in range(len(answers)):

                if self.inputManager.hover(
                        2 * self.margin, 2 * self.margin + y,
                        self.videoManager.getScreenWidth() - 2 * self.margin,
                        2 * self.margin + y +
                        self.defaultFont.getLineHeight()):
                    self.activeColor()
                    if self.inputManager.buttonTicked(0):
                        selected = i
                        done = True
                else:
                    self.inactiveColor()

                height = self.renderTextInArea(
                    answers[i], 2 * self.margin, 2 * self.margin + y,
                    self.videoManager.getScreenWidth() - 2 * self.margin,
                    self.defaultFont)
                y += height

            self.videoManager.disableClipping()
            self.videoManager.flip()

        self.videoManager.setColor()
        self.videoManager.restoreBuffer(7)
        self.mapManager.resync()
        return selected

    def choose(self, title, answers):

        selected = 0
        done = False
        self.inputManager.update()
        self.videoManager.storeBuffer(7)

        while self.inputManager.running() and not done:

            self.inputManager.update()

            self.videoManager.clear()
            self.videoManager.restoreBuffer(7)
            self.drawBox(self.margin, self.margin,
                         self.videoManager.getScreenWidth() - self.margin, 110)
            self.defaultColor()
            y = self.margin * 2
            self.videoManager.drawString(self.defaultFont, title,
                                         self.margin * 2, y)
            y += self.defaultFont.getLineHeight()
            for i in range(len(answers)):

                if self.inputManager.hover(
                        self.margin * 2, y,
                        self.videoManager.getScreenWidth() - self.margin * 2,
                        y + self.defaultFont.getLineHeight()):
                    self.activeColor()
                    if self.inputManager.buttonTicked(0):
                        selected = i
                        done = True
                else:
                    self.inactiveColor()

                self.videoManager.drawString(self.defaultFont, answers[i],
                                             self.margin * 2, y)
                y += self.defaultFont.getLineHeight()
            self.videoManager.flip()

        self.videoManager.setColor()
        self.videoManager.restoreBuffer(7)
        self.mapManager.resync()
        return answers[selected]

    ## \moves someone.
    #
    def move(self, objects, points):

        # Convert objects and points to lists if they aren't.
        if type(objects) is not type([]):
            objects = [objects]
            points = [points]

        self.inputManager.update()
        self.inputManager.setInputMode(annchienta.CinematicMode)

        going = 1

        while self.inputManager.running() and going:

            going = sum(
                map(lambda i: int(objects[i].stepTo(points[i])),
                    range(len(objects))))

            self.mapManager.update(False)
            self.inputManager.update()

            self.mapManager.cameraPeekAt(objects[0], True)

            self.videoManager.clear()
            self.mapManager.renderFrame()
            self.videoManager.flip()

        self.inputManager.setInputMode(annchienta.InteractiveMode)
        self.mapManager.resync()

    ## \brief Inits a dialog.
    #
    def initDialog(self, objects):
        for o in objects:
            o.freeze(True)
            o.setStandAnimation()
        for i in range(len(objects)):
            objects[i].lookAt(objects[(i + 1) % len(objects)])
        self.objectsInDialog = objects

    ## \brief Ends a dialog.
    #
    def quitDialog(self):
        for object in self.objectsInDialog:
            object.freeze(False)

    ## \fades
    #
    def fadeOut(self, r=0, g=0, b=0, ms=500):
        start = self.engine.getTicks()
        self.videoManager.storeBuffer(7)
        while self.engine.getTicks(
        ) < start + ms and self.inputManager.running():
            self.inputManager.update()
            alpha = float(self.engine.getTicks() - start) / float(ms) * 255.0
            self.videoManager.clear()
            self.videoManager.restoreBuffer(7)
            self.videoManager.setColor(r, g, b, int(alpha))
            self.videoManager.drawRectangle(
                0, 0, self.videoManager.getScreenWidth(),
                self.videoManager.getScreenHeight())
            self.videoManager.flip()
        self.mapManager.resync()

    def rotateEffect(self, duration=1500):
        start = self.engine.getTicks()
        self.videoManager.storeBuffer(7)
        while self.engine.getTicks(
        ) < start + duration and self.inputManager.running():
            factor = float(self.engine.getTicks() - start) / float(duration)
            self.videoManager.clear()
            self.videoManager.translate(
                self.videoManager.getScreenWidth() / 2,
                self.videoManager.getScreenHeight() / 2)
            self.videoManager.rotate((factor + 1.) * (factor + 1.) * 360.)
            self.videoManager.scale(factor * 50., factor * 50.)
            self.videoManager.translate(
                -self.videoManager.getScreenWidth() / 2,
                -self.videoManager.getScreenHeight() / 2)
            self.videoManager.restoreBuffer(7)
            self.videoManager.flip()
        self.mapManager.resync()

    def noise(self, duration=1000):
        start = self.engine.getTicks()
        self.videoManager.storeBuffer(7)
        s = self.cacheManager.getSound("sounds/noise.ogg")
        self.audioManager.playSound(s)
        while self.engine.getTicks(
        ) < start + duration and self.inputManager.running():
            self.inputManager.update()
            self.videoManager.clear()
            r = self.mathManager.randInt(0, 256)
            self.videoManager.setColor(r, r, r)
            self.videoManager.drawRectangle(
                0, 0, self.videoManager.getScreenWidth(),
                self.videoManager.getScreenHeight())
            self.videoManager.flip()
        self.videoManager.setColor()
        self.videoManager.restoreBuffer(7)
        self.mapManager.resync()
Ejemplo n.º 18
0
import annchienta
import PartyManager, SceneManager, BattleManager

mapManager = annchienta.getMapManager()
videoManager = annchienta.getVideoManager()
partyManager = PartyManager.getPartyManager()
sceneManager = SceneManager.getSceneManager()

currentMap = partyManager.getCurrentMap()

partyManager.addRecord("inaran_cave3_scene")

# Create a whole bunch of objects/persons and set them to
# their positions.
august = partyManager.getPlayer()
augustPosition = august.getPosition().to(annchienta.TilePoint)

march = annchienta.Person("march", "locations/common/march.xml")
currentMap.addObject(
    march,
    annchienta.Point(annchienta.TilePoint, augustPosition.x + 1,
                     augustPosition.y))

avril = annchienta.Person("avril", "locations/common/avril.xml")
currentMap.addObject(
    avril,
    annchienta.Point(annchienta.TilePoint, augustPosition.x,
                     augustPosition.y + 1))

# Init our dialog.
sceneManager.initDialog([august, march, avril])
Ejemplo n.º 19
0
    def pop( self, backgroundProcess = annchienta.getMapManager() ):

        self.backgroundProcess = backgroundProcess

        # Disable character input/movement
        originalInputMode = self.inputManager.getInputMode()
        self.inputManager.setInputMode( annchienta.CinematicMode )

        # Player stops walking...
        inputControlledPerson = self.inputManager.getInputControlledPerson()
        if inputControlledPerson:
            inputControlledPerson.setStandAnimation()

        # Store background if we don't have a process to generate it
        if not backgroundProcess:
            self.videoManager.storeBuffer(6)

        # Avoid accidental clicks
        self.inputManager.update()
        
        # Initialize some stuff
        self.done = False
        self.selectedOption = None
        self.selectedOptionIndex = 0

        while not self.done:
        
            self.videoManager.clear()
            
            # Draw appropriate background
            if backgroundProcess:
                backgroundProcess.draw()
            else:
                self.videoManager.restoreBuffer(6)
            
            # Draw self
            self.render()
            
            self.videoManager.flip()

            self.update()

        self.mapManager.resync()

        self.videoManager.setColor()
        
        if not backgroundProcess:
            self.videoManager.restoreBuffer(6)

        # Restore input mode
        self.inputManager.setInputMode( originalInputMode )

        # If canceled, return None
        if self.canceled:
            self.audioManager.playSound( self.soundClickRev )
            return None
        else:
            # If the chosen item is a submenu, recursively call that submenu.
            if self.selectedOption.isMenu():
                sub = self.selectedOption.pop( backgroundProcess )
                # If the submenu was canceled, we return to this menu
                if sub is None:
                    self.audioManager.playSound( self.soundClickRev )
                    return self.pop( backgroundProcess )
                # Return the item chosen by the submenu
                else:
                    return sub
            # Simply return the item.
            else:
                return self.selectedOption
Ejemplo n.º 20
0
    def __init__(self):

        # Init this widget
        QWidget.__init__(self)
        uic.loadUi("editor.ui", self)

        self.hasOpenedMap = False

        # Create an annchienta context
        self.videoManager = annchienta.getVideoManager()
        self.mapManager = annchienta.getMapManager()
        self.inputManager = annchienta.getInputManager()
        self.engine = annchienta.getEngine()

        # Set the video mode
        self.videoManager.setVideoMode(600, 500, "Map", False)

        # Mouse
        self.mouseX, self.mouseY = 0, 0

        # Create a timer that will update the map from time to time.
        self.timer = QTimer(self)
        self.connect(self.timer, SIGNAL("timeout()"), self.updateMap)
        self.timer.start(60)

        # Connect configuration buttons
        self.connect(self.selectGameDirectoryButton, SIGNAL("clicked()"),
                     self.selectGameDirectory)

        # Connect map buttons
        self.connect(self.newMapButton, SIGNAL("clicked()"), self.newMap)
        self.connect(self.openMapButton, SIGNAL("clicked()"), self.openMap)
        self.connect(self.refreshMapButton, SIGNAL("clicked()"),
                     self.refreshMap)

        self.connect(self.saveMapButton, SIGNAL("clicked()"), self.saveMap)
        self.connect(self.saveMapAsButton, SIGNAL("clicked()"), self.saveMapAs)

        self.connect(self.tileWidthBox, SIGNAL("valueChanged(int)"),
                     self.changeTileWidth)
        self.changeTileWidth()

        self.connect(self.addLayerButton, SIGNAL("clicked()"), self.addLayer)

        self.connect(self.nextLayerButton, SIGNAL("clicked()"), self.nextLayer)
        self.connect(self.layerZBox, SIGNAL("valueChanged(int)"),
                     self.changeLayerZ)
        self.connect(self.layerOpacityBox, SIGNAL("valueChanged(int)"),
                     self.changeLayerOpacity)

        #self.connect( self.zGroupBox, SIGNAL("toggled(bool)"), self.selectZGroupBox )
        #self.connect( self.tileGroupBox, SIGNAL("toggled(bool)"), self.selectTileGroupBox )
        #self.connect( self.tileSideGroupBox, SIGNAL("toggled(bool)"), self.selectTileSideGroupBox )

        self.connect(self.pythonClearButton, SIGNAL("clicked()"),
                     self.clearPythonCode)
        self.connect(self.pythonExecuteButton, SIGNAL("clicked()"),
                     self.executePythonCode)
        self.clearPythonCode()

        self.newMapDialog = newmap.NewMapDialog(self)

        self.selected = tiles.Selection()
Ejemplo n.º 21
0
    def __init__(self):
        self.inputManager = annchienta.getInputManager()
        self.mapManager = annchienta.getMapManager()
        self.sceneManager = scene.getSceneManager()

        self.lastMaps = []