This commit is contained in:
Михаил Капелько
2024-06-29 13:42:06 +03:00
parent 574cc65c59
commit 8b084f8737
5 changed files with 50 additions and 20 deletions

View File

@@ -65,6 +65,22 @@ def desktop_displaySelectedTile(p):
#}
#}
# Hide matching tiles
#
# Conditions:
# 1. Time to hide matching items
def desktop_hideMatchingTiles(p):
print(f"desktop_hideMT recentF: '{p.c.recentField}'")
if (
p.c.recentField == "hideMatchingTiles"
):
for id in p.c.hiddenItems:
p.deselectedTiles[id].visible = False
p.selectedTiles[id].visible = False
#}
#}
#}
# Postpone hiding of matching tiles for better UX
#
# Conditions:
@@ -73,22 +89,6 @@ def desktop_scheduleHidingOfMatchingTiles(p):
if (
p.c.recentField == "hiddenItems"
):
p.sequentialTimer.schedule("hideMatchingTiles", True, 500)
p.sequentialTimer.schedule("hideMatchingTiles", True, p.c.hideMatchingTilesDelay)
#}
#}
# Hide matching tiles
# TODO: Rearrange the position of the func
#
# Conditions:
# 1. ...
#def desktop_hideMatchingTiles(p):
# if (
# p.c.recentField == "hiddenItems"
# ):
# for id in p.c.hiddenItems:
# p.deselectedTiles[id].visible = False
# p.selectedTiles[id].visible = False
# #}
# #}
##}

View File

@@ -1,10 +1,35 @@
import time
class desktop_SequentialTimer():
def __init__(self):
self.activeTimeout = None
self.ctrl = None
self.queue = []
#}
def update(self):
pass
# Get current time in milliseconds.
now = time.time_ns() // 1000000
# Schedule an item.
if (
self.activeTimeout == None and
len(self.queue) > 0
):
self.activeTimeout = now + self.queue[0][0]
elif (
self.activeTimeout != None and
now >= self.activeTimeout
):
# Report when the time is up.
key = self.queue[0][1]
value = self.queue[0][2]
self.queue.pop(0)
self.activeTimeout = None
self.ctrl.set(key, value)
#}
#}
def schedule(self, key, value, timeout):
pass
self.queue.append([timeout, key, value])
#}

View File

@@ -25,3 +25,4 @@ class desktop_Window(arcade.Window):
def on_update(self, delta):
self.p.sprites.update_animation()
self.p.sequentialTimer.update()

View File

@@ -84,12 +84,14 @@ ctrl.registerFieldCallback("exit", lambda c: sys.exit(0))
p = desktop_Platform()
p.ctrl = ctrl
p.sequentialTimer = desktop_SequentialTimer()
p.sequentialTimer.ctrl = ctrl
# Copy context to platform.
# And process lots of functions that are interested in changes.
def process(c):
p.c = c
desktop_displaySelectedTile(p)
desktop_hideMatchingTiles(p)
desktop_scheduleHidingOfMatchingTiles(p)
ctrl.registerCallback(process)
@@ -97,6 +99,7 @@ ctrl.set("didLaunch", True)
ctrl.set("playfieldSize", 2)
ctrl.set("cellSize", 25)
ctrl.set("hideMatchingTilesDelay", 500)
ctrl.set("tileImage", "res/tiles.png")
ctrl.set("tileImageCount", 3)
ctrl.set("tileImageHeight", 100)

View File

@@ -5,6 +5,7 @@ class memory_Context:
self.exit = False
self.hiddenItems = []
self.hideMatchingTiles = False
self.hideMatchingTilesDelay = 0
self.input = ""
self.mismatchedItems = []
self.outputGoOn = ""