Changeset 199

Show
Ignore:
Timestamp:
05/23/2012 02:10:57 PM (23 months ago)
Author:
andefodahl
Message:

BUTTONS COMPLETE

Location:
traintris
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • traintris/constants.py

    r196 r199  
    143143        self.NEUTRAL, self.HOVER, self.DEPRESSED = range(3) 
    144144        self.buttonModes = ["neutral", "hover", "depressed"] 
    145         self.menuButtonImages = [] 
    146         self.categoryButtonImages = [] 
    147         self.organismButtonImages = [] 
    148145         
    149146class gameNumbers: 
     
    194191        self.numbers = numbers 
    195192 
     193GRAPHICS = GraphicsConstants() 
  • traintris/controllers.py

    r194 r199  
    3737                    ev = QuitEvent() 
    3838                     
     39                if event.type == pygame.MOUSEMOTION: 
     40                    pos = event.pos 
     41                    self.evManager.Post(MouseMoveEvent(pos[0], pos[1])) 
     42                     
     43                if event.type == pygame.MOUSEBUTTONUP: 
     44                    pos = event.pos 
     45                    self.evManager.Post(MouseClickEvent(pos[0], pos[1], 'up')) 
     46                     
    3947                if event.type == pygame.MOUSEBUTTONDOWN: 
    4048 
    4149                    # Get linear transform for board coordinates 
    4250                    pos = pygame.mouse.get_pos() 
     51                    self.evManager.Post(MouseClickEvent(pos[0], pos[1], 'down')) 
    4352                    x_coord = pos[0] - self.numbers["mousex"] 
    4453                    y_coord = self.numbers["mousey"] - pos[1] 
     
    117126            event = TickEvent() 
    118127            self.evManager.Post(event) 
     128        pygame.quit() 
     129        sys.exit() 
    119130 
    120131##            runner = unittest.TextTestRunner() 
  • traintris/eventmanager.py

    r193 r199  
    4343        self.row = row 
    4444        self.permission = permission 
     45         
     46class MouseClickEvent(Event): 
     47    def __init__(self, x, y, type): 
     48        self.name = 'Mouse Click Event' 
     49        self.x = x 
     50        self.y = y 
     51        self.type = type 
    4552 
    46 class CursorMoveEvent(Event): 
    47     def __init__(self, row, column): 
    48         self.name = 'Cursor Placement Event' 
    49         self.column = column 
    50         self.row = row 
     53class MouseMoveEvent(Event): 
     54    def __init__(self, x, y): 
     55        self.name = 'Mouse Placement Event' 
     56        self.x = x 
     57        self.y = y 
    5158 
    5259class Message(Event): 
  • traintris/gameboardview.py

    r198 r199  
    2727################################################################################################               
    2828 
    29          
    30 #------------------------------------------------------------------ 
    31 # Short message to output at the end of the game 
    32 def exitFunc(): 
    33     pass 
    34  
    3529 
    3630 
     
    6963         
    7064        self.selectedOrganism = None 
     65        self.lastButtonClicked = None 
     66        self.lastButtonUsed = None 
     67        self.buttonList = [] 
    7168     
    7269        # filename 
     
    119116                        "To skip the tutorial press SKIP, " + 
    120117                        "to continue hit NEXT", True, True) 
     118         
     119        self.addButton("hi", "testbutton", (100,100), (100,100)) 
    121120         
    122121        self.draw() 
     
    202201        self.highLighter() 
    203202        self.panelDraw() 
     203        for button in self.buttonList: 
     204            self.graphics.drawButton(button.images, button.mode, button.pos) 
    204205        if self.message: 
    205206            self.drawMessageBoard(self.message) 
    206207        pygame.display.update() 
    207208         
     209    def addButton(self, text, imageName, size, pos): 
     210        self.buttonList.append(Button(text, imageName, size, pos)) 
     211         
     212    def removeButton(self, imageName): 
     213        for button in self.buttonList: 
     214            if button.imageName == imageName: 
     215                self.buttonList.remove(button) 
    208216 
    209217    def addOrganism(self): 
     
    462470 
    463471    #------------------------------------------------------------------ 
    464     # Method used to interact and reciev input from the event manager 
     472    # Method used to interact and recieve input from the event manager 
    465473    def Notify(self, event): 
    466474        if isinstance(event, CharacterPlaceEvent) and (not self.tutorial): 
     
    475483                pygame.display.update() 
    476484 
    477         if isinstance(event, CursorMoveEvent) and \ 
    478         (not self.tutorial) and False: 
    479             self.x = event.row 
    480             self.y = event.column 
     485        if isinstance(event, MouseMoveEvent) and (not self.tutorial): 
     486            self.x = event.x 
     487            self.y = event.y 
     488            for button in self.buttonList: 
     489                if button.mode != GRAPHICS.DEPRESSED: 
     490                    if self.x > button.pos[0] and self.x < button.pos[0]+button.size[0] \ 
     491                    and self.y > button.pos[1] and self.y < button.pos[1]+button.size[1]: 
     492                        button.mode = GRAPHICS.HOVER 
     493                    else: 
     494                        button.mode = GRAPHICS.NEUTRAL 
    481495            self.draw() 
    482             self.message = ("", "", "", False, False) 
    483496            pygame.display.update() 
    484  
     497             
     498        if isinstance(event, MouseClickEvent): 
     499            self.x = event.x 
     500            self.y = event.y 
     501            if event.type == 'down': 
     502                for button in self.buttonList: 
     503                    if self.x > button.pos[0] and self.x < button.pos[0]+button.size[0] \ 
     504                    and self.y > button.pos[1] and self.y < button.pos[1]+button.size[1]: 
     505                        self.lastButtonClicked = button 
     506                        button.mode = GRAPHICS.DEPRESSED 
     507            if event.type == 'up': 
     508                for button in self.buttonList: 
     509                    button.mode = GRAPHICS.NEUTRAL 
     510                    if self.x > button.pos[0] and self.x < button.pos[0]+button.size[0] \ 
     511                    and self.y > button.pos[1] and self.y < button.pos[1]+button.size[1]: 
     512                        if button == self.lastButtonClicked: 
     513                            self.lastButtonUsed = button 
     514                        button.mode = GRAPHICS.HOVER 
     515            self.draw() 
     516                         
     517                         
    485518        if isinstance(event, CharacterSelectRequest): 
    486519            mouse = pygame.mouse.get_pos() 
     
    526559                        self.evManager.Post(QuitEvent()) 
    527560                        end = false 
    528                          
    529         if isinstance(event, QuitEvent): 
    530             exitFunc() 
    531561 
    532562        if isinstance(event, Refresh): 
     
    552582class Button: 
    553583    def __init__(self, text, imageName, size, pos): 
    554         self.mode = GraphicsConstants.NEUTRAL 
     584        self.mode = GRAPHICS.NEUTRAL 
     585        self.pos = pos 
     586        self.imageName = imageName 
     587        self.size = size 
    555588        imageList = [] 
    556         for mode in GraphicsConstants.buttonModes: 
    557             imageList += imageName + "_" + mode 
    558         self.images = imageList 
    559          
    560          
     589        for mode in GRAPHICS.buttonModes: 
     590            imageList.append(imageName + "_" + mode + ".jpg") 
     591        self.images = imageList         
     592         
  • traintris/graphics.py

    r198 r199  
    11import pygame 
     2from constants import GRAPHICS 
    23import os.path 
    34 
     
    158159    def drawButton(self, images, mode, pos): 
    159160     
    160         if mode == GraphicsConstants.NEUTRAL: 
    161             image = images[GraphicsConstants.NEUTRAL] 
    162         elif mode == GraphicsConstants.HOVER: 
    163             image = images[GraphicsConstants.HOVER] 
     161        if mode == GRAPHICS.NEUTRAL: 
     162            image = images[GRAPHICS.NEUTRAL] 
     163        elif mode == GRAPHICS.HOVER: 
     164            image = images[GRAPHICS.HOVER] 
    164165        else: 
    165             image = images[GraphicsConstants.DEPRESSED] 
     166            image = images[GRAPHICS.DEPRESSED] 
    166167                 
    167         self.drawImage(image, (x,y)) 
     168        self.drawImage(image, pos) 
    168169 
    169170    #------------------------------------------------------------------------------------------------- 
    170171    # draws an image based on an identifying string and a pos 
    171172    def drawImage(self, imageName, pos): 
    172         globalVars.screen.blit(self.loadImage(imageName), pos) 
     173        self.screen.blit(self.loadImage(imageName), pos) 
    173174 
    174175    #------------------------------------------------------------------------------------------------- 
    175176    # loads an image either from a file or from the image dictionary 
    176177    def loadImage(self, imageName): 
    177         imageName = path.join('gfx\objects', imageName) 
     178        filename = os.path.join('gfx\objects', imageName) 
    178179        if not (imageName in self.imageDict): 
    179180            try: 
     
    184185            except pygame.error: 
    185186                self.imageDict[imageName] = pygame.image.load( 
    186                     "images\error.jpg") 
     187                    "gfx\objects\error.jpg") 
    187188        return self.imageDict[imageName] 
    188189