def __init__(self, menu, sprites=[]):
        MenuState.__init__(self, menu, sprites)
        self.sprites = [self.fileNameLabel, self.miniMap]
        self.buttons = []

        self.panel = StaticImage(loadImage("devmenu.png", 2), (10, 10))
        self.addSprite(self.panel)

        self.addBoundButton = AddBoundaryButton(self)
        self.addButton(self.addBoundButton)

        self.removeBoundButton = RemoveBoundaryButton(self)
        self.addButton(self.removeBoundButton)

        self.snapToGridButton = SnapToGridButton(self)
        self.addButton(self.snapToGridButton)

        self.buttonSelectionBox = SelectionBox(self.addBoundButton.rect, self)
        self.addSprite(self.buttonSelectionBox)

        self.gridButtonSelectionBox = None

        self.addingMode = True
        self.removingMode = False

        self.curStart = None
        tmpGrdRect = self.menu.playState.floor.tileSet.getTiles(
        )[0].image.get_rect()
        self.gridX, self.gridY = tmpGrdRect.w, tmpGrdRect.h
        self.snapToGrid = False
Exemple #2
0
    def __init__(self, menu, sprites=[]):
        MenuState.__init__(self, menu, sprites)
        self.sprites = [self.fileNameLabel, self.miniMap]
        self.buttons = []

        self.panel = StaticImage(loadImage("devmenu.png", 2), (10, 10))
        self.addSprite(self.panel)

        self.snapToGridButton = SnapToGridButton(self)
        self.addButton(self.snapToGridButton)

        self.removeButton = RemoveSensorButton(self)
        self.addButton(self.removeButton)

        self.gridButtonSelectionBox = None
        self.removeButtonSelectionBox = None

        self.addingMode = True
        self.removingMode = False

        self.curGrabbedSens = None

        self.curStart = None
        self.gridX = 40
        self.gridY = 40
        self.snapToGrid = False
        self.whereEntWasGrabbed = None
    def __init__( self, menu, sprites=[] ):
        MenuState.__init__( self, menu, sprites )
        self.sprites = [self.fileNameLabel, self.miniMap]
        self.buttons = []

        self.panel = StaticImage(loadImage("devmenu.png", 2 ), (10, 10))
        self.addSprite( self.panel )

        self.addBoundButton = AddBoundaryButton( self )
        self.addButton( self.addBoundButton )

        self.removeBoundButton = RemoveBoundaryButton( self )
        self.addButton( self.removeBoundButton )

        self.snapToGridButton = SnapToGridButton( self )
        self.addButton( self.snapToGridButton )

        self.buttonSelectionBox = SelectionBox( self.addBoundButton.rect, self )
        self.addSprite( self.buttonSelectionBox )
        
        self.gridButtonSelectionBox = None

        self.addingMode = True
        self.removingMode = False

        self.curStart = None
        tmpGrdRect = self.menu.playState.floor.tileSet.getTiles()[0].image.get_rect()
        self.gridX, self.gridY = tmpGrdRect.w, tmpGrdRect.h
        self.snapToGrid = False
Exemple #4
0
    def __init__( self, menu, buttonType, sprites=[] ):
        self.panelImage = loadImage( "filebrowserbackground.png", 2 )
        self.panel = StaticImage( self.panelImage, ( 10, 10 ) )
        sprites.append( self.panel )
        self.backButton = ScrollBackButtonFiles( self )
        sprites.append( self.backButton )
        self.nextButton = ScrollNextButtonFiles( self )
        sprites.append( self.nextButton )
        MenuState.__init__( self, menu, sprites, miniMap = False )
        self.keyboardEnabled = True
        self.currentString = ""
        self.forceUpdate = False
        self.deleteLastChar = False
        self.oldString = ""
        self.boundingArea = pygame.Rect( 26, 26, 670, 496 )
        #self.addButton( FileButton( self, self.currentString, ( 40, 30 ) ) )
        
        self.startButtonIndex = 0
        self.pageLength = 0
        self.fileButtons = []
        
        self.buttonType = buttonType
        self.generateFileButtons()

        self.userFont = pygame.font.Font( os.path.join( "data", "fonts", "PD-tarzeau_-_Atari_Small.ttf" ), 24 )
        #Carry these sprites over each update.
        self.carryMeOverSprites = [ self.fileNameLabel ]
        self.carryMeOverButtons = []
Exemple #5
0
    def __init__(self, menu, buttonType, sprites=[]):
        self.panelImage = loadImage("filebrowserbackground.png", 2)
        self.panel = StaticImage(self.panelImage, (10, 10))
        sprites.append(self.panel)
        self.backButton = ScrollBackButtonFiles(self)
        sprites.append(self.backButton)
        self.nextButton = ScrollNextButtonFiles(self)
        sprites.append(self.nextButton)
        MenuState.__init__(self, menu, sprites, miniMap=False)
        self.keyboardEnabled = True
        self.currentString = ""
        self.forceUpdate = False
        self.deleteLastChar = False
        self.oldString = ""
        self.boundingArea = pygame.Rect(26, 26, 670, 496)
        #self.addButton( FileButton( self, self.currentString, ( 40, 30 ) ) )

        self.startButtonIndex = 0
        self.pageLength = 0
        self.fileButtons = []

        self.buttonType = buttonType
        self.generateFileButtons()

        self.userFont = pygame.font.Font(
            os.path.join("data", "fonts", "PD-tarzeau_-_Atari_Small.ttf"), 24)
        #Carry these sprites over each update.
        self.carryMeOverSprites = [self.fileNameLabel]
        self.carryMeOverButtons = []
Exemple #6
0
    def __init__( self, menu, sprites=[] ):
        MenuState.__init__( self, menu, sprites )
        self.sprites = [self.fileNameLabel, self.miniMap]
        self.buttons = []

        self.panel = StaticImage(loadImage( "devmenu.png", 2 ), (10, 10))
        self.addSprite( self.panel )

        self.snapToGridButton = SnapToGridButton( self )
        self.addButton( self.snapToGridButton )
        
        self.removeButton = RemoveSensorButton( self )
        self.addButton( self.removeButton )

        self.gridButtonSelectionBox = None
        self.removeButtonSelectionBox = None

        self.addingMode = True
        self.removingMode = False

        self.curGrabbedSens = None

        self.curStart = None
        self.gridX = 40
        self.gridY = 40
        self.snapToGrid = False
        self.whereEntWasGrabbed = None
Exemple #7
0
    def __init__(self, menu, sprites=[]):
        MenuState.__init__(self, menu, sprites)
        self.sprites = [self.fileNameLabel, self.miniMap]
        self.buttons = []

        self.panel = StaticImage(loadImage("tageditorbackground.png", 2),
                                 (10, 10))
        self.addSprite(self.panel)
        self.plusTagButton = AddTagButton(self)
        self.addButton(self.plusTagButton)
        self.subTagButton = SubTagButton(self)
        self.addButton(self.subTagButton)
        self.sensorButton = SensorButton(self)
        self.addButton(self.sensorButton)

        self.curEnt = None

        self.keyboardEnabled = True
        #self.currentString = ""
        self.deleteLastChar = False
        #self.oldString = ""

        self.curTag = None
        self.tagButtons = []

        self.carryMeOverButtons = [
            self.plusTagButton, self.subTagButton, self.sensorButton
        ]
        self.carryMeOverSprites = [self.panel, self.fileNameLabel
                                   ] + self.carryMeOverButtons

        self.sensorMode = False
        self.sensorButtonSelectionBox = None
Exemple #8
0
    def __init__( self, menu, sprites=[] ):
        MenuState.__init__( self, menu, sprites )
        self.sprites = [self.fileNameLabel, self.miniMap]
        self.buttons = []

        self.panel = StaticImage( loadImage( "tageditorbackground.png", 2 ), (10, 10) )
        self.addSprite( self.panel )
        self.plusTagButton = AddTagButton( self )
        self.addButton( self.plusTagButton )
        self.subTagButton = SubTagButton( self )
        self.addButton( self.subTagButton )
        self.sensorButton = SensorButton( self )
        self.addButton( self.sensorButton )

        self.curEnt = None

        self.keyboardEnabled = True
        #self.currentString = ""
        self.deleteLastChar = False
        #self.oldString = ""

        self.curTag = None
        self.tagButtons = []

        self.carryMeOverButtons = [self.plusTagButton, self.subTagButton, self.sensorButton]
        self.carryMeOverSprites = [self.panel,self.fileNameLabel] + self.carryMeOverButtons

        self.sensorMode = False
        self.sensorButtonSelectionBox = None
Exemple #9
0
 def __init__( self, menu, sprites=[panel, floorEditButton, entityEditButton, saveMapButton, loadMapButton, tagEditButton, boundEditButton, physicsVisButton, sensorEditButton, connectToButton, hostButton, pauseStartButton] ):
     MenuState.__init__( self, menu, sprites )
     self.limitLabel = Label( self, "Pan Limits:", ( 24, 204 ), 16, False )
     self.limitX1 = LimitField( self, prefix = "Left: ", text="", pos=( 24, 224 ) )
     self.limitX2 = LimitField( self, prefix = "Right: ", text="", pos=( 24, 240 ) )
     self.limitY1 = LimitField( self, prefix = "Top: ", text="", pos=( 24, 256 ) )
     self.limitY2 = LimitField( self, prefix = "Bottom: ", text="", pos=( 24, 272 ) )
     self.keyboardEnabled = True
     self.addSprite( self.limitLabel )
     self.addButton( self.limitX1 )
     self.addButton( self.limitX2 )
     self.addButton( self.limitY1 )
     self.addButton( self.limitY2 )
     self.field = None
Exemple #10
0
    def __init__(self, menu, sprites=[]):
        MenuState.__init__(self, menu, sprites)

        self.entNum = 0
        self.sprites = [self.fileNameLabel, self.miniMap]
        self.buttons = []

        self.panel = StaticImage(loadImage("devmenu.png", 2), (10, 10))
        self.addSprite(self.panel)

        self.scrollNextButton = ScrollNextButton(self)
        self.addButton(self.scrollNextButton)

        self.scrollBackButton = ScrollBackButton(self)
        self.addButton(self.scrollBackButton)

        self.snapToGridButton = SnapToGridButtonEnt(self)
        self.addButton(self.snapToGridButton)

        self.gridFillButton = GridFillButtonEnt(self)
        self.addButton(self.gridFillButton)

        self.curEntNum = 0
        self.xPos = 0
        self.yPos = 0
        self.tallest = 0
        self.processedEnts = []

        self.pages = {0: []}
        self.curPage = 0
        self.maxPage = 0
        self.generateButtons()

        self.snapToGrid = False
        self.gridButtonSelectionBox = None

        self.gridFill = False
        self.gridFillButtonSelectionBox = None
        self.gridFillStart = None

        self.selectedButton = self.buttons[self.entNum + 4]
        self.entSelectionBox = SelectionBox(self.selectedButton.rect, self)
        self.addSprite(self.entSelectionBox)

        self.curGrabbedEnt = None
        self.lastMouseSpot = (0, 0)
        self.whereEntWasGrabbed = None
    def __init__( self, menu, sprites=[] ):
        MenuState.__init__( self, menu, sprites )

        self.entNum = 0
        self.sprites = [self.fileNameLabel, self.miniMap]
        self.buttons = []

        self.panel = StaticImage(loadImage("devmenu.png", 2), (10, 10))
        self.addSprite( self.panel )

        self.scrollNextButton = ScrollNextButton( self )
        self.addButton( self.scrollNextButton )

        self.scrollBackButton = ScrollBackButton( self )
        self.addButton( self.scrollBackButton )

        self.snapToGridButton = SnapToGridButtonEnt( self )
        self.addButton( self.snapToGridButton )

        self.gridFillButton = GridFillButtonEnt( self )
        self.addButton( self.gridFillButton )
        
        self.curEntNum = 0
        self.xPos = 0
        self.yPos = 0
        self.tallest = 0
        self.processedEnts = []

        self.pages = {0:[]}
        self.curPage = 0
        self.maxPage = 0
        self.generateButtons()

        self.snapToGrid = False
        self.gridButtonSelectionBox = None

        self.gridFill = False
        self.gridFillButtonSelectionBox = None
        self.gridFillStart = None

        self.selectedButton = self.buttons[self.entNum+4]
        self.entSelectionBox = SelectionBox( self.selectedButton.rect, self )
        self.addSprite( self.entSelectionBox )

        self.curGrabbedEnt = None
        self.lastMouseSpot = ( 0, 0 )
        self.whereEntWasGrabbed = None
Exemple #12
0
 def update( self, dt, click, clickKey, curMousePos=None ):
     MenuState.update( self, dt, click, clickKey, curMousePos )
     playState = self.menu.playState
     curMousePos = curMousePos[0]-playState.panX, curMousePos[1]-playState.panY
     if self.curStart is not None:
         if self.snapToGrid:
             curPoint = gridRound( curMousePos, self.gridX, self.gridY, trueRounding=True )
         else:
             curPoint = curMousePos
         playState.lineVisualiser.devMenuLineGroups = [ [ (self.curStart[0]+playState.panX, self.curStart[1]+playState.panY), (curPoint[0]+playState.panX, curPoint[1]+playState.panY) ] ]
         playState.lineVisualiser.flush = True
     playState.lineVisualiser.renderLines = True
     playState.lineVisualiser.renderPhysicsLines = True
     playState.lineVisualiser.forceNoRender = True
     if click is not None:
         if clickKey is 'mouse1down' and self.curStart is None and self.addingMode:
             if self.snapToGrid:
                 self.curStart = gridRound( curMousePos, self.gridX, self.gridY, trueRounding=True )
             else:
                 self.curStart = curMousePos
         elif clickKey is 'mouse1up' and self.addingMode:
             if self.snapToGrid:
                 curPoint = gridRound( curMousePos, self.gridX, self.gridY, trueRounding=True )
             else:
                 curPoint = curMousePos
             playState.addBoundary( self.curStart, curPoint )
             self.curStart = None
         elif clickKey is 'mouse1up' and self.removingMode:
             segment = self.selectSegment( curMousePos, 10 )
             if segment is not None:
                 playState.removeBoundary( segment )
         elif clickKey is 'mouse3down' and self.curStart is None:
             segmentEndPair = self.selectSegmentEnd( curMousePos, 10 )
             if segmentEndPair is not None:
                 playState.removeBoundary( segmentEndPair[0] )
                 if segmentEndPair[1] is 'a':
                     damnPoint = segmentEndPair[0].b
                 else:
                     damnPoint = segmentEndPair[0].a
                 self.curStart = damnPoint.x, damnPoint.y
         elif clickKey is 'mouse3up' and self.curStart is not None:
             if self.snapToGrid:
                 curPoint = gridRound( curMousePos, self.gridX, self.gridY, trueRounding=True )
             else:
                 curPoint = curMousePos
             playState.addBoundary( self.curStart, curPoint )
             self.curStart = None
Exemple #13
0
 def update( self, dt, click, clickKey, curMousePos=None ):
     MenuState.update( self, dt, click, clickKey, curMousePos )
     playState = self.menu.playState
     curMousePos = curMousePos[0]-playState.panX, curMousePos[1]-playState.panY
     if self.snapToGrid:
         curMousePos = gridRound( curMousePos, self.gridX, self.gridY, trueRounding=True )
     else:
         curMousePos = curMousePos
     if self.curStart is not None:
         self.menu.playState.lineVisualiser.devMenuLineGroups = [ [ self.curStart, ( self.curStart[0], curMousePos[1] ) ],
                  [ ( self.curStart[0], curMousePos[1] ), curMousePos ], [ curMousePos, ( curMousePos[0], self.curStart[1] ) ], [ ( curMousePos[0], self.curStart[1] ), self.curStart ] ]
         self.menu.playState.lineVisualiser.devMenuLineGroups = [ [ (each[0]+playState.panX, each[1]+playState.panY) for each in eachLine ] for eachLine in self.menu.playState.lineVisualiser.devMenuLineGroups ]
         self.menu.playState.lineVisualiser.flush = True
     self.menu.playState.lineVisualiser.renderLines = True
     self.menu.playState.lineVisualiser.renderPhysicsLines = True
     self.menu.playState.lineVisualiser.forceNoRender = True
     if click is not None:
         if clickKey is 'mouse1down' and self.curStart is None:
             self.curStart = curMousePos
         elif clickKey is 'mouse1up':
             #ADD SENSOR HERE
             destPoint = min( self.curStart[0], curMousePos[0] ), min( self.curStart[1], curMousePos[1] )
             w = abs( self.curStart[0] - curMousePos[0] )
             h = abs( self.curStart[1] - curMousePos[1] )
             if w != 0  or h != 0:
                 destPoint = destPoint[0] + w/2, destPoint[1] + h/2
                 destGroup = getattr( self.menu.playState, PureSensor.playStateGroup )
                 PureSensor( pos=destPoint, group=destGroup, width=w, height=h )
             self.curStart = None
         elif clickKey is 'mouse3down':
             self.curGrabbedSens = self.getPressedSensor( (curMousePos[0]+playState.panX, curMousePos[1]+playState.panY) )
             if self.curGrabbedSens is not None:
                 entPos = self.curGrabbedSens.getPosition()
                 self.whereEntWasGrabbed = curMousePos[0] - entPos[0], curMousePos[1] - entPos[1]
         elif clickKey is 'mouse3up':
             pickedSensor = self.getPressedSensor( (curMousePos[0]+playState.panX, curMousePos[1]+playState.panY) )
             if pickedSensor is not None:
                 if self.removingMode:
                     pickedSensor.kill()
             self.curGrabbedSens = None
             self.whereEntWasGrabbed = None
     elif curMousePos is not None:
         if self.curGrabbedSens is not None:
             curEnt = self.curGrabbedSens
             newPos = curMousePos[0]-self.whereEntWasGrabbed[0], curMousePos[1]-self.whereEntWasGrabbed[1]
             curEnt.setPosition( newPos )
Exemple #14
0
 def update( self, dt, click, clickKey, curMousePos=None ):
     MenuState.update( self, dt, click, clickKey, curMousePos )
     if click is not None:
         if clickKey is 'mouse1down':
             self.curEnt = self.getPressedEnt( curMousePos )
             self.getTagButtons()
     if self.curTag is not None:
         oldText = self.curTag.text
         if self.deleteLastChar:
             self.curTag.text =  self.curTag.text[:-1]
             self.deleteLastChar = False
         self.curTag.text += self.getKeyboardInput()
         if self.curTag.text != oldText:
             self.curTag.createText()
     else:
         #if self.curEnt is not None:
         #    self.curEnt.tags = self.getDictionaryFromTags()
         #Clear keyboard input if no tag selected.
         self.getKeyboardInput()
Exemple #15
0
 def update(self, dt, click, clickKey, curMousePos=None):
     MenuState.update(self, dt, click, clickKey, curMousePos)
     if click is not None:
         if clickKey is 'mouse1down':
             self.curEnt = self.getPressedEnt(curMousePos)
             self.getTagButtons()
     if self.curTag is not None:
         oldText = self.curTag.text
         if self.deleteLastChar:
             self.curTag.text = self.curTag.text[:-1]
             self.deleteLastChar = False
         self.curTag.text += self.getKeyboardInput()
         if self.curTag.text != oldText:
             self.curTag.createText()
     else:
         #if self.curEnt is not None:
         #    self.curEnt.tags = self.getDictionaryFromTags()
         #Clear keyboard input if no tag selected.
         self.getKeyboardInput()
Exemple #16
0
    def __init__(self):
        """Initialise les gamestates et lance le state initial"""

        # on stocke les states en mémoire en leur associant réciproquement le game context 'self'
        self.states = {
            'menu': MenuState(self),
            'adventure': AdventureState(self)
        }

        self.state = None
        self.incoming_state_name = None
Exemple #17
0
    def __init__(self):
        """Crée les gamestates et les associe au manager"""

        # afin d'agréger les gamestates au manager, on fait passer ce dernier en argument du constructeur
        view = LayeredView()
        self.states = {
            'menu': MenuState(self, view),
            'adventure': AdventureState(self, view)
        }

        self.state = None
        self._incoming_state_name = None
Exemple #18
0
    def update( self, dt, click, clickKey, curMousePos=None ):
        MenuState.update( self, dt, click, clickKey, curMousePos )
        inputText = self.getKeyboardInput()
        if self.field is not None:
            oldText = self.field.text
            if self.deleteLastChar:
                self.field.text =  self.field.text[:-1]
                self.deleteLastChar = False
            self.field.text += inputText
            if self.field.text != oldText:
                self.field.createText()

        #Force a text reset on all the LimitFields not selected.
        playState = self.menu.playState
        if playState.limitX1 is not None and self.field != self.limitX1:
            newStr = str(playState.limitX1)
            if newStr != self.limitX1.text:
                self.limitX1.text = newStr
                self.limitX1.createText()
                
        if playState.limitX2 is not None and self.field != self.limitX2:
            newStr = str(playState.limitX2)
            if newStr != self.limitX2.text:
                self.limitX2.text = newStr
                self.limitX2.createText()

        if playState.limitY1 is not None and self.field != self.limitY1:
            newStr = str(playState.limitY1)
            if newStr != self.limitY1.text:
                self.limitY1.text = newStr
                self.limitY1.createText()

        if playState.limitY2 is not None and self.field != self.limitY2:
            newStr = str(playState.limitY2)
            if newStr != self.limitY2.text:
                self.limitY2.text = newStr
                self.limitY2.createText()
Exemple #19
0
    def __init__(self, screen):
        self.quit = False
        self.done = False
        self.screen = screen
        self.clock = pg.time.Clock()
        self.next_lvl = "level1"

        self.resource_manager = resourcemanager.ResourceManager()

        self.states = {
            "menu":
            MenuState(Surface(StateMachine.SCREEN_SIZE),
                      self.resource_manager),
            "levelselect":
            LevelSelectState(Surface(StateMachine.SCREEN_SIZE),
                             self.resource_manager),
            "level":
            LevelState(Surface(StateMachine.SCREEN_SIZE),
                       self.resource_manager),
        }

        self.state = self.states["menu"]
Exemple #20
0
    def update(self, dt, click, clickKey, curMousePos=None):
        """Generic update method. The actual Entity-placing happens in here."""
        #print len( self.menu.playState.sprites() )
        MenuState.update(self, dt, click, clickKey, curMousePos)
        self.generateButtons()
        if click is not None:
            if clickKey is 'mouse1down':
                self.curGrabbedEnt = self.getPressedEnt(curMousePos)
                if self.curGrabbedEnt is not None:
                    entPos = self.curGrabbedEnt.getPosition()
                    self.whereEntWasGrabbed = curMousePos[0] - entPos[
                        0], curMousePos[1] - entPos[1]
                if self.gridFill:
                    self.gridFillStart = curMousePos[
                        0] - self.menu.playState.panX, curMousePos[
                            1] - self.menu.playState.panY
            elif clickKey is 'mouse1up':
                if self.getPressedEnt(
                        click) == None and self.curGrabbedEnt == None:
                    classDef = self.processedEnts[self.entNum]
                    destGroup = getattr(self.menu.playState,
                                        classDef.playStateGroup)
                    dest = click[0] - self.menu.playState.panX, click[
                        1] - self.menu.playState.panY
                    if classDef.wbWidth is not None:
                        gridX = classDef.wbWidth
                        gridY = classDef.wbHeight
                    elif classDef.bWidth is not None:
                        gridX = classDef.bWidth
                        gridY = classDef.bHeight
                    else:
                        gridX = classDef.width
                        gridY = classDef.height
                    if not self.gridFill:
                        if self.snapToGrid:
                            dest = gridRound(dest, gridX, gridY)
                        classDef(dest, vel=[0, 0], group=destGroup)
                    else:
                        xMin = min(self.gridFillStart[0], dest[0])
                        xMax = max(self.gridFillStart[0], dest[0])
                        yMin = min(self.gridFillStart[1], dest[1])
                        yMax = max(self.gridFillStart[1], dest[1])
                        xMin, yMin = gridRound((xMin, yMin), gridX, gridY)
                        xMax, yMax = gridRound((xMax, yMax),
                                               gridX,
                                               gridY,
                                               roundToTopLeft=False)
                        for x in xrange(xMin, xMax, gridX):
                            for y in xrange(yMin, yMax, gridY):
                                classDef((x, y), vel=[0, 0], group=destGroup)
                self.curGrabbedEnt = None
                self.whereEntWasGrabbed = None
                self.gridFillStart = None
            elif clickKey is 'mouse3up':
                anEnt = self.getPressedEnt(click)
                if anEnt is not None:
                    anEnt.kill()
                self.whereEntWasGrabbed = None

        elif curMousePos is not None:
            if self.curGrabbedEnt is not None:
                curEnt = self.curGrabbedEnt
                newPos = curMousePos[0] - self.whereEntWasGrabbed[
                    0], curMousePos[1] - self.whereEntWasGrabbed[1]
                if self.snapToGrid:
                    if curEnt.wbWidth is not None:
                        newPos = gridRound(newPos, curEnt.wbWidth,
                                           curEnt.wbHeight)
                    elif curEnt.bWidth is not None:
                        newPos = gridRound(newPos, curEnt.bWidth,
                                           curEnt.bHeight)
                    else:
                        newPos = gridRound(newPos, curEnt.width, curEnt.height)
                curEnt.setPosition(newPos)
            self.lastMouseSpot = curMousePos
Exemple #21
0
 def __init__(self, surface):
     self.screen = surface
     self.states = {MENUSTATE: MenuState(), TAFLGAMESTATE: TaflGameState()}
     self.currentState = TAFLGAMESTATE
Exemple #22
0
    def __init__( self, menu, sprites=[] ):
        MenuState.__init__( self, menu, sprites )

        self.buttons = []
        self.sprites = [self.fileNameLabel, self.miniMap]

        self.panel = StaticImage( loadImage( "devmenu.png", 2 ), ( 10, 10 ) )
        self.addSprite( self.panel )

        self.undoButton = UndoButton( self )
        self.addButton( self.undoButton )

        self.redoButton = RedoButton( self )
        self.addButton( self.redoButton )

        self.scrollNextButton = ScrollNextButtonTiles( self )
        self.addButton( self.scrollNextButton )

        self.scrollBackButton = ScrollBackButtonTiles( self )
        self.addButton( self.scrollBackButton )

        self.removeFloorButton = RemoveFloorButton( self )
        self.addButton( self.removeFloorButton )

        self.addFloorButton = AddFloorButton( self )
        self.addButton( self.addFloorButton )

        self.editFloorButton = EditFloorButton( self )
        self.addButton( self.editFloorButton )

        self.topLeftLayerClamp = TopLeftLayerClamp( self )
        self.bottomRightLayerClamp = BottomRightLayerClamp( self )

        self.snapToGridButton = SnapToGridButtonFloor( self )
        self.addButton( self.snapToGridButton )

        self.hardBlitButton = HardBlitButton( self )
        self.addButton( self.hardBlitButton )
        
        #A local copy to prevent excessive look ups.
        self.floor = self.menu.playState.floor

        self.currentFloorLayer = 0

        self.currentLayerIsGrabbed = False
        self.grabPoint = None

        self.snapToGrid = False
        self.gridButtonSelectionBox = None

        self.hardBlit = False
        self.hardBlitSelectionBox = None

        self.currentlyGrabbedClamp = None

        #Edit modes are zero for tiles, 1 for creating/editing layers, 2 for select/edit, and 3 for removing
        self.editMode = 0

        self.tileNum = 0
        self.tileFillRect = None

        self.xPos = 0
        self.yPos = 0
        self.tallest = 0
        self.pages = {0:[]}
        self.curPage = 0
        self.processedTiles = []
        self.generateButtons()

        #For the tile placing functionality.
        self.startOfBlock = None

        self.tileSelectionBox = SelectionBox( self.pages[self.curPage][0].rect, self )
        self.addSprite( self.tileSelectionBox )
        self.curSelectedButton = self.pages[self.curPage][0]

        self.gridX, self.gridY = self.curSelectedButton.rect.w, self.curSelectedButton.rect.h
        self.setClamps()
Exemple #23
0
 def addButton( self, givenButton ):
     MenuState.addButton( self, givenButton )
     if givenButton.__class__.__name__ == "TagButton":
         self.tagButtons.append( givenButton )
    def update( self, dt, click, clickKey, curMousePos=None ):
        """Generic update method. The actual Entity-placing happens in here."""
        #print len( self.menu.playState.sprites() )
        MenuState.update( self, dt, click, clickKey, curMousePos )
        self.generateButtons()
        if click is not None:
            if clickKey is 'mouse1down':
                self.curGrabbedEnt = self.getPressedEnt( curMousePos )
                if self.curGrabbedEnt is not None:
                    entPos = self.curGrabbedEnt.getPosition()
                    self.whereEntWasGrabbed = curMousePos[0] - entPos[0], curMousePos[1] - entPos[1]
                if self.gridFill:
                    self.gridFillStart = curMousePos[0]-self.menu.playState.panX, curMousePos[1]-self.menu.playState.panY
            elif clickKey is 'mouse1up':
                if self.getPressedEnt( click ) == None and self.curGrabbedEnt == None:
                    classDef = self.processedEnts[self.entNum]
                    destGroup = getattr( self.menu.playState, classDef.playStateGroup )
                    dest = click[0]-self.menu.playState.panX, click[1]-self.menu.playState.panY
                    if classDef.wbWidth is not None:
                        gridX = classDef.wbWidth
                        gridY = classDef.wbHeight
                    elif classDef.bWidth is not None:
                        gridX = classDef.bWidth
                        gridY = classDef.bHeight
                    else:
                        gridX = classDef.width
                        gridY = classDef.height
                    if not self.gridFill:
                        if self.snapToGrid:
                            dest = gridRound( dest, gridX, gridY )
                        classDef( dest, vel=[0,0], group=destGroup )
                    else:
                        xMin = min( self.gridFillStart[0], dest[0] )
                        xMax = max( self.gridFillStart[0], dest[0] )
                        yMin = min( self.gridFillStart[1], dest[1] )
                        yMax = max( self.gridFillStart[1], dest[1] )
                        xMin, yMin = gridRound( (xMin, yMin), gridX, gridY )
                        xMax, yMax = gridRound( (xMax, yMax), gridX, gridY, roundToTopLeft=False )
                        for x in xrange( xMin, xMax, gridX ):
                            for y in xrange( yMin, yMax, gridY ):
                                classDef( (x,y), vel=[0,0], group=destGroup )
                self.curGrabbedEnt = None
                self.whereEntWasGrabbed = None
                self.gridFillStart = None
            elif clickKey is 'mouse3up':
                anEnt = self.getPressedEnt( click )
                if anEnt is not None:
                    anEnt.kill()
                self.whereEntWasGrabbed = None

        elif curMousePos is not None:
            if self.curGrabbedEnt is not None:
                curEnt = self.curGrabbedEnt
                newPos = curMousePos[0]-self.whereEntWasGrabbed[0], curMousePos[1]-self.whereEntWasGrabbed[1]
                if self.snapToGrid:
                    if curEnt.wbWidth is not None:
                        newPos = gridRound( newPos, curEnt.wbWidth, curEnt.wbHeight )
                    elif curEnt.bWidth is not None:
                        newPos = gridRound( newPos, curEnt.bWidth, curEnt.bHeight )
                    else:
                        newPos = gridRound( newPos, curEnt.width, curEnt.height )
                curEnt.setPosition( newPos )
            self.lastMouseSpot = curMousePos
Exemple #25
0
 def addButton(self, givenButton):
     MenuState.addButton(self, givenButton)
     if givenButton.__class__.__name__ == "TagButton":
         self.tagButtons.append(givenButton)
Exemple #26
0
    def update( self, dt, click, clickKey, curMousePos=None ):
        """Where the actual Tile placing on the Floor happens."""
        MenuState.update( self, dt, click, clickKey, curMousePos )
        self.menu.playState.lineVisualiser.devMenuLineGroups = []
        for eachLayer in self.floor.layers:
            self.menu.playState.lineVisualiser.devMenuLineGroups.extend( generateListOfLines( eachLayer.rect.topleft, eachLayer.rect.bottomright  ) )
        if self.startOfBlock is not None:
            if self.editMode is 0:
                self.tileFillRect = self.makeTileRect( self.startOfBlock, curMousePos )
                p1 = self.floor.layers[self.currentFloorLayer].rect.left+self.tileFillRect.left, self.floor.layers[self.currentFloorLayer].rect.top+self.tileFillRect.top
                p2 = p1[0]+self.tileFillRect.w, p1[1]+self.tileFillRect.h
                self.menu.playState.lineVisualiser.devMenuLineGroups.extend( generateListOfLines( p1, p2 ) )
                self.menu.playState.lineVisualiser.flush = True

            elif self.editMode is 1:
                if self.snapToGrid:
                    curPoint = gridRound( curMousePos, self.gridX, self.gridY, trueRounding=True )
                else:
                    curPoint = curMousePos
                self.menu.playState.lineVisualiser.devMenuLineGroups.extend( generateListOfLines( curPoint, self.startOfBlock ) )
                self.menu.playState.lineVisualiser.flush = True
        else:
            if self.editMode is 0:
                curTile = self.processedTiles[self.tileNum]
                floorRect = self.floor.layers[self.currentFloorLayer].rect
                displacedPoint = curMousePos[0]-floorRect.left, curMousePos[1]-floorRect.top
                p1 = gridRound( displacedPoint, self.gridX, self.gridY )
                p1 = p1[0]+floorRect.left, p1[1]+floorRect.top
                p2 = p1[0]+curTile.rect.w, p1[1]+curTile.rect.h
                self.menu.playState.lineVisualiser.devMenuLineGroups.extend( generateListOfLines( p1, p2 ) )
                self.menu.playState.lineVisualiser.flush = True
        self.menu.playState.lineVisualiser.renderLines = True
        self.menu.playState.lineVisualiser.forceNoRender = True
        if click is not None:
            if clickKey is 'mouse1down':
                if self.snapToGrid:
                    self.startOfBlock = gridRound( click, self.gridX, self.gridY, trueRounding=True )
                else:
                    self.startOfBlock = click
            elif clickKey is 'mouse1up':
                if self.editMode is 0:
                    if self.startOfBlock != None:
                        self.floor.writeArea( self.tileNum, self.tileFillRect, layerNum=self.currentFloorLayer, hardBlit=self.hardBlit )
                        self.startOfBlock = None
                        self.tileFillRect = None
                elif self.editMode is 1:
                    if self.startOfBlock != None:
                        if self.snapToGrid:
                            curPoint = gridRound( click, self.gridX, self.gridY, trueRounding=True )
                        else:
                            curPoint = click
                        newSize = ( abs( curPoint[0]-self.startOfBlock[0] ), abs( curPoint[1]-self.startOfBlock[1] ) )
                        newLayer = FloorLayer( newSize, ( min( curPoint[0], self.startOfBlock[0] ), min( curPoint[1], self.startOfBlock[1] ) ) )
                        self.floor.layers.append( newLayer )
                    self.grabPoint = None
                    self.currentlyGrabbedClamp = None
                elif self.editMode is 2:
                    if self.currentlyGrabbedClamp is None:
                        self.selectFloorLayer( click )
                    self.currentLayerIsGrabbed = False
                elif self.editMode is 3:
                    self.deleteFloorLayer( click )
                self.startOfBlock = None
                self.grabPoint = None
                self.currentlyGrabbedClamp = None
            elif clickKey is 'mouse3down':
                if self.editMode is 2:
                    self.currentLayerIsGrabbed = True
                    self.grabPoint = ( click[0]-self.floor.layers[self.currentFloorLayer].rect.x, click[1]-self.floor.layers[self.currentFloorLayer].rect.y )
            elif clickKey is 'mouse3up':
                if self.editMode is 2:
                    self.currentLayerIsGrabbed = False
                    self.grabPoint = None
        elif curMousePos is not None:
            if self.currentLayerIsGrabbed and self.grabPoint is not None:
                if self.snapToGrid:
                    curPoint = gridRound( (curMousePos[0]-self.grabPoint[0], curMousePos[1]-self.grabPoint[1]), self.gridX, self.gridY, trueRounding=True )
                else:
                    curPoint = (curMousePos[0]-self.grabPoint[0], curMousePos[1]-self.grabPoint[1])
                self.floor.layers[self.currentFloorLayer].rect.topleft = curPoint
            elif self.currentlyGrabbedClamp == 1:
                if self.snapToGrid:
                    curPoint = gridRound( curMousePos, self.gridX, self.gridY, trueRounding=True )
                else:
                    curPoint = curMousePos
                nx = curPoint[0]-self.grabPoint[0]
                ny = curPoint[1]-self.grabPoint[1]
                self.floor.layers[self.currentFloorLayer].resize( nx-self.topLeftLayerClamp.rect.left, 0, ny-self.topLeftLayerClamp.rect.top, 0 )
            elif self.currentlyGrabbedClamp == 2:
                if self.snapToGrid:
                    curPoint = gridRound( curMousePos, self.gridX, self.gridY, trueRounding=True )
                else:
                    curPoint = curMousePos
                nx = curPoint[0]-self.grabPoint[0]
                ny = curPoint[1]-self.grabPoint[1]
                self.floor.layers[self.currentFloorLayer].resize( 0, nx-self.bottomRightLayerClamp.rect.left, 0, ny-self.bottomRightLayerClamp.rect.top )
        self.setClamps()
Exemple #27
0
 def update(self, dt, click, clickKey, curMousePos=None):
     MenuState.update(self, dt, click, clickKey, curMousePos)
     playState = self.menu.playState
     curMousePos = curMousePos[0] - playState.panX, curMousePos[
         1] - playState.panY
     if self.snapToGrid:
         curMousePos = gridRound(curMousePos,
                                 self.gridX,
                                 self.gridY,
                                 trueRounding=True)
     else:
         curMousePos = curMousePos
     if self.curStart is not None:
         self.menu.playState.lineVisualiser.devMenuLineGroups = [
             [self.curStart, (self.curStart[0], curMousePos[1])],
             [(self.curStart[0], curMousePos[1]), curMousePos],
             [curMousePos, (curMousePos[0], self.curStart[1])],
             [(curMousePos[0], self.curStart[1]), self.curStart]
         ]
         self.menu.playState.lineVisualiser.devMenuLineGroups = [
             [(each[0] + playState.panX, each[1] + playState.panY)
              for each in eachLine] for eachLine in
             self.menu.playState.lineVisualiser.devMenuLineGroups
         ]
         self.menu.playState.lineVisualiser.flush = True
     self.menu.playState.lineVisualiser.renderLines = True
     self.menu.playState.lineVisualiser.renderPhysicsLines = True
     self.menu.playState.lineVisualiser.forceNoRender = True
     if click is not None:
         if clickKey is 'mouse1down' and self.curStart is None:
             self.curStart = curMousePos
         elif clickKey is 'mouse1up':
             #ADD SENSOR HERE
             destPoint = min(self.curStart[0],
                             curMousePos[0]), min(self.curStart[1],
                                                  curMousePos[1])
             w = abs(self.curStart[0] - curMousePos[0])
             h = abs(self.curStart[1] - curMousePos[1])
             if w != 0 or h != 0:
                 destPoint = destPoint[0] + w / 2, destPoint[1] + h / 2
                 destGroup = getattr(self.menu.playState,
                                     PureSensor.playStateGroup)
                 PureSensor(pos=destPoint,
                            group=destGroup,
                            width=w,
                            height=h)
             self.curStart = None
         elif clickKey is 'mouse3down':
             self.curGrabbedSens = self.getPressedSensor(
                 (curMousePos[0] + playState.panX,
                  curMousePos[1] + playState.panY))
             if self.curGrabbedSens is not None:
                 entPos = self.curGrabbedSens.getPosition()
                 self.whereEntWasGrabbed = curMousePos[0] - entPos[
                     0], curMousePos[1] - entPos[1]
         elif clickKey is 'mouse3up':
             pickedSensor = self.getPressedSensor(
                 (curMousePos[0] + playState.panX,
                  curMousePos[1] + playState.panY))
             if pickedSensor is not None:
                 if self.removingMode:
                     pickedSensor.kill()
             self.curGrabbedSens = None
             self.whereEntWasGrabbed = None
     elif curMousePos is not None:
         if self.curGrabbedSens is not None:
             curEnt = self.curGrabbedSens
             newPos = curMousePos[0] - self.whereEntWasGrabbed[
                 0], curMousePos[1] - self.whereEntWasGrabbed[1]
             curEnt.setPosition(newPos)
Exemple #28
0
 def update(self, dt, click, clickKey, curMousePos=None):
     MenuState.update(self, dt, click, clickKey, curMousePos)
     playState = self.menu.playState
     curMousePos = curMousePos[0] - playState.panX, curMousePos[
         1] - playState.panY
     if self.curStart is not None:
         if self.snapToGrid:
             curPoint = gridRound(curMousePos,
                                  self.gridX,
                                  self.gridY,
                                  trueRounding=True)
         else:
             curPoint = curMousePos
         playState.lineVisualiser.devMenuLineGroups = [[
             (self.curStart[0] + playState.panX,
              self.curStart[1] + playState.panY),
             (curPoint[0] + playState.panX, curPoint[1] + playState.panY)
         ]]
         playState.lineVisualiser.flush = True
     playState.lineVisualiser.renderLines = True
     playState.lineVisualiser.renderPhysicsLines = True
     playState.lineVisualiser.forceNoRender = True
     if click is not None:
         if clickKey is 'mouse1down' and self.curStart is None and self.addingMode:
             if self.snapToGrid:
                 self.curStart = gridRound(curMousePos,
                                           self.gridX,
                                           self.gridY,
                                           trueRounding=True)
             else:
                 self.curStart = curMousePos
         elif clickKey is 'mouse1up' and self.addingMode:
             if self.snapToGrid:
                 curPoint = gridRound(curMousePos,
                                      self.gridX,
                                      self.gridY,
                                      trueRounding=True)
             else:
                 curPoint = curMousePos
             playState.addBoundary(self.curStart, curPoint)
             self.curStart = None
         elif clickKey is 'mouse1up' and self.removingMode:
             segment = self.selectSegment(curMousePos, 10)
             if segment is not None:
                 playState.removeBoundary(segment)
         elif clickKey is 'mouse3down' and self.curStart is None:
             segmentEndPair = self.selectSegmentEnd(curMousePos, 10)
             if segmentEndPair is not None:
                 playState.removeBoundary(segmentEndPair[0])
                 if segmentEndPair[1] is 'a':
                     damnPoint = segmentEndPair[0].b
                 else:
                     damnPoint = segmentEndPair[0].a
                 self.curStart = damnPoint.x, damnPoint.y
         elif clickKey is 'mouse3up' and self.curStart is not None:
             if self.snapToGrid:
                 curPoint = gridRound(curMousePos,
                                      self.gridX,
                                      self.gridY,
                                      trueRounding=True)
             else:
                 curPoint = curMousePos
             playState.addBoundary(self.curStart, curPoint)
             self.curStart = None