Added chest interaction
[butaba-adventures.git] / utility.py
index 5ef5428..f88430c 100644 (file)
@@ -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