Пример #1
0
class ShipFrame(DirectFrame):
    __module__ = __name__
    logos = None

    def __init__(self, parent, **kw):
        optiondefs = (('state', DGG.DISABLED, None), ('frameSize', (0.0, 1, 0.0, 0.5), None), ('relief', DGG.FLAT, None), ('shipId', 0, None), ('shipName', '', None), ('shipClass', 0, None), ('shipPos', Point3(0, 0, 0), None), ('shipHpr', VBase3(-90, 0, 0), None), ('shipScale', VBase3(1), None), ('shipColorScale', VBase4(1), self.setShipColorScale), ('siegeTeam', 0, None), ('mastInfo', [], None))
        self.defineoptions(kw, optiondefs)
        DirectFrame.__init__(self, parent, **kw)
        self.initialiseoptions(ShipFrame)
        self.shipDisplay = None
        self.shipMeter = None
        self.createGui()
        return

    def destroy(self):
        self.shipDisplay = None
        if self.shipMeter:
            self.shipMeter.destroy()
            self.shipMeter = None
        DirectFrame.destroy(self)
        return

    def createGui(self):
        self.shipDisplay = self.attachNewNode('shipDisplay')
        self.shipDisplay.setPos(self['shipPos'])
        self.shipDisplay.setHpr(self['shipHpr'])
        self.shipDisplay.setScale(self['shipScale'])
        self.shipDisplay.setColorScale(self['shipColorScale'])
        self.shipMeter = ShipMeter(self['shipId'], self['shipClass'], self['mastInfo'], siegeTeam=self['siegeTeam'])
        if not ShipFrame.logos:
            ShipFrame.logos = loader.loadModel('models/textureCards/sailLogo')
        if ShipFrame.logos:
            image = None
            if self['siegeTeam'] == PVPGlobals.FrenchTeam:
                image = ShipFrame.logos.find('**/logo_french_flag')
            else:
                if self['siegeTeam'] == PVPGlobals.SpanishTeam:
                    image = ShipFrame.logos.find('**/logo_spanish_flag')
            if image:
                self.flag = DirectLabel(parent=self, image=image, image_scale=0.08, image_pos=(0.09,
                                                                                               0,
                                                                                               0.09))
        self.shipMeter.reparentTo(self.shipDisplay)
        self.shipMeter.setDepthTest(1)
        self.shipMeter.setDepthWrite(1)
        return

    def setCustomization(self, customHull, customRigging, customPattern, customLogo):
        self.shipMeter.setCustomization(customHull, customRigging, customPattern, customLogo)

    def setShipColorScale(self):
        if self.shipDisplay:
            self.shipDisplay.setColorScale(self['shipColorScale'])
class ShipFrame(DirectFrame):
    logos = None

    def __init__(self, parent, **kw):
        optiondefs = (('state', DGG.DISABLED, None), ('frameSize', (0.0, 1, 0.0, 0.5), None), ('relief', DGG.FLAT, None), ('shipId', 0, None), ('shipName', '', None), ('shipClass', 0, None), ('shipPos', Point3(0, 0, 0), None), ('shipHpr', VBase3(-90, 0, 0), None), ('shipScale', VBase3(1), None), ('shipColorScale', VBase4(1), self.setShipColorScale), ('siegeTeam', 0, None), ('mastInfo', [], None))
        self.defineoptions(kw, optiondefs)
        DirectFrame.__init__(self, parent)
        self.initialiseoptions(ShipFrame)
        self.shipDisplay = None
        self.shipMeter = None
        self.createGui()


    def destroy(self):
        self.shipDisplay = None
        if self.shipMeter:
            self.shipMeter.destroy()
            self.shipMeter = None

        DirectFrame.destroy(self)


    def createGui(self):
        self.shipDisplay = self.attachNewNode('shipDisplay')
        self.shipDisplay.setPos(self['shipPos'])
        self.shipDisplay.setHpr(self['shipHpr'])
        self.shipDisplay.setScale(self['shipScale'])
        self.shipDisplay.setColorScale(self['shipColorScale'])
        self.shipMeter = ShipMeter(self['shipId'], self['shipClass'], self['mastInfo'], siegeTeam = self['siegeTeam'])
        if not ShipFrame.logos:
            ShipFrame.logos = loader.loadModel('models/textureCards/sailLogo')

        if ShipFrame.logos:
            image = None
            if self['siegeTeam'] == PVPGlobals.FrenchTeam:
                image = ShipFrame.logos.find('**/logo_french_flag')
            elif self['siegeTeam'] == PVPGlobals.SpanishTeam:
                image = ShipFrame.logos.find('**/logo_spanish_flag')

            if image:
                self.flag = DirectLabel(parent = self, image = image, image_scale = 0.080000000000000002, image_pos = (0.089999999999999997, 0, 0.089999999999999997))


        self.shipMeter.reparentTo(self.shipDisplay)
        self.shipMeter.setDepthTest(1)
        self.shipMeter.setDepthWrite(1)


    def setShipColorScale(self):
        if self.shipDisplay:
            self.shipDisplay.setColorScale(self['shipColorScale'])
Пример #3
0
class Ship(Item):
    __module__ = __name__

    def __init__(self, shipInfo, *args, **kwargs):
        name = shipInfo[1]
        Item.__init__(self, name, *args, **kwargs)
        self.setTag('shipName', name)
        self.shipModel = ShipMeter(shipInfo[0], shipInfo[2], shipInfo[3])
        self.shipModel.reparentTo(self)
        self.shipModel.setScale(0.13)
        self.shipModel.setTwoSided(1)
        formattedName = '\x01smallCaps\x01\x01slant\x01' + name.replace(
            ' ', '\n') + '\x02\x02'
        self.text = Text(name + '-text',
                         NodePath(),
                         0.0,
                         formattedName,
                         0,
                         scale=0.017)
        self.text.reparentTo(self)
        if self.shipModel.getBounds().isEmpty():
            r = 10
        else:
            r = self.shipModel.getBounds().getRadius()
        self.text.setPos(0, -r * 0.75, 0.001)
        self.setBin('fixed', 300)
        self.text.setBin('fixed', 301)
        self.shipNode = NodePath('Ship')
        self.shipNode.reparentTo(self)
        self.shipNode.setBillboardPointEye()
        self.shipNode.setPos(0, -0.005, 0)
        self.shipNode.setHpr(0, 30, 0)
        self.shipModel.reparentTo(self.shipNode)

    def setRotation(self, worldNorth, rotation):
        self.shipModel.setH(rotation)

    def updateZoom(self, zoom):
        self.text.setScale(1 - zoom / 1.5)

    def destroy(self):
        if self.shipModel:
            self.shipModel.destroy()
            self.shipModel = None
        return
Пример #4
0
class Ship(Item):

    def __init__(self, shipInfo, *args, **kwargs):
        name = shipInfo[1]
        Item.__init__(self, name, *args, **kwargs)
        self.setTag('shipName', name)
        self.shipModel = ShipMeter(shipInfo[0], shipInfo[2], shipInfo[3])
        self.shipModel.reparentTo(self)
        self.shipModel.setScale(0.13)
        self.shipModel.setTwoSided(1)
        formattedName = 'smallCapsslant' + name.replace(' ', '\n') + ''
        self.text = Text(name + '-text', NodePath(), 0.0, formattedName, 0, scale = 0.017000000000000001)
        self.text.reparentTo(self)
        if self.shipModel.getBounds().isEmpty():
            r = 10
        else:
            r = self.shipModel.getBounds().getRadius()
        self.text.setPos(0, -r * 0.75, 0.001)
        self.setBin('fixed', 300)
        self.text.setBin('fixed', 301)
        self.shipNode = NodePath('Ship')
        self.shipNode.reparentTo(self)
        self.shipNode.setBillboardPointEye()
        self.shipNode.setPos(0, -0.0050000000000000001, 0)
        self.shipNode.setHpr(0, 30, 0)
        self.shipModel.reparentTo(self.shipNode)


    def setRotation(self, worldNorth, rotation):
        self.shipModel.setH(rotation)


    def updateZoom(self, zoom):
        self.text.setScale(1 - zoom / 1.5)


    def destroy(self):
        if self.shipModel:
            self.shipModel.destroy()
            self.shipModel = None