root/traintris/gameboardview.py @ 185

Revision 185, 28.2 KB (checked in by wnewbury, 2 years ago)

Minor bug fixes for previous commit

Line 
1                       
2import pygame
3from pygame.locals import *
4import sys
5import shelve
6import atexit
7import os.path
8import glob
9import pickle
10import pygame.image
11import pygame.font
12import pygame.key
13import pygame.mouse
14import pygame.display
15import pygame.mixer
16import pygame.mixer_music
17import pygame.time
18import pygame.event
19import pygame.mouse
20import random
21import math
22from constants import *
23
24from eventmanager import *
25
26################################################################################################             
27
28#------------------------------------------------------------------
29# load an image with transparency (key #ff00ff)
30# convert to display surface format
31def makeImage(filename):
32    image = pygame.image.load(filename).convert()
33    image.set_colorkey((255,0,255))
34    image.convert()
35    return image
36
37# load a whole set of ground tiles from a manifest file
38def makeGroundTiles(filename):
39    f = open(os.path.join('assets/',filename + '.tiles'))
40    tiles = []
41    for line in f.readlines():
42        line = line.rstrip()
43        if line[0] == '#':
44            continue
45        tiles.append(makeImage(os.path.join('gfx','tiles',line)))
46    f.close()
47    return tiles
48
49#------------------------------------------------------------------
50# load a whole object tile set
51def makeObjectTileSet(manifest):
52    tiles = []
53    # read the tile definition file
54    f = open(os.path.join('assets',manifest + '.obj'))
55    for line in f.readlines():
56        line = line.rstrip()
57        if line[0] == '#':
58            continue
59        tiles.append(makeImage(os.path.join('gfx','objects',line)))
60    f.close()
61    return tiles
62
63#------------------------------------------------------------------
64def drawBackground(level, tileset, screen):
65    # offset of *top-left corner* of top left tile
66    # 400 - 19 (half tile width)
67    # 120 - 9 (half height of top face of isometric cube)
68    rowstartx = 381
69    rowstarty = 111
70    for i in level:
71        xoff = rowstartx
72        yoff = rowstarty
73        rowstartx -= 18
74        rowstarty += 9
75        for j in i:
76            screen.blit(tileset[j],(xoff,yoff))
77            xoff += 18
78            yoff += 9
79
80#------------------------------------------------------------------
81# render objects & mobs (non-flat tiles; can be any height, but only 1 wide)
82# objects must be considered in terms of their *bottom-left corner* because of the varying heights
83# the "hotspot" of a mob - the centre of its bottom face - moves in two steps:
84#   - from source-tile centre to joining edge of source & dest
85#   - from joining edge of source & dest to centre of dest
86def drawObjectsAndMobs(level, tileset, mobs, surface, frameno, targets = None):
87    ix = 0
88    iy = 0
89
90    xstart = 381
91    ystart = 129
92    for i in level:
93        xoff = xstart - (iy * 18)
94        yoff = ystart + (iy * 9)
95        for j in i:
96            if not j == -1:
97                surface.blit(tileset[j],(xoff,yoff-tileset[j].get_height()))
98            xoff += 18
99            yoff += 9
100            for mob in mobs:
101                if mob.location[0] == ix and mob.location[1] == iy:
102                    mob.draw(surface, frameno, targets)
103            ix += 1
104        ix = 0
105        iy += 1
106
107#------------------------------------------------------------------
108# Short message to output at the end of the game
109def exitFunc():
110    pass
111
112
113
114#------------------------------------------------------------------
115# Helper functio that makes an empry array of a specified size
116def makeEmptyArray(v):
117    array = []
118    for i in range(20):
119        array2 = []
120        for j in range(20):
121            array2.append(v)
122        array.append(array2)
123        del array2
124    return array
125
126
127class GameBoardView:
128   
129    def __init__(self, screen, evManager, tileset, objectTileSet):
130        self.STATE_PREPARE = 0
131        self.STATE_RUN = 1
132        self.state = self.STATE_PREPARE
133
134        self.evManager = evManager
135        self.evManager.RegisterListener(self)
136
137        self.screen = screen
138        self.level = []
139        # background
140        self.level.append(makeEmptyArray(0))
141        self.level.append(makeEmptyArray(-1))
142   
143        # filename
144        self.filename = ''
145        # edit cursor position
146        self.x = 0
147        self.y = 0
148        # tile set index & current tile set (ground, overlay, object)
149        self.setIndex = 0 # selects the type of organism
150        self.set = 1
151        # highlighting graphics
152        # selected tile type
153        self.tileHighlighter = makeImage(os.path.join('gfx','current_tile.bmp'))
154        # selected grid square
155        self.gridHighlighter = makeImage(os.path.join('gfx','current_square.bmp'))
156        # mode = map editor
157        self.i = 0
158        self.mode = 0
159        self.tileSet = tileset
160
161        self.dark = 0
162
163        # add background of trees
164        self.tree = makeImage(os.path.join('gfx','objects',"JTree.bmp"))
165
166        self.screen.blit(self.tree, (650,350))
167        self.screen.blit(self.tree, (575,390))
168        self.screen.blit(self.tree, (690,400))
169        self.screen.blit(self.tree, (510,420))
170
171        self.screen.blit(self.tree, (-20,330))
172        self.screen.blit(self.tree, (40,360))
173        self.screen.blit(self.tree, (125,390))
174        self.screen.blit(self.tree, (10,400))
175        self.screen.blit(self.tree, (70,450))
176        self.screen.blit(self.tree, (-10,490))
177        self.screen.blit(self.tree, (200,430))
178
179        self.sun = makeImage(os.path.join('gfx','objects','sun.png'))
180        self.moon = makeImage(os.path.join('gfx','objects','moon.png'))
181       
182        self.panelType = "mainPanel"
183        self.objectTileSet = makeObjectTileSet(self.panelType) 
184        self.spriteTileSet = makeObjectTileSet("objects")
185        self.panelList = PanelList()
186
187        # prepare board
188        self.draw()
189        self.panelDraw()
190        self.highLighter()
191        self.state = self.STATE_RUN       
192
193        #Messageboard drawing presets
194        self.font = pygame.font.SysFont(None, 30)
195        self.font2 = pygame.font.SysFont(None, 20)
196        self.font3 = pygame.font.SysFont(None, 10)
197
198        self.white = (255, 255, 255)
199        self.black = (0, 0, 0)
200        self.yellow = (255, 255, 0)
201        self.textColor = (55, 74, 46)
202        self.mbcolor = (146,209,79)
203       
204        #Load pictures
205        controls = makeImage(os.path.join('gfx','objects',"controls.jpg"))
206        self.next = makeImage(os.path.join('gfx','objects',"Next.png"))
207        self.skip = makeImage(os.path.join('gfx','objects',"Skip.png"))
208       
209        self.tutorial = True
210        self.tutorialCount = 1
211
212        self.changeSun()
213       
214        # draw messageboard
215        self.drawMessageBoard("Welcome to Chain of Life", "",
216                              "To skip the tutorial press SKIP, " +
217                              "to continue hit NEXT", True, True)
218        pygame.draw.rect(self.screen, self.white, [46, (self.screen.get_height()-92),
219                                                   (self.screen.get_width()-96),79],4)
220        self.screen.blit(controls, (250,185))
221
222    #------------------------------------------------------------------
223    # Helper function responsible for drawing the panel at the top of the game
224    # view, used in teh selection of organisms and species to place
225    def panelDraw(self):
226
227        if self.set == 0:
228            tiles = self.tileSet
229        else:
230            tiles = self.objectTileSet
231        count = 0
232        offset = 200 #it was 38 originally
233        for tile in tiles:
234            self.screen.blit(tile,(0 - ((0 - count) * offset), 0))
235            count += 1
236
237    #------------------------------------------------------------------       
238    # Method that controls the highlighter that is used to indicate what is
239    # currently selected by the user
240    def highLighter(self):
241   
242        if self.setIndex == 0:
243            self.i = 0 # tree
244
245       
246        if self.setIndex == 1:
247            self.i = 1 # sheep
248           
249
250        if self.setIndex == 2:
251            self.i = 2 # wolf
252
253        #self.screen.blit(self.tileHighlighter, (380+self.i*(40), 1))
254               
255        self.screen.blit(self.gridHighlighter,(381 + (self.x*18) - (self.y*18), 111 + (self.x*9) + (self.y*9)))
256
257    #------------------------------------------------------------------
258    # Helper function used to create message boards at the bottom of the screen,
259    # used for notifications and the tutorial
260    def drawMessageBoard(self, string1, string2, string3, b1, b2):
261
262        #draw background rectangle
263        pygame.draw.rect(self.screen, self.mbcolor, [48, (self.screen.get_height()-90),
264                                                (self.screen.get_width()-100),75])
265        #draw buttons
266        if (b1):
267            pygame.draw.rect(self.screen, self.white,
268                                    [46, (self.screen.get_height()-90), 100,40],3)
269            self.screen.blit(self.skip, (38, (self.screen.get_height()-90)))
270        if (b2):
271            pygame.draw.rect(self.screen, self.white,
272                                    [(self.screen.get_width()-150),
273                                     (self.screen.get_height()-90),100,40],3)
274            self.screen.blit(self.next, ((self.screen.get_width()-150),
275                                             (self.screen.get_height() - 91)))
276               
277        #draw messgae
278        self.screen.blit(self.font.render(string1, 1, self.textColor),
279                         ((self.screen.get_width()/2 - 5*len(string1)),
280                          (self.screen.get_height() - 85)))
281        self.screen.blit(self.font.render(string2, 1, self.textColor),
282                         ((self.screen.get_width()/2 - 5*len(string2)),
283                          (self.screen.get_height() - 65)))
284        self.screen.blit(self.font.render(string3, 1, self.textColor),
285                         ((self.screen.get_width()/2 - 5*len(string3)),
286                          (self.screen.get_height() - 45)))
287
288    def draw(self):
289        drawBackground(self.level[0], self.tileSet, self.screen)
290        drawObjectsAndMobs(self.level[1], self.spriteTileSet, [],
291                           self.screen, 0)
292
293    def addOrganism(self):
294        self.level[self.set][self.y][self.x] = self.setIndex
295
296    def changeTile(self, row, column):
297        self.level[0][column][row] = self.setIndex
298
299    def contTutorial(self):
300        self.tutorialCount += 1
301        x = self.tutorialCount
302        if x < 1:
303            self.drawMessageBoard("Welcome to Chain of Life", "",
304                                  "To start the tutorial press next, " +
305                                  "to continue to the game hit skip", True, True)
306        elif x == 2:
307            self.drawMessageBoard("This is Ecoville, your personal eco-reserve",
308                                  "",
309                                  "Your goal is to develop your reserve by adding " +
310                                  "plants and animals", False, True)             
311        elif x ==3:
312            pygame.draw.rect(self.screen, self.yellow, [6, 6, (203-10) , (73-10)], 10)
313            self.drawMessageBoard("To add a plant or animal you must select a type",
314                                  "You can choose a type from the panel at the top",
315                                  "First select a type (i.e. producer) and an organism (i.e. shrub)",
316                                  False, True)
317        elif x == 4:
318            self.evManager.Post(PanelChange("plants", None, None))
319            self.screen.blit(makeImage(os.path.join('gfx','objects',"range.png")), (250,185))
320            self.drawMessageBoard("Not all organisms can be supported in Ecoville",
321                                  "Ecoville needs organisms native to the jungle",
322                                  "Check 'more information' to see each animal's environment",
323                                  False, True)
324        elif x == 5:
325            self.screen.blit(makeImage(os.path.join('gfx','objects',"food.png")), (250,185))
326            self.drawMessageBoard("To win the game you must add a forest ranger",
327                                  "To add anorganism, it needs enough food",
328                                  "For instance, a squirrel needs two shrubs one cell away ",
329                                  False, True)
330        elif x == 6:
331            self.drawMessageBoard("Add a plant to Ecoville",
332                                  "It is currently summer so you need a plant that grows in this season",
333                                  "You have 20 days until the seasons change",
334                                  False, False)
335            self.evManager.Post(PanelChange("omnivore", 780, 35))
336            self.evManager.Post(ChangeTutorial())
337           
338        pygame.display.update()
339       
340    #------------------------------------------------------------------
341    # Method used to bring up more information about the currently selected
342    # organism for use by the user in reference
343    def moreInfoPanel(self, oType, number, context):
344        if oType == "plants": 
345            if number == 0:
346                self.moreInfoDraw(1, "Fruit Tree","Tree that bears fruits!", "none", context,
347                    "Summer", "Giraffes or Elephants or Squirrels")
348            elif number == 1:
349                self.moreInfoDraw(2, "Shrub","Plant with stems, leaves, and roots", "none", context, 
350                    "Summer", "Deers or Rabbits or Sheeps or Cows")
351            elif number == 2:
352                self.moreInfoDraw(3, "Banana Plant","Tropical plant found in Southern Asia", "none",context,
353                    "Summer", "Deer or Squirrels")
354            elif number == 3:
355                self.moreInfoDraw(4, "Grass","Savanna grass, perfect for herbivores", "none", context,
356                    "Winter", "Deer or Sheep or Cows or Giraffes")
357            elif number == 4:
358                self.moreInfoDraw(5, "Vegetables","Vegetables", "none",context,
359                    "Winter", "Rabbits or Elephants or Rats")
360            elif number == 5:
361                self.moreInfoDraw(6, "Berries","Berries", "none",context,
362                    "Winter", "Squirrels or Rats") 
363
364
365        elif oType == "herbPanel1":
366            if number == 0:
367                self.moreInfoDraw(4, "Deer","Lives in all climates",
368                    "2 cells", context, "2 x Grass or 2 x Shrub or 2 x Banana", "Tiger or Bear or Wolf")
369            elif number == 1:
370                self.moreInfoDraw(5, "Sheep","Typically kept as livestock in most climates",
371                    "2 cells", context, "2 x Grass or 2 x Shrub", "Bear")
372            elif number == 2:
373                self.moreInfoDraw(6, "Rabbit","Live in woods, forests, and deserts",
374                    "2 cell", context, "1 x Vegetable or 1 x Shrub", "Fox or Falcon or Lynx or Snake")
375            elif number == 3:
376                self.moreInfoDraw(6, "Squirrel","Live in woods and forests",
377                    "2 cell", context, "1 x Tress or 1 x Banana or 1 x Berries", "Fox or Falcon or Lynx or Snake")
378            elif number == 4:
379                self.moreInfoDraw(6, "Cow","Cow",
380                    "2 cells", context, "3 x Grass or 3 x Shrub", "Bear or Wolf")
381            elif number == 5:
382                self.moreInfoDraw(6, "Elephant","Elephant",
383                    "2 cells", context, "4 x Vegetables or 4 x Tress", "Lion or Tiger")
384            elif number == 6:
385                self.moreInfoDraw(6, "Giraffe","Giraffe",
386                    "2 cells", context,  "4 x Grass or 4 x Trees", "Lion or Tiger")
387            elif number == 7:
388                self.moreInfoDraw(6, "Rat","Nobody likes rats",
389                    "2 cell", context, "1 x Berries or 1 x Vegetables", "Fox or Falcon or Snake or Wolf")
390
391
392        elif oType == "carnivore":
393            if number == 0:
394                self.moreInfoDraw(7, "Fox","Fox", "3 cells", context,
395                    "2 x Rat or 2 x Rabbit or 2 x Squirrel", "Human")
396            elif number == 1:
397                self.moreInfoDraw(9, "Falcon","Falcon",
398                    "3 cells", context, "2 x Rat or 2 x Rabbit or 2 x Squirrel", "Human")
399            elif number == 2:
400                self.moreInfoDraw(9, "Lion","Rawr",
401                    "3 cell", context, "1 x Giraffe or 1 x Elephant", "Human")
402            elif number == 3:
403                self.moreInfoDraw(9, "Lynx","Not to be confused with the sphinx",
404                    "3 cells", context, "3 x Rats or 3 x Rabbits or 3 x Squirrel", "Human")
405            elif number == 4:
406                self.moreInfoDraw(9, "Tiger","Largest cat species",
407                    "3 cells", context, "1 x Elephant or 1 x Giraffe or 2 x Deer", "Human")
408            elif number == 5:
409                self.moreInfoDraw(7, "Bear","Large carnivore that eats almost anything",
410                        "3 cells", context, "2 x Cow or 2 x Sheep or 2 x Deer", "Human")
411            elif number == 6:
412                self.moreInfoDraw(8, "Wolf","Largest member of the dog family",
413                        "3 cells", context, "2 x Rats or 1 x Cow or 1 x Deer or 2 x Rabbit", "Human")
414            elif number == 7:
415                self.moreInfoDraw(8, "Snake","Do not take his apple",
416                        "3 cell", context, "1 x Rabbit or 1 x Squirrel", "Human")
417                           
418        elif oType == "omnivore":
419            if number == 0:
420                self.moreInfoDraw2(9, "Forest Ranger","The forest rangers curates the reserve",
421                        "10 cells", context, "1 x Bear, Wolf, Bear, Lynx, Tiger, Lion, Snake, Falcon, Fox", "None!")
422               
423        pygame.display.update()
424
425    #------------------------------------------------------------------
426    # Function that changes the status of the "sun" in our game environment"
427    def changeSun(self):
428        if self.dark == 1:
429            self.screen.blit(self.moon, (0,0))
430            self.screen.blit(self.tree, (-30,230))
431            self.screen.blit(self.tree, (750,230))
432        else:
433            self.screen.blit(self.sun, (0, 0))
434            self.screen.blit(self.tree, (-30,230))
435            self.screen.blit(self.tree, (740,215))
436        pygame.display.update()
437
438               
439    #------------------------------------------------------------------
440    # Helper function used to output more information to the screen when necessary
441    def moreInfoDraw (self, num, s1, s2, s3, context, s4="ok", s5="ok"):
442        if context == 0:
443            self.evManager.Post(ChangeLock(True))
444            pygame.draw.rect(self.screen, self.mbcolor, [250, 185,
445                                    300,210])
446            pygame.draw.ellipse(self.screen, self.white, [475, 185, 75, 40])
447            self.screen.blit(self.font2.render("Close", 1, self.textColor),
448                          (490,200))
449
450            self.screen.blit(self.font.render(s1, 1, self.textColor),
451                     ((402 - 5.5*len(s1)),200))
452            self.screen.blit(self.font.render("Description: ", 1,
453                                           self.textColor),
454                     (252,225))       
455            self.screen.blit(self.font2.render(s2, 1, self.textColor),
456                     (255,245))
457            self.screen.blit(self.font.render("Foraging Range: ", 1,
458                                           self.textColor),
459                     (252,260))
460            self.screen.blit(self.font2.render(s3, 1, self.textColor),
461                     (255,280))
462
463            self.screen.blit(self.font.render("Diet: ", 1,
464                                              self.textColor),
465                     (252,300))
466            self.screen.blit(self.font2.render(s4, 1, self.textColor),
467                     (255,320))   
468
469
470            self.screen.blit(self.font.render("Predators: ", 1,
471                                              self.textColor),
472                     (252,340))
473            self.screen.blit(self.font2.render(s5, 1, self.textColor),
474                     (255,360))
475        elif context == 1:
476            if self.dark:
477                self.screen.blit(self.moon, (0,0))
478            elif self.dark == 0:
479                self.screen.blit(self.sun, (0, 0))
480            self.screen.blit(self.font2.render(s4, 1, (0,0,0)),
481                             (2, 105))
482            self.screen.blit(self.font2.render("Range: "+ s3, 1,
483                                               (0,0,0)), (2, 85))
484
485
486    def moreInfoDraw2 (self, num, s1, s2, s3, context, s4="ok", s5="ok"):
487        if context == 0:
488            self.evManager.Post(ChangeLock(True))
489            pygame.draw.rect(self.screen, self.mbcolor, [250, 185,
490                                    300,210])
491            pygame.draw.ellipse(self.screen, self.white, [475, 185, 75, 40])
492            self.screen.blit(self.font2.render("Close", 1, self.textColor),
493                          (490,200))
494
495            self.screen.blit(self.font.render(s1, 1, self.textColor),
496                     ((402 - 5.5*len(s1)),200))
497            self.screen.blit(self.font.render("Description: ", 1,
498                                           self.textColor),
499                     (252,225))       
500            self.screen.blit(self.font2.render(s2, 1, self.textColor),
501                     (255,245))
502            self.screen.blit(self.font.render("Foraging Range: ", 1,
503                                           self.textColor),
504                     (252,260))
505            self.screen.blit(self.font2.render(s3, 1, self.textColor),
506                     (255,280))
507
508            self.screen.blit(self.font.render("Animals ranger Bill needs: ", 1,
509                                              self.textColor),
510                     (252,300))
511            self.screen.blit(self.font2.render("1 x Bear & 1 x Lion & 1 x Tiger & 1 x Fox &", 1, self.textColor),
512                     (252,320))   
513
514
515            self.screen.blit(self.font2.render("1 x Lynx & 1 x Falcon & 1 x Wolf & 1 x Snake ", 1,
516                                              self.textColor),
517                     (252,340))
518
519
520        elif context == 1:
521            self.screen.blit(self.sun, (0, 0))
522            self.screen.blit(self.font2.render(s4, 1, (0,0,0)),
523                             (2, 105))
524            self.screen.blit(self.font2.render("Range: "+ s3, 1,
525                                               (0,0,0)), (2, 85))
526
527
528    #------------------------------------------------------------------
529    # Method used to interact and reciev input from the event manager
530    def Notify(self, event):
531        if isinstance(event, CharacterPlaceEvent) and (not self.tutorial):
532            if event.permission == 1:
533                self.x = 19 - event.row
534                self.y = 19 - event.column
535                self.addOrganism()
536                self.draw()
537                pygame.display.update()
538
539        if isinstance(event, CursorMoveEvent) and \
540        (not self.tutorial) and False:
541            self.x = event.row
542            self.y = event.column
543            self.draw()
544            self.highLighter()
545            self.drawMessageBoard("", "", "", False, False)
546            pygame.display.update()
547
548        if isinstance(event, CharacterSelectRequest):
549            mouse = pygame.mouse.get_pos()
550            self.moreInfoPanel(self.panelType, (mouse[0]-105)/80, 1)
551            self.setIndex = event.index
552            self.draw()
553            self.panelDraw()
554            self.highLighter()
555
556        if isinstance(event, Message):
557            self.drawMessageBoard(event.s1, event.s2, event.s3,
558                                      event.b1, event.b2)
559
560        if isinstance(event, ChangeTutorial):
561            self.tutorial = not (self.tutorial)
562            self.drawMessageBoard("Add a plant to Ecoville",
563                                  "It is currently summer so you need a plant that grows in this season",
564                                  "You have 20 days until the seasons change",
565                                  False, False)
566            pygame.display.update()
567           
568        if isinstance(event, NextTutorial):
569            if self.tutorial == True:
570                self.contTutorial()
571
572        if isinstance(event, ChangeTileEvent):
573            self.setIndex = event.index
574            self.changeTile(event.row, event.column)
575            self.panelDraw()
576            self.highLighter()
577            pygame.display.update()
578
579        if isinstance(event, SunlightChangeEvent):
580            self.dark = 1 - self.dark
581            self.changeSun()
582
583        if isinstance(event, GameOver):
584            end = True
585            pygame.event.get()
586           
587            self.screen.blit((makeImage(os.path.join('gfx','objects',"End_Game.jpg"))), (0,0))
588            pygame.display.update()
589            while (end):
590                for event in pygame.event.get():
591                    if (event.type == KEYDOWN and event.key == K_ESCAPE):
592                        self.evManager.Post(QuitEvent())
593                        end = False
594
595        if isinstance(event, Refresh):
596            self.draw()
597            self.panelDraw()
598            pygame.display.update()
599
600        if isinstance(event, PanelChange):
601            x = 0
602            if self.panelType == "mainPanel":
603                    self.panelType = event.type
604                    self.objectTileSet = makeObjectTileSet(self.panelType)
605                    self.draw()
606                    self.panelDraw()
607
608            elif self.panelType == "carnivore":               
609                if event.y > 0 and event.y < 58:
610                    #Back to main panel
611                    if x == 9:
612                        self.panelType = "mainPanel"
613                        self.objectTileSet = makeObjectTileSet(self.panelType)
614                        self.draw()
615                        self.panelDraw()
616                        pygame.display.update()
617                    else:
618                        x = (event.x - 105) / 80
619                        ev = CharacterSelectRequest( self.panelList.carnivoreList[x-1], 13 + x)
620                        self.evManager.Post(ev)
621                    #more info                           
622                elif event.y >= 58 and event.y < 74:
623                    self.moreInfoPanel(self.panelType, (event.x-105)/80, 0)                                             
624
625            elif self.panelType == "plants":
626                if event.y > 0 and event.y < 58:
627                    #Back to main panel
628                    if x == 9:
629                        self.panelType = "mainPanel"
630                        self.objectTileSet = makeObjectTileSet(self.panelType)
631                        self.draw()
632                        self.panelDraw()
633                        pygame.display.update()
634                    else:
635                        x = (event.x - 105) / 80
636                        ev = CharacterSelectRequest( self.panelList.plantList[x-1], x-1)
637                        self.evManager.Post(ev)
638                    #more info                           
639                elif event.y >= 58 and event.y < 74:
640                    self.moreInfoPanel(self.panelType, (event.x-105)/80, 0)                                             
641
642            elif self.panelType == "herbPanel1":
643                if event.y > 0 and event.y < 58:
644                    #Back to main panel
645                    if x == 9:
646                        self.panelType = "mainPanel"
647                        self.objectTileSet = makeObjectTileSet(self.panelType)
648                        self.draw()
649                        self.panelDraw()
650                        pygame.display.update()
651                    else:
652                        x = (event.x - 105) / 80
653                        ev = CharacterSelectRequest( self.panelList.herbivoreList[x-1], 5 + x)
654                        self.evManager.Post(ev)
655                    #more info                           
656                elif event.y >= 58 and event.y < 74:
657                    self.moreInfoPanel(self.panelType, (event.x-105)/80, 0)                                             
658     
659            elif self.panelType == "omnivore":
660                if event.y > 0 and event.y < 58:
661                     if event.type == "plants":
662                         ev = CharacterSelectRequest("Human", 22) # human
663                         self.evManager.Post(ev)   
664                     if event.x >= 745 or event.type == "omnivore":
665                         self.panelType = "mainPanel"
666                         self.objectTileSet = makeObjectTileSet(self.panelType)
667                         self.draw()
668                         self.panelDraw()
669                         pygame.display.update()
670                elif event.y >= 58 and event.y < 74:
671                         self.moreInfoPanel(self.panelType, (event.x-105)/80, 0)
672            pygame.display.update()
Note: See TracBrowser for help on using the browser.