esse.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. from common import Directions
  2. # Esse - any interactible object which exists on the esse layer
  3. class esse:
  4. def __init__(self, x, y):
  5. self._x = _x
  6. self._y = _y
  7. def getX(self):
  8. return self._x
  9. def getY(self):
  10. return self._y
  11. def setX(self, x):
  12. self._x = x
  13. def setY(self, y):
  14. self._y = y
  15. def interact(self, game):
  16. print 'Interacted with an Esse!'
  17. def __str__(self):
  18. return "E"
  19. def passable(self):
  20. return False
  21. def getModelName(self):
  22. return 'tile.pmd'
  23. def getColors(self):
  24. return (1.0, 1.0, 1.0)
  25. # Nothing - when esse layer does not contain an esse
  26. class nothing:
  27. def interact(self, game):
  28. print 'Ain\'t nothin\' here!'
  29. def __str__(self):
  30. return " "
  31. def passable(self):
  32. return True
  33. def getModelName(self):
  34. return 'tile.pmd'
  35. def getColors(self):
  36. return (1.0, 1.0, 1.0)
  37. # Parse initial player data
  38. def p_pc(L):
  39. myX, myY = map(int, L[1:3])
  40. return pc(myX, myY, 100)
  41. # Player - inherits from esse
  42. class pc(esse):
  43. def __init__(self, x, y, life):
  44. self._x = x
  45. self._y = y
  46. self.life = life
  47. self.facing = Directions.UP
  48. def __str__(self):
  49. if self.facing == Directions.UP:
  50. return "^"
  51. if self.facing == Directions.DOWN:
  52. return "v"
  53. if self.facing == Directions.LEFT:
  54. return "<"
  55. if self.facing == Directions.RIGHT:
  56. return ">"
  57. return "P"
  58. def face(self, dir):
  59. self.facing = dir
  60. def getFacing(self):
  61. return self.facing
  62. def getModelName(self):
  63. return 'player.pmd'
  64. def getColors(self):
  65. return (0.75, 0.0, 0.0)
  66. # Parse initial sign data
  67. def p_sign(L):
  68. myX, myY = map(int, L[0:2])
  69. myText = ' '.join(L[2:])
  70. return sign(myX, myY, myText)
  71. # Sign class - displays text
  72. class sign(esse):
  73. def __init__(self, x, y, text):
  74. self._x = x
  75. self._y = y
  76. self.text = text
  77. def interact(self, game):
  78. print self.text
  79. def __str__(self):
  80. return "S"
  81. def getModelName(self):
  82. return 'sign.pmd'
  83. def getColors(self):
  84. return (0.0, 0.0, 1.0)
  85. # NPC class (right now, a glorified signpost)
  86. class npc(esse):
  87. def __init__(self, x, y, text):
  88. self._x = x
  89. self._y = y
  90. self.text = text
  91. def interact(self, game):
  92. print text
  93. # Parse door placement
  94. def p_door(L):
  95. myX, myY= map(int, L[0:2])
  96. myE = L[2]
  97. myDest = L[3]
  98. return door(myX, myY, myDest, myE)
  99. # Door class (portal to another map)
  100. class door(esse):
  101. def __init__(self, x, y, destination, entry):
  102. self._x = x
  103. self._y = y
  104. self.dest = destination
  105. self.entry = entry
  106. def interact(self, game):
  107. game.load(self.dest, self.entry)
  108. def passable(self):
  109. return self.open
  110. def __str__(self):
  111. return "D"
  112. def getModelName(self):
  113. return 'door.pmd'
  114. def getColors(self):
  115. return (0.0, 1.0, 0.0)
  116. # Esse lookup table - for parsing purposes
  117. esse_lookup = {'sign': p_sign,
  118. 'entry': p_pc,
  119. 'door': p_door}