162 begin |
162 begin |
163 PrevTime:= SDL_GetTicks; |
163 PrevTime:= SDL_GetTicks; |
164 while isTerminated = false do |
164 while isTerminated = false do |
165 begin |
165 begin |
166 SDL_PumpEvents(); |
166 SDL_PumpEvents(); |
167 {$IFDEF SDL13} |
167 while SDL_PeepEvents(@event, 1, SDL_GETEVENT, {$IFDEF SDL13}SDL_FIRSTEVENT, SDL_LASTEVENT{$ELSE}SDL_ALLEVENTS{$ENDIF}) > 0 do |
168 while SDL_PeepEvents(@event, 1, SDL_GETEVENT, SDL_FIRSTEVENT, SDL_LASTEVENT) > 0 do |
|
169 {$ELSE} |
|
170 while SDL_PeepEvents(@event, 1, SDL_GETEVENT, SDL_ALLEVENTS) > 0 do |
|
171 {$ENDIF} |
|
172 begin |
168 begin |
173 case event.type_ of |
169 case event.type_ of |
|
170 {$IFDEF SDL13} |
174 SDL_KEYDOWN: if GameState = gsChat then |
171 SDL_KEYDOWN: if GameState = gsChat then |
175 {$IFDEF SDL13} |
|
176 // sdl on iphone supports only ashii keyboards and the unicode field is deprecated in sdl 1.3 |
172 // sdl on iphone supports only ashii keyboards and the unicode field is deprecated in sdl 1.3 |
177 KeyPressChat(event.key.keysym.sym); |
173 KeyPressChat(event.key.keysym.sym); |
178 SDL_WINDOWEVENT: |
174 SDL_WINDOWEVENT: |
179 if event.window.event = SDL_WINDOWEVENT_SHOWN then |
175 if event.window.event = SDL_WINDOWEVENT_SHOWN then |
180 begin |
176 begin |
190 begin |
186 begin |
191 GameState:= previousGameState; |
187 GameState:= previousGameState; |
192 end |
188 end |
193 else if event.window.event = SDL_WINDOWEVENT_RESIZED then |
189 else if event.window.event = SDL_WINDOWEVENT_RESIZED then |
194 begin |
190 begin |
|
191 // way too broken right now |
|
192 (* |
195 cNewScreenWidth:= max(2 * (event.window.data1 div 2), cMinScreenWidth); |
193 cNewScreenWidth:= max(2 * (event.window.data1 div 2), cMinScreenWidth); |
196 cNewScreenHeight:= max(2 * (event.window.data2 div 2), cMinScreenHeight); |
194 cNewScreenHeight:= max(2 * (event.window.data2 div 2), cMinScreenHeight); |
197 cScreenResizeDelay:= RealTicks+500; |
195 cScreenResizeDelay:= RealTicks+500; |
|
196 *) |
198 end; |
197 end; |
199 SDL_FINGERMOTION: onTouchMotion(event.tfinger.x, event.tfinger.y,event.tfinger.dx, event.tfinger.dy, event.tfinger.fingerId); |
198 SDL_FINGERMOTION: onTouchMotion(event.tfinger.x, event.tfinger.y,event.tfinger.dx, event.tfinger.dy, event.tfinger.fingerId); |
200 SDL_FINGERDOWN: onTouchDown(event.tfinger.x, event.tfinger.y, event.tfinger.fingerId); |
199 SDL_FINGERDOWN: onTouchDown(event.tfinger.x, event.tfinger.y, event.tfinger.fingerId); |
201 SDL_FINGERUP: onTouchUp(event.tfinger.x, event.tfinger.y, event.tfinger.fingerId); |
200 SDL_FINGERUP: onTouchUp(event.tfinger.x, event.tfinger.y, event.tfinger.fingerId); |
202 {$ELSE} |
201 {$ELSE} |
|
202 SDL_KEYDOWN: if GameState = gsChat then |
203 KeyPressChat(event.key.keysym.unicode); |
203 KeyPressChat(event.key.keysym.unicode); |
204 SDL_MOUSEBUTTONDOWN: if event.button.button = SDL_BUTTON_WHEELDOWN then wheelDown:= true; |
204 SDL_MOUSEBUTTONDOWN: if event.button.button = SDL_BUTTON_WHEELDOWN then wheelDown:= true; |
205 SDL_MOUSEBUTTONUP: if event.button.button = SDL_BUTTON_WHEELUP then wheelUp:= true; |
205 SDL_MOUSEBUTTONUP: if event.button.button = SDL_BUTTON_WHEELUP then wheelUp:= true; |
206 SDL_ACTIVEEVENT: |
206 SDL_ACTIVEEVENT: |
207 if (event.active.state and SDL_APPINPUTFOCUS) <> 0 then |
207 if (event.active.state and SDL_APPINPUTFOCUS) <> 0 then |
226 SDL_JOYBUTTONDOWN: ControllerButtonEvent(event.jbutton.which, event.jbutton.button, true); |
226 SDL_JOYBUTTONDOWN: ControllerButtonEvent(event.jbutton.which, event.jbutton.button, true); |
227 SDL_JOYBUTTONUP: ControllerButtonEvent(event.jbutton.which, event.jbutton.button, false); |
227 SDL_JOYBUTTONUP: ControllerButtonEvent(event.jbutton.which, event.jbutton.button, false); |
228 SDL_QUITEV: isTerminated:= true |
228 SDL_QUITEV: isTerminated:= true |
229 end; //end case event.type_ of |
229 end; //end case event.type_ of |
230 end; //end while SDL_PollEvent(@event) <> 0 do |
230 end; //end while SDL_PollEvent(@event) <> 0 do |
|
231 |
231 if (cScreenResizeDelay <> 0) and (cScreenResizeDelay < RealTicks) and ((cNewScreenWidth <> cScreenWidth) or (cNewScreenHeight <> cScreenHeight)) then |
232 if (cScreenResizeDelay <> 0) and (cScreenResizeDelay < RealTicks) and ((cNewScreenWidth <> cScreenWidth) or (cNewScreenHeight <> cScreenHeight)) then |
232 begin |
233 begin |
233 cScreenResizeDelay:= 0; |
234 cScreenResizeDelay:= 0; |
234 cScreenWidth:= cNewScreenWidth; |
235 cScreenWidth:= cNewScreenWidth; |
235 cScreenHeight:= cNewScreenHeight; |
236 cScreenHeight:= cNewScreenHeight; |
239 ScriptOnScreenResize(); |
240 ScriptOnScreenResize(); |
240 InitCameraBorders() |
241 InitCameraBorders() |
241 end; |
242 end; |
242 |
243 |
243 if isTerminated = false then |
244 if isTerminated = false then |
244 begin |
245 begin |
245 CurrTime:= SDL_GetTicks; |
246 CurrTime:= SDL_GetTicks; |
246 if PrevTime + longword(cTimerInterval) <= CurrTime then |
247 if PrevTime + longword(cTimerInterval) <= CurrTime then |
247 begin |
248 begin |
248 DoTimer(CurrTime - PrevTime); |
249 DoTimer(CurrTime - PrevTime); |
249 PrevTime:= CurrTime |
250 PrevTime:= CurrTime |
250 end |
251 end |
251 else SDL_Delay(1); |
252 else SDL_Delay(1); |
252 IPCCheckSock(); |
253 IPCCheckSock(); |
253 end; |
254 end; |
254 end; |
255 end; |
255 end; |
256 end; |
256 |
257 |
257 /////////////// |
258 /////////////// |
258 {$IFDEF HWLIBRARY} |
259 procedure Game{$IFDEF HWLIBRARY}(gameArgs: PPChar); cdecl; export{$ENDIF}; |
259 procedure Game(gameArgs: PPChar); cdecl; export; |
|
260 {$ELSE} |
|
261 procedure Game; |
|
262 {$ENDIF} |
|
263 var p: TPathType; |
260 var p: TPathType; |
264 s: shortstring; |
261 s: shortstring; |
265 i: LongInt; |
262 i: LongInt; |
266 begin |
263 begin |
267 {$IFDEF HWLIBRARY} |
264 {$IFDEF HWLIBRARY} |