@@ -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 | # Postpone hiding of matching tiles for better UX | ||||
# | # | ||||
# Conditions: | # Conditions: | ||||
@@ -73,22 +89,6 @@ def desktop_scheduleHidingOfMatchingTiles(p): | |||||
if ( | if ( | ||||
p.c.recentField == "hiddenItems" | 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 | |||||
# #} | |||||
# #} | |||||
##} |
@@ -1,10 +1,35 @@ | |||||
import time | |||||
class desktop_SequentialTimer(): | class desktop_SequentialTimer(): | ||||
def __init__(self): | def __init__(self): | ||||
self.activeTimeout = None | |||||
self.ctrl = None | |||||
self.queue = [] | self.queue = [] | ||||
#} | |||||
def update(self): | 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): | def schedule(self, key, value, timeout): | ||||
pass | |||||
self.queue.append([timeout, key, value]) | |||||
#} |
@@ -25,3 +25,4 @@ class desktop_Window(arcade.Window): | |||||
def on_update(self, delta): | def on_update(self, delta): | ||||
self.p.sprites.update_animation() | self.p.sprites.update_animation() | ||||
self.p.sequentialTimer.update() |
@@ -84,12 +84,14 @@ ctrl.registerFieldCallback("exit", lambda c: sys.exit(0)) | |||||
p = desktop_Platform() | p = desktop_Platform() | ||||
p.ctrl = ctrl | p.ctrl = ctrl | ||||
p.sequentialTimer = desktop_SequentialTimer() | p.sequentialTimer = desktop_SequentialTimer() | ||||
p.sequentialTimer.ctrl = ctrl | |||||
# Copy context to platform. | # Copy context to platform. | ||||
# And process lots of functions that are interested in changes. | # And process lots of functions that are interested in changes. | ||||
def process(c): | def process(c): | ||||
p.c = c | p.c = c | ||||
desktop_displaySelectedTile(p) | desktop_displaySelectedTile(p) | ||||
desktop_hideMatchingTiles(p) | |||||
desktop_scheduleHidingOfMatchingTiles(p) | desktop_scheduleHidingOfMatchingTiles(p) | ||||
ctrl.registerCallback(process) | ctrl.registerCallback(process) | ||||
@@ -97,6 +99,7 @@ ctrl.set("didLaunch", True) | |||||
ctrl.set("playfieldSize", 2) | ctrl.set("playfieldSize", 2) | ||||
ctrl.set("cellSize", 25) | ctrl.set("cellSize", 25) | ||||
ctrl.set("hideMatchingTilesDelay", 500) | |||||
ctrl.set("tileImage", "res/tiles.png") | ctrl.set("tileImage", "res/tiles.png") | ||||
ctrl.set("tileImageCount", 3) | ctrl.set("tileImageCount", 3) | ||||
ctrl.set("tileImageHeight", 100) | ctrl.set("tileImageHeight", 100) | ||||
@@ -5,6 +5,7 @@ class memory_Context: | |||||
self.exit = False | self.exit = False | ||||
self.hiddenItems = [] | self.hiddenItems = [] | ||||
self.hideMatchingTiles = False | self.hideMatchingTiles = False | ||||
self.hideMatchingTilesDelay = 0 | |||||
self.input = "" | self.input = "" | ||||
self.mismatchedItems = [] | self.mismatchedItems = [] | ||||
self.outputGoOn = "" | self.outputGoOn = "" | ||||