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 __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 __init__(self): self.audioManager = annchienta.getAudioManager() self.mathManager = annchienta.getMathManager() self.logManager = annchienta.getLogManager() self.engine = annchienta.getEngine() self.enemiesInMap = [] self.battleBackground = None self.randomBattleDelay = self.mathManager.randInt(300, 1000)
def __init__( self ): self.engine = annchienta.getEngine() self.videoManager = annchienta.getVideoManager() self.background = annchienta.Surface( "images/backgrounds/land.png" ) self.ship = annchienta.Surface( "sprites/ship_small.png" ) self.backgroundY = 0.0 self.lastUpdate = None
def __init__(self, sprite, sound): self.engine = annchienta.getEngine() self.videoManager = annchienta.getVideoManager() self.inputManager = annchienta.getInputManager() self.sprite = sprite self.sound = sound self.battle = None self.combatant = None self.target = None
def __init__( self ): # Get nessecary references self.engine = annchienta.getEngine() self.videoManager = annchienta.getVideoManager() self.inputManager = annchienta.getInputManager() self.audioManager = annchienta.getAudioManager() self.cacheManager = annchienta.getCacheManager() # Set video mode. self.videoManager.setVideoMode( 480, 320, "Happy Squirrel Land!" ) self.inputManager.setMouseVisibility( False ) self.game = Game.Game()
def __init__(self): # Get nessecary references self.engine = annchienta.getEngine() self.videoManager = annchienta.getVideoManager() self.inputManager = annchienta.getInputManager() self.audioManager = annchienta.getAudioManager() self.cacheManager = annchienta.getCacheManager() # Various sprites self.background = self.cacheManager.getSurface("data/background.png") self.target = self.cacheManager.getSurface("data/target.png") # Main font self.font = annchienta.Font("data/regular.ttf", 14)
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): self.engine = annchienta.getEngine() self.mathManager = annchienta.getMathManager() self.videoManager = annchienta.getVideoManager() self.inputManager = annchienta.getInputManager() self.logManager = annchienta.getLogManager() self.audioManager = annchienta.getAudioManager() self.partyManager = PartyManager.getPartyManager() self.enemiesLocation = "battle/enemies.xml" self.enemiesFile = xml.dom.minidom.parse(self.enemiesLocation) self.randomBattleDelay = self.mathManager.randInt(300, 400) self.background = None # Drum on battle start self.drum = annchienta.Sound("sounds/battle.ogg") self.randomBattleEnemies = []
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 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): # 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)
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 scene import party engine = annchienta.getEngine() mapManager = annchienta.getMapManager() inputManager = annchienta.getInputManager() videoManager = annchienta.getVideoManager() sceneManager = scene.getSceneManager() partyManager = party.getPartyManager() active = annchienta.getActiveObject() passive = annchienta.getPassiveObject() # The name of the passive object. passiveName = "nameless" if "getName" in dir(passive): passiveName = passive.getName().lower() player = partyManager.player # The first event if not partyManager.hasRecord("prison_awakening"): # Quick quote. f1, f2 = annchienta.Font("assets/italics.ttf", 15), annchienta.Font("assets/italics.ttf", 11) videoManager.clear() videoManager.drawStringCentered( f1, "Non fueram, non sum, nescio, non ad me pertinet.", videoManager.getScreenWidth() / 2, 100)
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()