comparison pytouhou/ui/sdl/gamerenderer.py @ 532:dacdcca59b66

Don’t put back the rendering data into a tuple, use a specialised struct inside Sprite to pass it to the renderer.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Thu, 19 Dec 2013 21:55:26 +0100
parents 577c3a88fb67
children de778a80820a
comparison
equal deleted inserted replaced
531:a7dc55ad9380 532:dacdcca59b66
13 ## 13 ##
14 14
15 from itertools import chain 15 from itertools import chain
16 16
17 from pytouhou.lib.sdl import Rect 17 from pytouhou.lib.sdl import Rect
18 from .sprite import get_sprite_rendering_data
19 18
20 from pytouhou.utils.helpers import get_logger 19 from pytouhou.utils.helpers import get_logger
21 logger = get_logger(__name__) 20 logger = get_logger(__name__)
22 21
23 22
103 break 102 break
104 103
105 sprite = element.sprite 104 sprite = element.sprite
106 if sprite and sprite.visible: 105 if sprite and sprite.visible:
107 ox, oy = element.x, element.y 106 ox, oy = element.x, element.y
108 blendfunc, (vertices, uvs, colors, rotation, flip) = get_sprite_rendering_data(sprite) 107 data = get_sprite_rendering_data(sprite)
109
110 # Pack data in buffer
111 x, y, width, height = vertices
112 left, right, bottom, top = uvs
113 r, g, b, a = colors #TODO: use it.
114 108
115 #XXX 109 #XXX
116 texture_width = 256 110 texture_width = 256
117 texture_height = 256 111 texture_height = 256
118 112
119 source = Rect(left * texture_width, bottom * texture_height, (right - left) * texture_width, (top - bottom) * texture_height) 113 source = Rect(data.left * texture_width,
120 dest = Rect(ox + x, oy + y, width, height) 114 data.bottom * texture_height,
115 (data.right - data.left) * texture_width,
116 (data.top - data.bottom) * texture_height)
117
118 dest = Rect(ox + data.x, oy + data.y, data.width, data.height)
121 119
122 texture = sprite.anm.texture 120 texture = sprite.anm.texture
123 texture.set_color_mod(r, g, b) 121 texture.set_color_mod(data.r, data.g, data.b)
124 texture.set_alpha_mod(a) 122 texture.set_alpha_mod(data.a)
125 texture.set_blend_mode(2 if blendfunc else 1) 123 texture.set_blend_mode(2 if data.blendfunc else 1)
126 124
127 if rotation or flip: 125 if data.rotation or data.flip:
128 self.window.win.render_copy_ex(texture, source, dest, rotation, flip) 126 self.window.win.render_copy_ex(texture, source, dest, data.rotation, data.flip)
129 else: 127 else:
130 self.window.win.render_copy(texture, source, dest) 128 self.window.win.render_copy(texture, source, dest)
131 129
132 nb_vertices += 4 130 nb_vertices += 4
133 131