1212"""
1313import collections
1414import logging
15+ from typing import Deque
1516
1617import pygame
1718from pygame .locals import *
18- from pytmx .util_pygame import load_pygame
19+ from pytmx .util_pygame import load_pygame # type: ignore
1920
2021import pyscroll
2122import pyscroll .data
3132
3233
3334# simple wrapper to keep the screen resizeable
34- def init_screen (width , height ) :
35+ def init_screen (width : int , height : int ) -> pygame . Surface :
3536 return pygame .display .set_mode ((width , height ), pygame .RESIZABLE )
3637
3738
@@ -42,7 +43,7 @@ class ScrollTest:
4243
4344 """
4445
45- def __init__ (self , filename ) -> None :
46+ def __init__ (self , filename : str ) -> None :
4647
4748 # load data from pytmx
4849 tmx_data = load_pygame (filename )
@@ -60,7 +61,7 @@ def __init__(self, filename) -> None:
6061 t = ["scroll demo. press escape to quit" , "arrow keys move" ]
6162
6263 # save the rendered text
63- self .text_overlay = [f .render (i , 1 , (180 , 180 , 0 )) for i in t ]
64+ self .text_overlay = [f .render (i , True , (180 , 180 , 0 )) for i in t ]
6465
6566 # set our initial viewpoint in the center of the map
6667 self .center = [
@@ -71,12 +72,12 @@ def __init__(self, filename) -> None:
7172 # the camera vector is used to handle camera movement
7273 self .camera_acc = [0 , 0 , 0 ]
7374 self .camera_vel = [0 , 0 , 0 ]
74- self .last_update_time = 0
75+ self .last_update_time = 0.0
7576
7677 # true when running
7778 self .running = False
7879
79- def draw (self , surface ) -> None :
80+ def draw (self , surface : pygame . Surface ) -> None :
8081
8182 # tell the map_layer (BufferedRenderer) to draw to the surface
8283 # the draw function requires a rect to draw to.
@@ -85,7 +86,7 @@ def draw(self, surface) -> None:
8586 # blit our text over the map
8687 self .draw_text (surface )
8788
88- def draw_text (self , surface ) -> None :
89+ def draw_text (self , surface : pygame . Surface ) -> None :
8990 y = 0
9091 for text in self .text_overlay :
9192 surface .blit (text , (0 , y ))
@@ -116,27 +117,27 @@ def handle_input(self) -> None:
116117 # but is much easier to use.
117118 pressed = pygame .key .get_pressed ()
118119 if pressed [K_UP ]:
119- self .camera_acc [1 ] = - SCROLL_SPEED * self .last_update_time
120+ self .camera_acc [1 ] = int ( - SCROLL_SPEED * self .last_update_time )
120121 elif pressed [K_DOWN ]:
121- self .camera_acc [1 ] = SCROLL_SPEED * self .last_update_time
122+ self .camera_acc [1 ] = int ( SCROLL_SPEED * self .last_update_time )
122123 else :
123124 self .camera_acc [1 ] = 0
124125
125126 if pressed [K_LEFT ]:
126- self .camera_acc [0 ] = - SCROLL_SPEED * self .last_update_time
127+ self .camera_acc [0 ] = int ( - SCROLL_SPEED * self .last_update_time )
127128 elif pressed [K_RIGHT ]:
128- self .camera_acc [0 ] = SCROLL_SPEED * self .last_update_time
129+ self .camera_acc [0 ] = int ( SCROLL_SPEED * self .last_update_time )
129130 else :
130131 self .camera_acc [0 ] = 0
131132
132- def update (self , td ) -> None :
133+ def update (self , td : float ) -> None :
133134 self .last_update_time = td
134135
135136 friction = pow (0.0001 , self .last_update_time )
136137
137138 # update the camera vector
138- self .camera_vel [0 ] += self .camera_acc [0 ] * td
139- self .camera_vel [1 ] += self .camera_acc [1 ] * td
139+ self .camera_vel [0 ] += int ( self .camera_acc [0 ] * td )
140+ self .camera_vel [1 ] += int ( self .camera_acc [1 ] * td )
140141
141142 self .camera_vel [0 ] *= friction
142143 self .camera_vel [1 ] *= friction
@@ -165,13 +166,13 @@ def update(self, td) -> None:
165166
166167 # set the center somewhere else
167168 # in a game, you would set center to a playable character
168- self .map_layer .center (self .center )
169+ self .map_layer .center (( self .center [ 0 ], self . center [ 1 ]) )
169170
170171 def run (self ) -> None :
171172 clock = pygame .time .Clock ()
172173 self .running = True
173174 fps = 60.0
174- fps_log = collections .deque (maxlen = 20 )
175+ fps_log : Deque [ float ] = collections .deque (maxlen = 20 )
175176
176177 try :
177178 while self .running :
0 commit comments