Beispiel #1
0
    def createWorldMap(self):
        self.worldMap = WorldMap(parent=self,
                                 state=DGG.NORMAL,
                                 pos=(0.55000000000000004, 0, 0.62),
                                 scale=0.46999999999999997)
        if __dev__ and 0:

            def changeMouseMode():
                self.worldMap.mapBall.rMode += 1
                self.worldMap.mapBall.rMode %= 2
                self.mouseModeLabel['text'] = ` self.worldMap.mapBall.rMode `

            self.mouseModeButton = DirectButton(parent=self,
                                                text='MouseMode',
                                                scale=0.065000000000000002,
                                                pos=(0.25, 0,
                                                     0.089999999999999997),
                                                command=changeMouseMode)
            self.mouseModeLabel = DirectLabel(parent=self,
                                              scale=0.074999999999999997,
                                              pos=(0.5, 0,
                                                   0.086999999999999994),
                                              text=`
                                              self.worldMap.mapBall.rMode `,
                                              text_fg=(1, 1, 1, 1),
                                              textMayChange=1)
    def createWorldMap(self):
        self.worldMap = WorldMap(parent = self, state = DGG.NORMAL, pos = (0.55000000000000004, 0, 0.62), scale = 0.46999999999999997)
        if __dev__ and 0:

            def changeMouseMode():
                self.worldMap.mapBall.rMode += 1
                self.worldMap.mapBall.rMode %= 2
                self.mouseModeLabel['text'] = `self.worldMap.mapBall.rMode`

            self.mouseModeButton = DirectButton(parent = self, text = 'MouseMode', scale = 0.065000000000000002, pos = (0.25, 0, 0.089999999999999997), command = changeMouseMode)
            self.mouseModeLabel = DirectLabel(parent = self, scale = 0.074999999999999997, pos = (0.5, 0, 0.086999999999999994), text = `self.worldMap.mapBall.rMode`, text_fg = (1, 1, 1, 1), textMayChange = 1)
Beispiel #3
0
class MapPage(InventoryPage.InventoryPage):
    __module__ = __name__

    def __init__(self):
        InventoryPage.InventoryPage.__init__(self)
        self.initialiseoptions(MapPage)
        self.shardPanel = None
        self.worldMap = None
        self.gear = None
        self.portOfCall = ''
        self.portOfCallLabel = None
        self.portOfCallButton = None
        self.minimapButton = None
        self.createPortOfCall()
        self.createWorldMap()
        self.createFrontOrnament()
        self.createShardPanel()
        self.createButtons()
        self.hide()
        return

    def destroy(self):
        InventoryPage.InventoryPage.destroy(self)
        self.shardPanel = None
        self.gear = None
        self.worldMap = None
        self.portOfCallLabel = None
        self.portOfCallButton = None
        self.minimapButton = None
        return

    def show(self, *args, **kwargs):
        super(self.__class__, self).show(*args, **kwargs)
        self.worldMap.enable()
        self.worldMap.show()
        self.accept('texture_state_changed', self.resetTexture)

    def resetTexture(self, data=None):
        self.worldMap.disable()
        self.worldMap.enable()

    def slideOpenCallback(self):
        self.worldMap.resetArcBall()
        self.worldMap.rotateAvatarToCenter()

    def hide(self, *args, **kwargs):
        super(self.__class__, self).hide(*args, **kwargs)
        self.worldMap.disable()
        self.worldMap.hide()
        self.ignore('texture_state_changed')

    def slideCloseCallback(self):
        self.shardPanel.hideIfShown()

    def createPortOfCall(self):
        if self.portOfCallLabel:
            self.portOfCallLabel.destroy()
        if self.portOfCallButton:
            self.portOfCallButton.destroy()
        compassGui = loader.loadModel('models/gui/compass_gui')
        topGui = loader.loadModel('models/gui/toplevel_gui')
        teleportIcon = topGui.find('**/treasure_w_b_slot_empty').copyTo(NodePath(''))
        compassGui.find('**/compass_icon_objective_green').copyTo(teleportIcon)
        teleportIcon.flattenStrong()
        self.portOfCallLabel = DirectLabel(parent=self, text='', text_align=TextNode.ALeft, text_font=PiratesGlobals.getPirateOutlineFont(), text_scale=0.045, text_fg=PiratesGuiGlobals.TextFG2, textMayChange=1, pos=(0.49,
                                                                                                                                                                                                                        0,
                                                                                                                                                                                                                        0.073))
        self.portOfCallButton = GuiButton.GuiButton(parent=self, pos=(0.38, 0, 0.085), scale=0.85, text=PLocalizer.Return, text_pos=(0.033, -0.014), text_scale=0.045, textMayChange=1, image3_color=(0.8,
                                                                                                                                                                                                      0.8,
                                                                                                                                                                                                      0.8,
                                                                                                                                                                                                      1), geom=teleportIcon, geom_pos=(-0.065, 0, 0), geom_scale=0.2, command=self.handlePortOfCall)

    def createFrontOrnament(self):
        geom = loader.loadModel('models/gui/gui_map_window')
        geom.reparentTo(self)
        geom.setPos(0.54, 0, 0.725)
        geom.setScale(0.32)
        geom.flattenStrong()

    def createButtons(self):
        if not base.config.GetBool('want-momentary-minimap', 1):
            guiMain = loader.loadModel('models/gui/gui_main')
            btImages = (
             guiMain.find('**/minimap_button'), guiMain.find('**/minimap_button'), guiMain.find('**/minimap_button_over'), guiMain.find('**/minimap_button'))
            self.minimapButton = GuiButton.GuiButton(parent=self, image=btImages, selectedImage=btImages, pos=(0.9,
                                                                                                               0,
                                                                                                               1.16), scale=1.5, hotkeys=['f8'], hotkeyLabel='F8', command=self.handleMinimapButton)
            self.minimapButton.hotkeyLabel.setPos(-0.05, 0.0, -0.05)
            self.minimapButton.hotkeyLabel.setScale(0.75)
        else:
            self.minimapButton = None
        return

    def createWorldMap(self):
        self.worldMap = WorldMap(parent=self, state=DGG.NORMAL, pos=(0.55, 0, 0.62), scale=0.47)
        if __dev__ and 0:

            def changeMouseMode():
                self.worldMap.mapBall.rMode += 1
                self.worldMap.mapBall.rMode %= 2
                self.mouseModeLabel['text'] = `(self.worldMap.mapBall.rMode)`

            self.mouseModeButton = DirectButton(parent=self, text='MouseMode', scale=0.065, pos=(0.25,
                                                                                                 0,
                                                                                                 0.09), command=changeMouseMode)
            self.mouseModeLabel = DirectLabel(parent=self, scale=0.075, pos=(0.5, 0,
                                                                             0.087), text=`(self.worldMap.mapBall.rMode)`, text_fg=(1,
                                                                                                                                    1,
                                                                                                                                    1,
                                                                                                                                    1), textMayChange=1)

    def createShardPanel(self):
        if self.shardPanel:
            self.shardPanel.destroy()
            self.clearClipPlane()
        if self.gear:
            self.gear.detachNode()
        gui = loader.loadModel('models/gui/gui_map_window_drawer')
        gui.reparentTo(self)
        gui.setPos(0.55, 0, 0.725)
        gui.setScale(0.32)
        self.gear = gui.find('**/gear')
        self.gear.wrtReparentTo(self)
        gui.detachNode()
        self.shardPanel = ShardPanel.ShardPanel(parent=self, relief=None, gear=self.gear)
        self.setScissor(Point3(-2, 0, -2), Point3(2.0, 0, 1.35))
        if __dev__ and 0:

            def showShardList():
                self.shardPanel.show()
                self.shardButton['text'] = 'Hide Shards'
                self.shardButton['command'] = hideShardList

            def hideShardList():
                self.shardPanel.hide()
                self.shardButton['text'] = 'Show Shards'
                self.shardButton['command'] = showShardList

            self.shardButton = DirectButton(parent=self, text='Show Shards', scale=0.065, pos=(0.75,
                                                                                               0,
                                                                                               0.09), command=showShardList, textMayChange=1)
        return

    def handleMinimapButton(self, *args):
        localAvatar.guiMgr.nextMinimap()

    def updateTeleportIsland(self, teleportToken, amt):
        self.worldMap.updateTeleportIsland(teleportToken)

    def setReturnIsland(self, islandUid):
        self.worldMap.setReturnIsland(islandUid)
        self.setPortOfCall(islandUid)

    def setCurrentIsland(self, islandUid):
        self.worldMap.setCurrentIsland(islandUid)

    def setPortOfCall(self, islandUid):
        self.portOfCall = islandUid
        self.worldMap.setPortOfCall(self.portOfCall)
        if self.portOfCall:
            self.portOfCallLabel.show()
            self.portOfCallButton.show()
            islandName = PLocalizer.LocationNames.get(islandUid)
            if islandName:
                self.portOfCallLabel['text'] = '%s %s' % (PLocalizer.WordTo, islandName)
            else:
                self.portOfCallLabel['text'] = '%s %s' % (PLocalizer.WordTo, 'Unknown Island')
        else:
            self.portOfCallLabel.hide()
            self.portOfCallButton.hide()
            self.portOfCallLabel['text'] = ''

    def handlePortOfCall(self):
        if self.portOfCall:
            if launcher.canLeaveFirstIsland():
                base.cr.teleportMgr.d_requestIslandTeleport(self.portOfCall)
            else:
                base.cr.centralLogger.writeClientEvent('Player encountered phase 4 blocker trying to teleport to port-of-call')
                localAvatar.guiMgr.showDownloadBlocker(DownloadBlockerPanel.Reasons.TELEPORT)

    def addQuestDart(self, questId, worldPos):
        return self.worldMap.addQuestDart(questId, worldPos)

    def updateQuestDart(self, questId, worldPos):
        return self.worldMap.updateQuestDart(questId, worldPos)

    def removeQuestDart(self, questId):
        return self.worldMap.removeQuestDart(questId)

    def addLocalAvDart(self, worldPos=Vec3(0)):
        return self.worldMap.addLocalAvDart(worldPos)

    def updateLocalAvDart(self, worldPos):
        return self.worldMap.updateLocalAvDart(worldPos)

    def addIsland(self, name, islandUid, modelPath, pos, h):
        return self.worldMap.addIsland(name, islandUid, modelPath, pos, h)

    def updateIsland(self, name, worldPos=None, rotation=None):
        return self.worldMap.updateIsland(name, worldPos, rotation)

    def removeIsland(self, name):
        return self.worldMap.removeIsland(name)

    def addOceanArea(self, name, areaUid, pos1, pos2):
        self.worldMap.addOceanArea(name, areaUid, pos1, pos2)

    def addShip(self, shipInfo, worldPos):
        self.worldMap.addShip(shipInfo, worldPos)

    def removeShip(self, shipDoId):
        self.worldMap.removeShip(shipDoId)

    def addFleet(self, fleetObj):
        self.worldMap.addFleet(fleetObj)

    def removeFleet(self, fleetObj):
        self.worldMap.removeFleet(fleetObj)

    def addPath(self, pathInfo):
        self.worldMap.addPath(pathInfo)

    def removePath(self, pathInfo):
        self.worldMap.removePath(pathInfo)
class MapPage(InventoryPage.InventoryPage):

    def __init__(self):
        InventoryPage.InventoryPage.__init__(self)
        self.initialiseoptions(MapPage)
        self.shardPanel = None
        self.worldMap = None
        self.gear = None
        self.portOfCall = ''
        self.portOfCallLabel = None
        self.portOfCallButton = None
        self.minimapButton = None
        self.createPortOfCall()
        self.createWorldMap()
        self.createFrontOrnament()
        self.createShardPanel()
        self.createButtons()
        self.hide()


    def destroy(self):
        InventoryPage.InventoryPage.destroy(self)
        self.shardPanel = None
        self.gear = None
        self.worldMap = None
        self.portOfCallLabel = None
        self.portOfCallButton = None
        self.minimapButton = None


    def show(self, *args, **kwargs):
        super(self.__class__, self).show(*args, **kwargs)
        self.worldMap.enable()
        self.worldMap.show()


    def slideOpenCallback(self):
        self.worldMap.resetArcBall()
        self.worldMap.rotateAvatarToCenter()


    def hide(self, *args, **kwargs):
        super(self.__class__, self).hide(*args, **kwargs)
        self.worldMap.disable()
        self.worldMap.hide()


    def slideCloseCallback(self):
        self.shardPanel.hideIfShown()


    def createPortOfCall(self):
        if self.portOfCallLabel:
            self.portOfCallLabel.destroy()

        if self.portOfCallButton:
            self.portOfCallButton.destroy()

        compassGui = loader.loadModel('models/gui/compass_gui')
        topGui = loader.loadModel('models/gui/toplevel_gui')
        teleportIcon = topGui.find('**/treasure_w_b_slot_empty').copyTo(NodePath(''))
        compassGui.find('**/compass_icon_objective_green').copyTo(teleportIcon)
        teleportIcon.flattenStrong()
        self.portOfCallLabel = DirectLabel(parent = self, text = '', text_align = TextNode.ALeft, text_font = PiratesGlobals.getPirateOutlineFont(), text_scale = 0.044999999999999998, text_fg = PiratesGuiGlobals.TextFG2, textMayChange = 1, pos = (0.48999999999999999, 0, 0.072999999999999995))
        self.portOfCallButton = GuiButton.GuiButton(parent = self, pos = (0.38, 0, 0.085000000000000006), scale = 0.84999999999999998, text = PLocalizer.Return, text_pos = (0.033000000000000002, -0.014), text_scale = 0.044999999999999998, textMayChange = 1, image3_color = (0.80000000000000004, 0.80000000000000004, 0.80000000000000004, 1), geom = teleportIcon, geom_pos = (-0.065000000000000002, 0, 0), geom_scale = 0.20000000000000001, command = self.handlePortOfCall)


    def createFrontOrnament(self):
        geom = loader.loadModel('models/gui/gui_map_window')
        geom.reparentTo(self)
        geom.setPos(0.54000000000000004, 0, 0.72499999999999998)
        geom.setScale(0.32000000000000001)
        geom.flattenStrong()


    def createButtons(self):
        if not base.config.GetBool('want-momentary-minimap', 1):
            guiMain = loader.loadModel('models/gui/gui_main')
            btImages = (guiMain.find('**/minimap_button'), guiMain.find('**/minimap_button'), guiMain.find('**/minimap_button_over'), guiMain.find('**/minimap_button'))
            self.minimapButton = GuiButton.GuiButton(parent = self, image = btImages, selectedImage = btImages, pos = (0.90000000000000002, 0, 1.1599999999999999), scale = 1.5, hotkeys = [
                'f8'], hotkeyLabel = 'F8', command = self.handleMinimapButton)
            self.minimapButton.hotkeyLabel.setPos(-0.050000000000000003, 0.0, -0.050000000000000003)
            self.minimapButton.hotkeyLabel.setScale(0.75)
        else:
            self.minimapButton = None


    def createWorldMap(self):
        self.worldMap = WorldMap(parent = self, state = DGG.NORMAL, pos = (0.55000000000000004, 0, 0.62), scale = 0.46999999999999997)
        if __dev__ and 0:

            def changeMouseMode():
                self.worldMap.mapBall.rMode += 1
                self.worldMap.mapBall.rMode %= 2
                self.mouseModeLabel['text'] = `self.worldMap.mapBall.rMode`

            self.mouseModeButton = DirectButton(parent = self, text = 'MouseMode', scale = 0.065000000000000002, pos = (0.25, 0, 0.089999999999999997), command = changeMouseMode)
            self.mouseModeLabel = DirectLabel(parent = self, scale = 0.074999999999999997, pos = (0.5, 0, 0.086999999999999994), text = `self.worldMap.mapBall.rMode`, text_fg = (1, 1, 1, 1), textMayChange = 1)



    def createShardPanel(self):
        if self.shardPanel:
            self.shardPanel.destroy()
            self.clearClipPlane()

        if self.gear:
            self.gear.detachNode()

        gui = loader.loadModel('models/gui/gui_map_window_drawer')
        gui.reparentTo(self)
        gui.setPos(0.55000000000000004, 0, 0.72499999999999998)
        gui.setScale(0.32000000000000001)
        self.gear = gui.find('**/gear')
        self.gear.wrtReparentTo(self)
        gui.detachNode()
        self.shardPanel = ShardPanel.ShardPanel(parent = self, relief = None, gear = self.gear)
        self.setScissor(Point3(-2, 0, -2), Point3(2.0, 0, 1.3500000000000001))
        if __dev__ and 0:

            def showShardList():
                self.shardPanel.show()
                self.shardButton['text'] = 'Hide Shards'
                self.shardButton['command'] = hideShardList


            def hideShardList():
                self.shardPanel.hide()
                self.shardButton['text'] = 'Show Shards'
                self.shardButton['command'] = showShardList

            self.shardButton = DirectButton(parent = self, text = 'Show Shards', scale = 0.065000000000000002, pos = (0.75, 0, 0.089999999999999997), command = showShardList, textMayChange = 1)



    def handleMinimapButton(self, *args):
        localAvatar.guiMgr.nextMinimap()


    def updateTeleportIsland(self, teleportToken, amt):
        self.worldMap.updateTeleportIsland(teleportToken)


    def setReturnIsland(self, islandUid):
        self.worldMap.setReturnIsland(islandUid)
        self.setPortOfCall(islandUid)


    def setCurrentIsland(self, islandUid):
        self.worldMap.setCurrentIsland(islandUid)


    def setPortOfCall(self, islandUid):
        self.portOfCall = islandUid
        self.worldMap.setPortOfCall(self.portOfCall)
        if self.portOfCall:
            self.portOfCallLabel.show()
            self.portOfCallButton.show()
            islandName = PLocalizer.LocationNames.get(islandUid)
            if islandName:
                self.portOfCallLabel['text'] = '%s %s' % (PLocalizer.WordTo, islandName)
            else:
                self.portOfCallLabel['text'] = '%s %s' % (PLocalizer.WordTo, 'Unknown Island')
        else:
            self.portOfCallLabel.hide()
            self.portOfCallButton.hide()
            self.portOfCallLabel['text'] = ''


    def handlePortOfCall(self):
        if self.portOfCall:
            if launcher.canLeaveFirstIsland():
                base.cr.teleportMgr.requestTeleportToIsland(self.portOfCall)
            else:
                base.cr.centralLogger.writeClientEvent('Player encountered phase 4 blocker trying to teleport to port-of-call')
                localAvatar.guiMgr.showDownloadBlocker(DownloadBlockerPanel.Reasons.TELEPORT)



    def addQuestDart(self, questId, worldPos):
        return self.worldMap.addQuestDart(questId, worldPos)


    def updateQuestDart(self, questId, worldPos):
        return self.worldMap.updateQuestDart(questId, worldPos)


    def removeQuestDart(self, questId):
        return self.worldMap.removeQuestDart(questId)


    def addLocalAvDart(self, worldPos = Vec3(0)):
        return self.worldMap.addLocalAvDart(worldPos)


    def updateLocalAvDart(self, worldPos):
        return self.worldMap.updateLocalAvDart(worldPos)


    def addIsland(self, name, islandUid, modelPath, pos, h):
        return self.worldMap.addIsland(name, islandUid, modelPath, pos, h)


    def updateIsland(self, name, worldPos = None, rotation = None):
        return self.worldMap.updateIsland(name, worldPos, rotation)


    def removeIsland(self, name):
        return self.worldMap.removeIsland(name)


    def addOceanArea(self, name, areaUid, pos1, pos2):
        self.worldMap.addOceanArea(name, areaUid, pos1, pos2)


    def addShip(self, shipInfo, worldPos):
        self.worldMap.addShip(shipInfo, worldPos)


    def removeShip(self, shipDoId):
        self.worldMap.removeShip(shipDoId)


    def addFleet(self, fleetObj):
        self.worldMap.addFleet(fleetObj)


    def removeFleet(self, fleetObj):
        self.worldMap.removeFleet(fleetObj)


    def addPath(self, pathInfo):
        self.worldMap.addPath(pathInfo)


    def removePath(self, pathInfo):
        self.worldMap.removePath(pathInfo)