mima-engine 0.2.2__py3-none-any.whl → 0.2.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mima-engine might be problematic. Click here for more details.
- mima/__init__.py +4 -1
- mima/backend/pygame_assets.py +67 -9
- mima/backend/pygame_backend.py +5 -2
- mima/backend/pygame_events.py +210 -194
- mima/backend/touch_control_scheme_a.py +126 -0
- mima/backend/touch_control_scheme_b.py +132 -0
- mima/core/__init__.py +0 -0
- mima/{collision.py → core/collision.py} +45 -28
- mima/core/database.py +58 -0
- mima/{engine.py → core/engine.py} +51 -33
- mima/{mode_engine.py → core/mode_engine.py} +7 -6
- mima/{scene_engine.py → core/scene_engine.py} +3 -7
- mima/maps/template.py +31 -1
- mima/maps/tiled/tiled_object.py +1 -1
- mima/maps/tiled/tiled_tileset.py +10 -5
- mima/maps/tilemap.py +4 -10
- mima/maps/tileset.py +5 -4
- mima/objects/animated_sprite.py +79 -68
- mima/objects/creature.py +20 -7
- mima/objects/dynamic.py +3 -1
- mima/objects/effects/colorize_screen.py +9 -1
- mima/objects/effects/debug_box.py +11 -2
- mima/objects/effects/light.py +6 -1
- mima/objects/effects/show_sprite.py +17 -6
- mima/objects/effects/walking_on_grass.py +27 -13
- mima/objects/effects/walking_on_water.py +36 -31
- mima/objects/loader.py +6 -9
- mima/objects/projectile.py +15 -5
- mima/objects/sprite.py +8 -1
- mima/objects/world/color_gate.py +10 -15
- mima/objects/world/color_switch.py +18 -28
- mima/objects/world/container.py +32 -37
- mima/objects/world/floor_switch.py +22 -28
- mima/objects/world/gate.py +21 -24
- mima/objects/world/light_source.py +27 -32
- mima/objects/world/logic_gate.py +30 -37
- mima/objects/world/movable.py +106 -89
- mima/objects/world/oneway.py +63 -41
- mima/objects/world/pickup.py +81 -17
- mima/objects/world/switch.py +46 -35
- mima/objects/world/teleport.py +21 -22
- mima/scripts/commands/oneway_move.py +4 -3
- mima/scripts/commands/present_item.py +10 -10
- mima/types/graphic_state.py +1 -0
- mima/usables/item.py +28 -9
- mima/usables/weapon.py +28 -8
- mima/util/constants.py +3 -3
- mima/util/input_defaults.py +12 -0
- mima/util/runtime_config.py +8 -15
- mima/util/trading_item.py +4 -1
- mima/view/mima_mode.py +8 -2
- mima/view/mima_scene.py +6 -0
- mima/view/mima_window.py +91 -0
- {mima_engine-0.2.2.dist-info → mima_engine-0.2.4.dist-info}/METADATA +4 -4
- {mima_engine-0.2.2.dist-info → mima_engine-0.2.4.dist-info}/RECORD +57 -53
- {mima_engine-0.2.2.dist-info → mima_engine-0.2.4.dist-info}/WHEEL +1 -1
- {mima_engine-0.2.2.dist-info → mima_engine-0.2.4.dist-info}/top_level.txt +0 -0
mima/__init__.py
CHANGED
mima/backend/pygame_assets.py
CHANGED
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import csv
|
|
4
4
|
import logging
|
|
5
5
|
import os
|
|
6
|
-
from typing import TYPE_CHECKING, Dict, Optional
|
|
6
|
+
from typing import TYPE_CHECKING, Any, Dict, Optional
|
|
7
7
|
|
|
8
8
|
import pygame
|
|
9
9
|
|
|
@@ -21,9 +21,10 @@ LOG = logging.getLogger(__name__)
|
|
|
21
21
|
class PygameAssets:
|
|
22
22
|
def __init__(self, rtc: RuntimeConfig, init_file: str):
|
|
23
23
|
self.rtc = rtc
|
|
24
|
-
self.
|
|
24
|
+
self._images: Dict[str, pygame.Surface] = {}
|
|
25
25
|
self._tilesets: Dict[str, TiledTileset] = {}
|
|
26
26
|
self._templates: Dict[str, TiledTemplate] = {}
|
|
27
|
+
self._sprite_sheets: Dict[str, Dict[Any]] = {}
|
|
27
28
|
self._maps: Dict[str, TiledMap] = {}
|
|
28
29
|
self._music: Dict[str, str] = {}
|
|
29
30
|
self._sound: Dict[str, str] = {}
|
|
@@ -145,17 +146,17 @@ class PygameAssets:
|
|
|
145
146
|
# print(name, filename)
|
|
146
147
|
|
|
147
148
|
possible_name = os.path.split(filename)[-1][:-4]
|
|
148
|
-
if possible_name in self.
|
|
149
|
+
if possible_name in self._images:
|
|
149
150
|
LOG.warning(
|
|
150
151
|
"Sprite '%s' is possibly already loaded with name %s.",
|
|
151
152
|
filename,
|
|
152
153
|
possible_name,
|
|
153
154
|
)
|
|
154
|
-
elif name in self.
|
|
155
|
+
elif name in self._images:
|
|
155
156
|
LOG.debug("Sprite '%s' already loaded. Skipping.")
|
|
156
157
|
return name
|
|
157
158
|
|
|
158
|
-
self.
|
|
159
|
+
self._images[name] = self._load_sprite_from_disk(filename)
|
|
159
160
|
|
|
160
161
|
return name
|
|
161
162
|
|
|
@@ -182,7 +183,59 @@ class PygameAssets:
|
|
|
182
183
|
elif name in self._tilesets:
|
|
183
184
|
LOG.debug("Tileset at '%s' already loaded. Skipping", filename)
|
|
184
185
|
return name
|
|
185
|
-
|
|
186
|
+
ts = TiledTileset(name, filename)
|
|
187
|
+
self._tilesets[name] = ts
|
|
188
|
+
|
|
189
|
+
# Load sprite sheets
|
|
190
|
+
for tile in ts.tiles:
|
|
191
|
+
if not tile.sprite_name:
|
|
192
|
+
continue
|
|
193
|
+
|
|
194
|
+
self._sprite_sheets.setdefault(tile.sprite_name, {})
|
|
195
|
+
data = {
|
|
196
|
+
"duration": [],
|
|
197
|
+
"ox": [],
|
|
198
|
+
"oy": [],
|
|
199
|
+
"image": [],
|
|
200
|
+
"width": [],
|
|
201
|
+
"height": [],
|
|
202
|
+
}
|
|
203
|
+
if tile.animated:
|
|
204
|
+
for frame in tile._frames:
|
|
205
|
+
data["duration"].append(frame.duration)
|
|
206
|
+
data["ox"].append(frame.frame_id % ts.columns)
|
|
207
|
+
data["oy"].append(frame.frame_id // ts.columns)
|
|
208
|
+
data["image"].append(ts.image_name)
|
|
209
|
+
data["width"].append(ts.tile_width)
|
|
210
|
+
data["height"].append(ts.tile_height)
|
|
211
|
+
else:
|
|
212
|
+
data["duration"].append(1000)
|
|
213
|
+
data["ox"].append(tile.tile_id % ts.columns)
|
|
214
|
+
data["oy"].append(tile.tile_id // ts.columns)
|
|
215
|
+
data["image"].append(ts.image_name)
|
|
216
|
+
data["width"].append(ts.tile_width)
|
|
217
|
+
data["height"].append(ts.tile_height)
|
|
218
|
+
|
|
219
|
+
self._sprite_sheets[tile.sprite_name].setdefault(
|
|
220
|
+
tile.graphic_state, {}
|
|
221
|
+
)
|
|
222
|
+
self._sprite_sheets[tile.sprite_name][tile.graphic_state][
|
|
223
|
+
tile.facing_direction
|
|
224
|
+
] = data
|
|
225
|
+
LOG.debug(
|
|
226
|
+
"%s",
|
|
227
|
+
{
|
|
228
|
+
"operation": "add frames",
|
|
229
|
+
"image": ts.image_name,
|
|
230
|
+
"sprite": tile.sprite_name,
|
|
231
|
+
"graphic_state": tile.graphic_state.name,
|
|
232
|
+
"direction": tile.facing_direction.name,
|
|
233
|
+
"frame_data": data,
|
|
234
|
+
},
|
|
235
|
+
)
|
|
236
|
+
|
|
237
|
+
# for sprite_name in ts.sprite_names:
|
|
238
|
+
# self._sprites[sprite_name] = {}
|
|
186
239
|
return name
|
|
187
240
|
|
|
188
241
|
def _load_template(self, name, filename=None):
|
|
@@ -191,7 +244,7 @@ class PygameAssets:
|
|
|
191
244
|
|
|
192
245
|
if not os.path.isfile(filename):
|
|
193
246
|
filename = os.path.join(
|
|
194
|
-
self.
|
|
247
|
+
self.data_path, "templates", os.path.split(filename)[-1]
|
|
195
248
|
)
|
|
196
249
|
|
|
197
250
|
possible_name = os.path.split(filename)[-1][:-3]
|
|
@@ -287,13 +340,18 @@ class PygameAssets:
|
|
|
287
340
|
name_color = f"{name}_color"
|
|
288
341
|
else:
|
|
289
342
|
name_color = name
|
|
290
|
-
return self.
|
|
343
|
+
return self._images.get(name_color, self._images[name])
|
|
344
|
+
|
|
345
|
+
def get_sprite_data(self, sprite_id):
|
|
346
|
+
if not sprite_id:
|
|
347
|
+
return {}
|
|
348
|
+
return self._sprite_sheets[sprite_id]
|
|
291
349
|
|
|
292
350
|
def new_map(self, name, tilemap: Tilemap):
|
|
293
351
|
self._maps[name] = tilemap
|
|
294
352
|
|
|
295
353
|
def new_sprite(self, name, surface: pygame.Surface):
|
|
296
|
-
self.
|
|
354
|
+
self._images[name] = surface
|
|
297
355
|
|
|
298
356
|
def get_tileset(self, name):
|
|
299
357
|
if name not in self._tilesets:
|
mima/backend/pygame_backend.py
CHANGED
|
@@ -464,8 +464,11 @@ class PygameBackend:
|
|
|
464
464
|
)
|
|
465
465
|
idx += 1
|
|
466
466
|
|
|
467
|
-
def draw_pixel(
|
|
468
|
-
self
|
|
467
|
+
def draw_pixel(
|
|
468
|
+
self, px: float, py: float, color: Color, camera_name=C_DISPLAY
|
|
469
|
+
):
|
|
470
|
+
display = self._cameras[camera_name].view
|
|
471
|
+
display.set_at((int(px), int(py)), color.getRGB())
|
|
469
472
|
|
|
470
473
|
def draw_camera(self, name, px, py, scale):
|
|
471
474
|
self.display.blit(
|
mima/backend/pygame_events.py
CHANGED
|
@@ -13,6 +13,8 @@ from ..util.input_defaults import (
|
|
|
13
13
|
DEFAULT_KEYBOARD_MAP,
|
|
14
14
|
DEFAULT_TOUCHSCREEN_MAP,
|
|
15
15
|
)
|
|
16
|
+
from .touch_control_scheme_a import TouchControlSchemeA
|
|
17
|
+
from .touch_control_scheme_b import TouchControlSchemeB
|
|
16
18
|
|
|
17
19
|
LOG = logging.getLogger(__name__)
|
|
18
20
|
|
|
@@ -41,14 +43,15 @@ class PygameUserInput:
|
|
|
41
43
|
):
|
|
42
44
|
self._last_keys: Dict[K, bool] = {}
|
|
43
45
|
self._new_keys: Dict[K, bool] = {but: False for but in BUTTONS}
|
|
44
|
-
self.
|
|
45
|
-
self.
|
|
46
|
-
self.
|
|
47
|
-
self.
|
|
48
|
-
self.
|
|
49
|
-
self.
|
|
50
|
-
self.
|
|
51
|
-
self.
|
|
46
|
+
self._touch_control = TouchControlSchemeB()
|
|
47
|
+
# self._left_finger_tap_pos: pygame.Vector2 = pygame.Vector2(0, 0)
|
|
48
|
+
# self._right_finger_tap_pos: pygame.Vector2 = pygame.Vector2(0, 0)
|
|
49
|
+
# self._left_finger_pos: pygame.Vector2 = pygame.Vector2(0, 0)
|
|
50
|
+
# self._right_finger_pos: pygame.Vector2 = pygame.Vector2(0, 0)
|
|
51
|
+
# self._last_left_tap: float = 0.0
|
|
52
|
+
# self._last_right_tap: float = 0.0
|
|
53
|
+
# self._last_left_motion: float = 0.0
|
|
54
|
+
# self._last_right_motion: float = 0.0
|
|
52
55
|
self._key_map: Dict[K, List[int]] = {}
|
|
53
56
|
self.joystick_to_player: Dict[int, Player] = (
|
|
54
57
|
joy_to_player
|
|
@@ -104,6 +107,7 @@ class PygameUserInput:
|
|
|
104
107
|
self._past_events = {}
|
|
105
108
|
self._new_events = {}
|
|
106
109
|
self._collect_all_events = False
|
|
110
|
+
self.enable_touch_controls = False
|
|
107
111
|
|
|
108
112
|
def reset(self):
|
|
109
113
|
self._last_keys = self._new_keys.copy()
|
|
@@ -159,7 +163,8 @@ class PygameUserInput:
|
|
|
159
163
|
if event.type in JOYSTICK_EVENTS and self.joystick_input_enabled:
|
|
160
164
|
self._handle_joystick(event)
|
|
161
165
|
|
|
162
|
-
|
|
166
|
+
# self._touch_control.update(self.width, self.height)
|
|
167
|
+
if self.enable_touch_controls and event.type in TOUCH_EVENTS:
|
|
163
168
|
self._handle_touch(event)
|
|
164
169
|
|
|
165
170
|
# print(
|
|
@@ -270,194 +275,202 @@ class PygameUserInput:
|
|
|
270
275
|
self.unset_key(self._js_real(event.joy, K.DOWN))
|
|
271
276
|
|
|
272
277
|
def _handle_touch(self, event):
|
|
273
|
-
|
|
274
|
-
event
|
|
278
|
+
set_keys, unset_keys = self._touch_control.handle_touch(
|
|
279
|
+
event, self.width, self.height
|
|
275
280
|
)
|
|
281
|
+
for key in unset_keys:
|
|
282
|
+
self.unset_key(key)
|
|
283
|
+
for key in set_keys:
|
|
284
|
+
self.set_key(key)
|
|
276
285
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
286
|
+
# finger_pos = pygame.Vector2(
|
|
287
|
+
# event.x * self.width, event.y * self.height
|
|
288
|
+
# )
|
|
280
289
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
290
|
+
# if event.type == pygame.FINGERDOWN:
|
|
291
|
+
# tap = time.time()
|
|
292
|
+
# for key, area in DEFAULT_TOUCHSCREEN_MAP.items():
|
|
293
|
+
|
|
294
|
+
# if (
|
|
295
|
+
# area[0][0] <= event.x < area[1][0]
|
|
296
|
+
# and area[0][1] <= event.y < area[1][1]
|
|
297
|
+
# ):
|
|
298
|
+
# if key == K.P1_UP:
|
|
299
|
+
# self._left_finger_tap_pos = finger_pos
|
|
300
|
+
# if tap - self._last_left_tap < DOUBLE_TAP_SPEED:
|
|
301
|
+
# # print("Left Double Tap")
|
|
302
|
+
# self.set_key(K.P1_SELECT)
|
|
303
|
+
# self._last_left_tap = tap
|
|
304
|
+
# elif key == K.P1_L:
|
|
305
|
+
# self.set_key(K.P1_L)
|
|
306
|
+
# else:
|
|
307
|
+
# self.set_key(key)
|
|
308
|
+
# self._right_finger_tap_pos = finger_pos
|
|
309
|
+
# self._last_right_tap = tap
|
|
310
|
+
|
|
311
|
+
# # if event.x < 0.0625 and event.y < 0.1111:
|
|
312
|
+
# # self.set_key(K.L)
|
|
313
|
+
# # elif event.x > 1.0 - 0.0625 and event.y < 0.1111:
|
|
314
|
+
# # self.set_key(K.R)
|
|
315
|
+
# # elif event.x < 0.5:
|
|
316
|
+
# # # print(f"Left Finger Down: {finger_pos}")
|
|
317
|
+
# # self._left_finger_tap_pos = finger_pos
|
|
318
|
+
|
|
319
|
+
# # if tap - self._last_left_tap < DOUBLE_TAP_SPEED:
|
|
320
|
+
# # # print("Left Double Tap")
|
|
321
|
+
# # self.set_key(K.SELECT)
|
|
322
|
+
# # self._last_left_tap = tap
|
|
323
|
+
# # # self._left_finger_pos.x = event.x
|
|
324
|
+
# # # self._left_finger_pos.y = event.y
|
|
325
|
+
|
|
326
|
+
# # # if tap - self._last_left_tap < 0.2:
|
|
327
|
+
# # # print("Left Double Tap")
|
|
328
|
+
# # # # self._set_key(K.START)
|
|
329
|
+
# # # # self._unset_key(K.RIGHT)
|
|
330
|
+
# # # # self._unset_key(K.LEFT)
|
|
331
|
+
# # # # self._unset_key(K.UP)
|
|
332
|
+
# # # # self._unset_key(K.DOWN)
|
|
333
|
+
# # else:
|
|
334
|
+
# # self._right_finger_tap_pos = finger_pos
|
|
335
|
+
|
|
336
|
+
# # # if tap - self._last_right_tap < DOUBLE_TAP_SPEED:
|
|
337
|
+
# # # # print("Right Double Tap")
|
|
338
|
+
# # # self.set_key(K.SELECT)
|
|
339
|
+
# # self._last_right_tap = tap
|
|
340
|
+
# # if event.y < 0.3:
|
|
341
|
+
# # self.set_key(K.START)
|
|
342
|
+
# # elif event.x < 0.75:
|
|
343
|
+
# # self.set_key(K.B)
|
|
344
|
+
# # else:
|
|
345
|
+
# # self.set_key(K.A)
|
|
346
|
+
# # self._right_finger_pos.x = event.x
|
|
347
|
+
# # self._right_finger_pos.y = event.y
|
|
348
|
+
# # if tap - self._last_right_tap < 0.2:
|
|
349
|
+
# # print("Right Double Tap")
|
|
350
|
+
|
|
351
|
+
# if event.type == pygame.FINGERUP:
|
|
352
|
+
# # release = time.time()
|
|
353
|
+
# # finger_dist = (finger_pos - self._left_finger_tap_pos).length()
|
|
354
|
+
|
|
355
|
+
# if event.x < 0.5:
|
|
356
|
+
# # print(f"Left Finger Up: {finger_pos}")
|
|
357
|
+
# # if (
|
|
358
|
+
# # SINGLE_TAP_MIN
|
|
359
|
+
# # < release - self._last_left_tap
|
|
360
|
+
# # < SINGLE_TAP_MAX
|
|
361
|
+
# # ) and finger_dist < 2.5:
|
|
362
|
+
# # print("Left Single Tap")
|
|
363
|
+
# # # self.set_key(K.START)
|
|
364
|
+
|
|
365
|
+
# self.unset_key(K.P1_SELECT)
|
|
366
|
+
# self.unset_key(K.P1_RIGHT)
|
|
367
|
+
# self.unset_key(K.P1_LEFT)
|
|
368
|
+
# self.unset_key(K.P1_UP)
|
|
369
|
+
# self.unset_key(K.P1_DOWN)
|
|
370
|
+
# self.unset_key(K.P1_L)
|
|
371
|
+
# # print(
|
|
372
|
+
# # f"Left Finger moved {finger_dist} "
|
|
373
|
+
# # f"({release - self._last_left_tap} s)"
|
|
374
|
+
# # )
|
|
375
|
+
# else:
|
|
376
|
+
# self.unset_key(K.P1_START)
|
|
377
|
+
# self.unset_key(K.P1_A)
|
|
378
|
+
# self.unset_key(K.P1_B)
|
|
379
|
+
# self.unset_key(K.P1_Y)
|
|
380
|
+
# self.unset_key(K.P1_X)
|
|
381
|
+
# self.unset_key(K.P1_R)
|
|
382
|
+
# # print(f"Right Finger Up: {finger_pos}")
|
|
383
|
+
# # if (
|
|
384
|
+
# # SINGLE_TAP_MIN
|
|
385
|
+
# # < release - self._last_right_tap
|
|
386
|
+
# # < SINGLE_TAP_MAX
|
|
387
|
+
# # ) and finger_dist < 2.5:
|
|
388
|
+
# # print("Right Single Tap")
|
|
389
|
+
|
|
390
|
+
# # print(
|
|
391
|
+
# # f"Left Finger moved {finger_dist} "
|
|
392
|
+
# # f"({release - self._last_left_tap} s)"
|
|
393
|
+
# # )
|
|
394
|
+
# #
|
|
395
|
+
# # if event.x < 0.5:
|
|
396
|
+
# # if 0.1 < release - self._last_left_tap < 0.25:
|
|
397
|
+
# # print("Left Single Tap")
|
|
398
|
+
|
|
399
|
+
# # self._left_finger_pos.x = 0
|
|
400
|
+
# # self._left_finger_pos.y = 0
|
|
401
|
+
# # self._unset_key(K.DOWN)
|
|
402
|
+
# # self._unset_key(K.LEFT)
|
|
403
|
+
# # self._unset_key(K.UP)
|
|
404
|
+
# # self._unset_key(K.RIGHT)
|
|
405
|
+
# # self._unset_key(K.START)
|
|
406
|
+
# # else:
|
|
407
|
+
# # if 0.1 < release - self._last_right_tap < 0.25:
|
|
408
|
+
# # print("Right Single Tap")
|
|
409
|
+
|
|
410
|
+
# # self._unset_key(K.A)
|
|
411
|
+
# # self._unset_key(K.B)
|
|
412
|
+
# if event.type == pygame.FINGERMOTION:
|
|
413
|
+
# if event.x < 0.5:
|
|
414
|
+
# vd = finger_pos - self._left_finger_tap_pos
|
|
415
|
+
# self.unset_key(K.P1_RIGHT)
|
|
416
|
+
# self.unset_key(K.P1_LEFT)
|
|
417
|
+
# self.unset_key(K.P1_UP)
|
|
418
|
+
# self.unset_key(K.P1_DOWN)
|
|
419
|
+
# if abs(vd.x) > 2 * abs(vd.y):
|
|
420
|
+
# # Horizontal
|
|
421
|
+
# if vd.x > 5.0:
|
|
422
|
+
# self.set_key(K.P1_RIGHT)
|
|
423
|
+
# self.unset_key(K.P1_LEFT)
|
|
424
|
+
# self.unset_key(K.P1_UP)
|
|
425
|
+
# self.unset_key(K.P1_DOWN)
|
|
426
|
+
# elif vd.x < -5.0:
|
|
427
|
+
# self.set_key(K.P1_LEFT)
|
|
428
|
+
# self.unset_key(K.P1_RIGHT)
|
|
429
|
+
# self.unset_key(K.P1_UP)
|
|
430
|
+
# self.unset_key(K.P1_DOWN)
|
|
431
|
+
# elif abs(vd.x) * 2 < abs(vd.y):
|
|
432
|
+
# # Vertical
|
|
433
|
+
# if vd.y > 5.0:
|
|
434
|
+
# self.unset_key(K.P1_RIGHT)
|
|
435
|
+
# self.unset_key(K.P1_LEFT)
|
|
436
|
+
# self.unset_key(K.P1_UP)
|
|
437
|
+
# self.set_key(K.P1_DOWN)
|
|
438
|
+
# elif vd.y < -5.0:
|
|
439
|
+
# self.unset_key(K.P1_LEFT)
|
|
440
|
+
# self.unset_key(K.P1_RIGHT)
|
|
441
|
+
# self.set_key(K.P1_UP)
|
|
442
|
+
# self.unset_key(K.P1_DOWN)
|
|
443
|
+
# elif abs(vd.x) * 1.05 > abs(vd.y) or abs(vd.x) < 1.05 * abs(
|
|
444
|
+
# vd.y
|
|
445
|
+
# ):
|
|
446
|
+
# if vd.x < 0:
|
|
447
|
+
# self.set_key(K.P1_LEFT)
|
|
448
|
+
# elif vd.x > 0:
|
|
449
|
+
# self.set_key(K.P1_RIGHT)
|
|
450
|
+
# if vd.y < 0:
|
|
451
|
+
# self.set_key(K.P1_UP)
|
|
452
|
+
# elif vd.y > 0:
|
|
453
|
+
# self.set_key(K.P1_DOWN)
|
|
454
|
+
# # else:
|
|
455
|
+
# # vd = finger_pos - self._right_finger_tap_pos
|
|
456
|
+
# # self.unset_key(K.A)
|
|
457
|
+
# # self.unset_key(K.B)
|
|
458
|
+
# # self.unset_key(K.Y)
|
|
459
|
+
# # self.unset_key(K.X)
|
|
460
|
+
# # if abs(vd.x) > 2 * abs(vd.y):
|
|
461
|
+
# # # Horizontal
|
|
462
|
+
# # if vd.x > 5.0:
|
|
463
|
+
# # self.set_key(K.Y)
|
|
464
|
+
# # elif vd.x < -5.0:
|
|
465
|
+
# # self.set_key(K.B)
|
|
466
|
+
# # elif abs(vd.x) * 2 < abs(vd.y):
|
|
467
|
+
# # # Vertical
|
|
468
|
+
# # if vd.y > 5.0:
|
|
469
|
+
# # self.set_key(K.A)
|
|
470
|
+
# # elif vd.y < -5.0:
|
|
471
|
+
# # self.set_key(K.X)
|
|
472
|
+
|
|
473
|
+
# self.vd = vd
|
|
461
474
|
|
|
462
475
|
def _handle_mouse(self, event):
|
|
463
476
|
# if event.type == pygame.MOUSEBUTTONDOWN:
|
|
@@ -674,6 +687,9 @@ class PygameUserInput:
|
|
|
674
687
|
def trigger_all_events_collection(self, active: bool = True):
|
|
675
688
|
self._collect_all_events = active
|
|
676
689
|
|
|
690
|
+
def get_touch_state(self):
|
|
691
|
+
return self._touch_control.get_touch_state()
|
|
692
|
+
|
|
677
693
|
|
|
678
694
|
def _button_to_player(button: K, player: Player):
|
|
679
695
|
return K(button.value + 12 * player.value)
|