annotate pytouhou/game/particle.pyx @ 636:4fa0a8e7d941

Add a GLFW implementation of gui.Window.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Sun, 14 May 2017 20:14:03 +0100
parents cd8a2baf468c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
631
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
1 # -*- encoding: utf-8 -*-
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
2 ##
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
3 ## Copyright (C) 2015 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
4 ##
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
5 ## This program is free software; you can redistribute it and/or modify
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
6 ## it under the terms of the GNU General Public License as published
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
7 ## by the Free Software Foundation; version 3 only.
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
8 ##
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
9 ## This program is distributed in the hope that it will be useful,
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
10 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
11 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
12 ## GNU General Public License for more details.
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
13 ##
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
14
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
15 from pytouhou.game.game cimport Game
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
16
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
17
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
18 cdef class Particle(Effect):
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
19 def __init__(self, pos, index, anm, long amp, Game game, bint reverse=False, long duration=24):
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
20 Effect.__init__(self, pos, index, anm)
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
21
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
22 self.frame = 0
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
23 self.duration = duration
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
24
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
25 random_pos = (self.x + amp * game.prng.rand_double() - amp / 2,
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
26 self.y + amp * game.prng.rand_double() - amp / 2)
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
27
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
28 if not reverse:
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
29 self.pos_interpolator = Interpolator((self.x, self.y), 0,
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
30 random_pos, duration, formula=(lambda x: 2. * x - x ** 2))
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
31 else:
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
32 self.pos_interpolator = Interpolator(random_pos, 0,
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
33 (self.x, self.y), duration, formula=(lambda x: 2. * x - x ** 2))
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
34 self.x, self.y = random_pos
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
35
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
36
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
37 cpdef update(self):
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
38 Effect.update(self)
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
39
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
40 self.pos_interpolator.update(self.frame)
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
41 self.x, self.y = self.pos_interpolator.values
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
42
cd8a2baf468c Move Particle to its own module, to not pollute pytouhou.game.effect.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
43 self.frame += 1