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
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()
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 = []
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
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()
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)
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)
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
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
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
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"
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)
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 ) )
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 = []
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)
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()
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()
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])
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
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()
def __init__(self): self.inputManager = annchienta.getInputManager() self.mapManager = annchienta.getMapManager() self.sceneManager = scene.getSceneManager() self.lastMaps = []