diff pytouhou/game/face.py @ 286:4838e9bab0f9

Implement dialogs (MSG files).
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Sun, 12 Feb 2012 16:06:03 +0100
parents
children f3099ebf4f61
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/pytouhou/game/face.py
@@ -0,0 +1,47 @@
+# -*- encoding: utf-8 -*-
+##
+## Copyright (C) 2012 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published
+## by the Free Software Foundation; version 3 only.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+
+
+from pytouhou.game.sprite import Sprite
+from pytouhou.vm.anmrunner import ANMRunner
+
+
+class Face(object):
+    __slots__ = ('_anm_wrapper', '_sprite', '_anmrunner', 'side', 'x', 'y')
+
+    def __init__(self, anm_wrapper, effect, side):
+        self._anm_wrapper = anm_wrapper
+        self._sprite = Sprite()
+        self._anmrunner = ANMRunner(anm_wrapper, side * 2, self._sprite)
+        self.side = side
+        self.load(0)
+        self.animate(effect)
+
+        #FIXME: the same as game.effect.
+        self.x = -32
+        self.y = -16
+        self._sprite.allow_dest_offset = True
+
+
+    def animate(self, effect):
+        self._anmrunner.interrupt(effect)
+
+
+    def load(self, index):
+        self._sprite.anm, self._sprite.texcoords = self._anm_wrapper.get_sprite(self.side * 8 + index)
+        self._anmrunner.run_frame()
+
+
+    def update(self):
+        self._anmrunner.run_frame()