mirror of
https://github.com/jjaldridge2009/Project_Xs.git
synced 2024-10-05 14:57:12 +02:00
Add ability to reidentify in a noisy pokemons room
This commit is contained in:
parent
71137cfcca
commit
e0c0ffd548
@ -131,6 +131,11 @@ class Application(tk.Frame):
|
|||||||
self.menu_check.grid(column=7,row=0)
|
self.menu_check.grid(column=7,row=0)
|
||||||
self.menu_check_var.set(1)
|
self.menu_check_var.set(1)
|
||||||
|
|
||||||
|
self.reident_noisy_check_var = tk.IntVar()
|
||||||
|
self.reident_noisy_check = ttk.Checkbutton(self, text="Reident 1 PK NPC", variable=self.reident_noisy_check_var)
|
||||||
|
self.reident_noisy_check.grid(column=5,row=6)
|
||||||
|
self.reident_noisy_check_var.set(0)
|
||||||
|
|
||||||
self.pos_x = tk.Spinbox(self, from_= 0, to = 99999, width = 5)
|
self.pos_x = tk.Spinbox(self, from_= 0, to = 99999, width = 5)
|
||||||
self.pos_x.grid(column=7,row=1)
|
self.pos_x.grid(column=7,row=1)
|
||||||
self.pos_y = tk.Spinbox(self, from_= 0, to = 99999, width = 5)
|
self.pos_y = tk.Spinbox(self, from_= 0, to = 99999, width = 5)
|
||||||
@ -482,10 +487,18 @@ class Application(tk.Frame):
|
|||||||
self.s01_23.insert(1.0,s01+"\n"+s23)
|
self.s01_23.insert(1.0,s01+"\n"+s23)
|
||||||
|
|
||||||
print([hex(x) for x in state])
|
print([hex(x) for x in state])
|
||||||
|
if self.reident_noisy_check_var.get():
|
||||||
|
self.pokemon_npc.delete(0,tk.END)
|
||||||
|
self.pokemon_npc.insert(0,1)
|
||||||
|
observed_blinks, observed_intervals, offset_time = rngtool.tracking_blink(self.player_eye, *self.config_json["view"], MonitorWindow=self.config_json["MonitorWindow"], WindowPrefix=self.config_json["WindowPrefix"], crop=self.config_json["crop"], camera=self.config_json["camera"], tk_window=self, th=self.config_json["thresh"], size=20)
|
||||||
|
self.rng, adv = rngtool.reidentifyByIntervalsNoisy(Xorshift(*state), observed_intervals)
|
||||||
|
self.timelining = True
|
||||||
|
self.count_down = 0
|
||||||
|
auto_timeline = True
|
||||||
|
else:
|
||||||
observed_blinks, observed_intervals, offset_time = rngtool.tracking_blink(self.player_eye, *self.config_json["view"], MonitorWindow=self.config_json["MonitorWindow"], WindowPrefix=self.config_json["WindowPrefix"], crop=self.config_json["crop"], camera=self.config_json["camera"], tk_window=self, th=self.config_json["thresh"], size=7)
|
observed_blinks, observed_intervals, offset_time = rngtool.tracking_blink(self.player_eye, *self.config_json["view"], MonitorWindow=self.config_json["MonitorWindow"], WindowPrefix=self.config_json["WindowPrefix"], crop=self.config_json["crop"], camera=self.config_json["camera"], tk_window=self, th=self.config_json["thresh"], size=7)
|
||||||
# self.rng, adv = rngtool.reidentifyByBlinks(Xorshift(*state), observed_blinks, return_advance=True, npc=self.config_json["npc"])
|
|
||||||
self.rng, adv = rngtool.reidentifyByIntervals(Xorshift(*state), observed_intervals, return_advance=True, npc=self.config_json["npc"])
|
self.rng, adv = rngtool.reidentifyByIntervals(Xorshift(*state), observed_intervals, return_advance=True, npc=self.config_json["npc"])
|
||||||
|
auto_timeline = True
|
||||||
|
|
||||||
self.reidentify_button['text'] = "Reidentify"
|
self.reidentify_button['text'] = "Reidentify"
|
||||||
self.reidentifying = False
|
self.reidentifying = False
|
||||||
@ -498,6 +511,7 @@ class Application(tk.Frame):
|
|||||||
|
|
||||||
self.advances = adv+diff*(self.config_json["npc"]+1)
|
self.advances = adv+diff*(self.config_json["npc"]+1)
|
||||||
self.tracking = True
|
self.tracking = True
|
||||||
|
if not auto_timeline:
|
||||||
self.count_down = None
|
self.count_down = None
|
||||||
while self.tracking:
|
while self.tracking:
|
||||||
if self.count_down is None:
|
if self.count_down is None:
|
||||||
|
@ -522,6 +522,41 @@ def reidentifyByIntervals(rng:Xorshift, rawintervals:List[int], npc = 0, search_
|
|||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def reidentifyByIntervalsNoisy(rng:Xorshift, rawintervals:List[int], search_max=10**5, search_min=0)->Xorshift:
|
||||||
|
intervals = rawintervals[1:]
|
||||||
|
blink_bools = [True]
|
||||||
|
for interval in intervals:
|
||||||
|
blink_bools.extend([False]*(interval-1))
|
||||||
|
blink_bools.append(True)
|
||||||
|
reident_time = len(blink_bools)
|
||||||
|
possible_length = int(reident_time*4//3)
|
||||||
|
|
||||||
|
possible_advances = []
|
||||||
|
go = Xorshift(*rng.getState())
|
||||||
|
go.getNextRandSequence(search_min)
|
||||||
|
blink_rands = [int((r&0b1110)==0) for r in go.getNextRandSequence(search_max)]
|
||||||
|
for advance in range(search_max-possible_length):
|
||||||
|
blinks = blink_rands[advance:advance+possible_length]
|
||||||
|
i = 0
|
||||||
|
j = 0
|
||||||
|
differences = []
|
||||||
|
try:
|
||||||
|
while i < reident_time:
|
||||||
|
diff = 0
|
||||||
|
while blink_bools[i] != blinks[j]:
|
||||||
|
diff += 1
|
||||||
|
j += 1
|
||||||
|
if diff != 0:
|
||||||
|
differences.append(diff)
|
||||||
|
j += 1
|
||||||
|
i += 1
|
||||||
|
except IndexError:
|
||||||
|
continue
|
||||||
|
pokemon_blink_count = sum(differences)
|
||||||
|
possible_advances.append((pokemon_blink_count,advance))
|
||||||
|
correct = min(possible_advances)
|
||||||
|
rng.advance(search_min+sum(correct)+reident_time)
|
||||||
|
return rng, search_min+sum(correct)+reident_time
|
||||||
|
|
||||||
def recovByMunchlax(rawintervals:List[float])->Xorshift:
|
def recovByMunchlax(rawintervals:List[float])->Xorshift:
|
||||||
"""Recover the xorshift from the interval of Munchlax blinks.
|
"""Recover the xorshift from the interval of Munchlax blinks.
|
||||||
|
Loading…
Reference in New Issue
Block a user