Menu fonts working, drawpatch fix
authorDan Olson <theoddone33@icculus.org>
Fri, 27 Nov 2009 12:42:44 +0000 (04:42 -0800)
committerDan Olson <theoddone33@icculus.org>
Fri, 27 Nov 2009 12:42:44 +0000 (04:42 -0800)
pyhexen.py
pyhexen/__init__.py
pyhexen/menu.py
pyhexen/vid.py

index 5dbc1c6..fed6d51 100644 (file)
@@ -14,6 +14,8 @@ wad.InitMultipleFiles (['heretic.wad'])
 vid = pyhexen.vid.Video (wad)
 vid.Init ()
 
+menu = pyhexen.menu.Menu (wad, vid)
+
 vid.SetPalette (wad.CacheLumpName('PLAYPAL'))
 vid.DrawRawScreen (wad.CacheLumpName('TITLE'))
 vid.DrawPatch (4, 160, wad.CacheLumpName('ADVISOR'))
index ee8aa56..4faade5 100644 (file)
@@ -1,2 +1,3 @@
 import pyhexen.wad
 import pyhexen.vid
+import pyhexen.menu
index e69de29..c753823 100644 (file)
@@ -0,0 +1,39 @@
+import struct
+import wad
+import vid
+
+class Menu:
+       def __init__ (self, wad, vid):
+               self.wad = wad
+               self.vid = vid
+               self.SkullBaseLump = self.wad.GetNumForName("M_SKL00")
+               self.FontABaseLump = self.wad.GetNumForName("FONTA_S")+1
+               self.FontBBaseLump = self.wad.GetNumForName("FONTB_S")+1
+               
+       def ProcessText (self, text, x, y, baselump, draw=True):
+               print 'Processing %s' % text
+               for c in text:
+                       print 'ord %d' % ord (c)
+                       if ord (c) < 33:
+                               print ("skipzored")
+                               x = x + 5
+                       else:
+                               patch = self.wad.CacheLumpNum (baselump + ord (c) - 33)
+                               (w, h) = struct.unpack_from ('<hh', patch, 0)
+                               if draw:
+                                       print "Drawing at %d,%d" % (x,y)
+                                       self.vid.DrawPatch (x, y, patch)
+                               x  = x + w - 1
+               return x
+               
+       def DrawTextA (self, text, x, y):
+               self.ProcessText (text, x, y, self.FontABaseLump)
+               
+       def TextAWidth (self, text):
+               return self.ProcessText (text, 0, 0, self.FontABaseLump, False)
+               
+       def DrawTextB (self, text, x, y):
+               self.ProcessText (text, x, y, self.FontBBaseLump)
+               
+       def TextBWidth (self, text):
+               return self.ProcessText (text, 0, 0, self.FontBBaseLump, False)
index 0d1e822..163e6f8 100644 (file)
@@ -1,6 +1,5 @@
 import pygame
 import struct
-import string
 import wad
 
 class VidException(Exception):
@@ -33,7 +32,6 @@ class Video:
        def __blitPatch(self, data, x, y, trans = lambda a, b: a):
                (width, height) = struct.unpack_from ('<hh', data, 0)
                (left_offset, top_offset) = struct.unpack_from('<hh', data, 4)
-               column_offsets =  struct.unpack_from('<8i', data, 8)
                
                # Adjust pos
                x = x - left_offset