d
This commit is contained in:
@@ -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
|
||||
# #}
|
||||
# #}
|
||||
##}
|
||||
|
||||
@@ -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])
|
||||
#}
|
||||
|
||||
@@ -25,3 +25,4 @@ class desktop_Window(arcade.Window):
|
||||
|
||||
def on_update(self, delta):
|
||||
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.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)
|
||||
|
||||
@@ -5,6 +5,7 @@ class memory_Context:
|
||||
self.exit = False
|
||||
self.hiddenItems = []
|
||||
self.hideMatchingTiles = False
|
||||
self.hideMatchingTilesDelay = 0
|
||||
self.input = ""
|
||||
self.mismatchedItems = []
|
||||
self.outputGoOn = ""
|
||||
|
||||
Reference in New Issue
Block a user