X-Git-Url: https://harishankar.org/repos/?p=butaba-adventures.git;a=blobdiff_plain;f=utility.py;h=f88430cc7192efe70c17ff17d44b872550e3240d;hp=5ef54281db4cda7d772136da8e4d3f8b98310d14;hb=0b36c3ccd4cb9cdf58fa5285366f023a8c931c61;hpb=0c8a13e68a280cfbcb3248e0c33937f6553c841d diff --git a/utility.py b/utility.py index 5ef5428..f88430c 100644 --- a/utility.py +++ b/utility.py @@ -67,3 +67,71 @@ def ask_question (surface, question, answers, bgscreen): elif event.key == pygame.K_RETURN: return sel_answer +# function displaying the contents of a container. Object must contain +# items list +# edgewidth - container edges to avoid drawing items in +def get_container_object (surface, obj, bgimage, edgewidth=0): + + # get the number of items + numitems = len (obj.objects) + # number of rows + num_rows = (bgimage.get_height () - edgewidth*2) / 48 + # number of cols + num_cols = (bgimage.get_width () - edgewidth*2) / 48 + + objposx = surface.get_width()/2 - bgimage.get_width()/2 + objposy = surface.get_height()/2 - bgimage.get_height()/2 + + selitem = 0 + selrow = 0 + selcol = 0 + + while 1: + # display the background for the container + surface.blit (bgimage, (objposx, objposy)) + + # display each item in the container + i = 0 + j = 0 + + # display all the items in container + for item in obj.objects: + surface.blit (item.image, (objposx + edgewidth+ j*48, objposy + edgewidth + i*48)) + j += 1 + if j >= num_cols: + j = 0 + i += 1 + # only draw selector if there is at least one item + if numitems > 0: + pygame.draw.rect (surface, pygame.Color (255,255,255), + pygame.Rect(objposx + edgewidth + selcol*48, objposy + edgewidth + selrow*48, 48, 48), 1) + + pygame.display.update () + + # get events + for event in pygame.event.get (): + if event.type == pygame.QUIT: + sys.exit (0) + elif event.type == pygame.KEYDOWN: + if event.key == pygame.K_ESCAPE: + return None + elif event.key == pygame.K_RETURN: + if numitems > 0 and selitem >= 0 and selitem < numitems: + return obj.objects[selitem] + else: + return None + elif event.key == pygame.K_UP or event.key == pygame.K_LEFT: + # go to the prev item + selitem -= 1 + if selitem < 0: + selitem = numitems - 1 + selrow = selitem / num_cols + selcol = selitem % num_cols + + elif event.key == pygame.K_DOWN or event.key == pygame.K_RIGHT: + # go to the next item + selitem += 1 + if selitem > numitems - 1: + selitem = 0 + selrow = selitem / num_cols + selcol = selitem % num_cols