Skip to content

Commit

Permalink
feat: add: missions
Browse files Browse the repository at this point in the history
  • Loading branch information
infstellar committed May 7, 2023
1 parent dc8d808 commit b2a0d42
Show file tree
Hide file tree
Showing 20 changed files with 100 additions and 40 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,8 @@ config/mission_groups/*.json
!config/mission_groups/AutoCollectorMission.json
!config/mission_groups/SakuraBloomMissionGroup.json
!config/mission_groups/Default.json
!config/mission_groups/SweatFlowerMissionGroup.json
!config/mission_groups/VioletgrassMissionGroup.json

# test file
source/test/test242.py
Expand Down
1 change: 1 addition & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@
"TOZERO",
"Uiautomator",
"uninit",
"Violetgrass",
"vkcode",
"webio",
"withalpha",
Expand Down
2 changes: 1 addition & 1 deletion assets/TeyvatMovePath
2 changes: 1 addition & 1 deletion config/mission_groups/AutoCollectorMission.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"introduction": {
"en_US": "Fully automatic acquisition, set the acquisition name, type and other parameters in the automatic acquisition settings.",
"en_US": "Fully automatic collection, set the collection name, type and other parameters in the automatic collector settings.",
"zh_CN": "全自动采集,在自动采集设置中设置采集名称、类型等参数。"
},
"missions": [
Expand Down
9 changes: 9 additions & 0 deletions config/mission_groups/SweatFlowerMissionGroup.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"introduction": {
"en_US": " Automatic collect sweat flower.",
"zh_CN": "自动采集甜甜花。"
},
"missions": [
"MissionSweatFlower2"
]
}
9 changes: 9 additions & 0 deletions config/mission_groups/VioletgrassMissionGroup.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"introduction": {
"en_US": " Automatic collect violetgrass. 4 in total.",
"zh_CN": "自动采集琉璃袋。 共4个。"
},
"missions": [
"MissionVioletgrass1"
]
}
17 changes: 11 additions & 6 deletions source/dev_tool/video2path.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,24 @@
cc = CustomCapture()
itt.capture_obj = cc

fcap = cv2.VideoCapture(r'F:/videos/video1.mp4')
genshin_map.init_position(tuple([5040, 1384]))
genshin_map.small_map_init_flag = True
class VideoNotFoundError(Exception):pass

fcap = cv2.VideoCapture(r'M:/Downkyi/video2.mp4')
success, frame = fcap.read()
if not success:
raise VideoNotFoundError
cc.set_cap(frame)
pn = input("input your path name")

genshin_map.init_position(tuple(genshin_map.convert_cvAutoTrack_to_GIMAP([ 1170.8503, -3181.4194])))
genshin_map.small_map_init_flag = True

pn = "LLDV2P1"
prc = PathRecorderController()
prc.flow_connector.path_name = pn
prc.start()
logger.info(f"Load over.")
logger.info(f"ready to start.")

# press `\` to start
while success:
success, frame = fcap.read()
cc.set_cap(frame)
Expand All @@ -34,6 +39,6 @@
if ui_control.verify_page(UIPage.page_main):
pass
# print(genshin_map.get_position(), genshin_map.position_similarity)
cv2.waitKey(1)
cv2.waitKey(1/30)
# print()

6 changes: 2 additions & 4 deletions source/flow/collector_flow_upgrad.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,16 @@
from source.flow import flow_state as ST
from source.interaction.interaction_core import itt
from source.operator import pickup_operator
from source.flow import teyvat_move_flow_upgrad
from source.interaction.minimap_tracker import tracker
from source.controller import combat_controller
import numpy as np
from funclib.err_code_lib import ERR_PASS, ERR_STUCK, ERR_COLLECTOR_FLOW_TIMEOUT
from source.util import *
from source.flow.flow_template import FlowController, FlowTemplate, FlowConnector, EndFlowTemplate
import source.flow.flow_code as FC
from source.common import timer_module
from source.funclib import generic_lib, movement, combat_lib
from source.funclib import movement
from source.funclib import combat_lib
from source.funclib.err_code_lib import *
from source.manager import asset
from source.interaction.interaction_core import itt

COLLECTION = 0
Expand Down
8 changes: 3 additions & 5 deletions source/flow/path_recorder_flow.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,8 @@
from source.flow.flow_template import FlowController, FlowTemplate, FlowConnector, EndFlowTemplate
import source.flow.flow_code as FC, source.flow.flow_state as ST
from source.interaction.minimap_tracker import tracker
from source.controller import combat_controller
from source.common import timer_module
from source.funclib import generic_lib, movement, combat_lib
from source.funclib import movement
from source.funclib.err_code_lib import *
from source.manager import posi_manager as PosiM, asset
from source.interaction.interaction_core import itt
import pytz, datetime
from source.ui.ui import ui_control
Expand Down Expand Up @@ -136,7 +133,8 @@ def state_before(self):
"position_list":[],
}
self.enter_flag = False
tracker.reinit_smallmap()
# if not
# tracker.reinit_smallmap()
curr_posi = tracker.get_position()
self._add_break_position(curr_posi)
self._next_rfc()
Expand Down
27 changes: 14 additions & 13 deletions source/flow/teyvat_move_flow_upgrad.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@
from source.dev_tool.tianli_navigator import TianliNavigator


IN_MOVE = 0
IN_FLY = 1
IN_WATER = 2
IN_CLIMB = 3
IN_MOVE = movement.WALKING
IN_FLY = movement.FLYING
IN_WATER = movement.SWIMMING
IN_CLIMB = movement.CLIMBING

class TeyvatMoveFlowConnector(FlowConnector):
def __init__(self):
Expand Down Expand Up @@ -105,18 +105,19 @@ def __init__(self):
self.history_position_timer = timer_module.AdvanceTimer(limit=1).start()

def switch_motion_state(self, jump=True):
if itt.get_img_existence(asset.IconGeneralMotionClimbing):
self.motion_state = IN_CLIMB
elif itt.get_img_existence(asset.IconGeneralMotionFlying):
self.motion_state = IN_FLY
elif itt.get_img_existence(asset.IconGeneralMotionSwimming):
self.motion_state = IN_WATER
else:
self.motion_state = IN_MOVE
self.motion_state = movement.get_current_motion_state()
# if itt.get_img_existence(asset.IconGeneralMotionClimbing):
# self.motion_state = IN_CLIMB
# elif itt.get_img_existence(asset.IconGeneralMotionFlying):
# self.motion_state = IN_FLY
# elif itt.get_img_existence(asset.IconGeneralMotionSwimming):
# self.motion_state = IN_WATER
# else:
# self.motion_state = IN_MOVE
if self.motion_state == IN_CLIMB:
jump_dt = 20
elif self.motion_state == IN_MOVE:
jump_dt = 2
jump_dt = 1.6
else:
jump_dt = 99999
if jump:
Expand Down
5 changes: 3 additions & 2 deletions source/funclib/movement.py
Original file line number Diff line number Diff line change
Expand Up @@ -259,12 +259,13 @@ def preprocessing(img):
r2 = itt.similar_img(img1, IconMovementSwimming.image[:,:,0])
img1 = crop(cap.copy(), IconMovementFly.cap_posi)
r3 = itt.similar_img(img1, IconMovementFlying.image[:,:,0])
logger.trace(f"get_current_motion_state: climb{round(r1,2)} swim{round(r2,2)} fly{round(r3,2)}")
if max(r1,r2,r3)>0.8:
logger.trace(f"get_current_motion_state: climb{round(r1,2)} swim{round(r2,2)} fly{round(r3,2)}")
if r1 > 0.85:
return CLIMBING
if r2 > 0.85:
return SWIMMING
if r3 > 0.85:
if r3 > 0.8:
return FLYING
return WALKING
# if itt.get_img_existence(asset.IconGeneralMotionClimbing):
Expand Down
2 changes: 1 addition & 1 deletion source/map/map.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ def reinit_smallmap(self) -> None:
ui_control.ui_goto(UIPage.page_bigmap)
self.init_position(tuple(map(int, list(self.get_bigmap_posi().gimap))))
ui_control.ui_goto(UIPage.page_main)
self.small_map_init_flag=True
self.small_map_init_flag = True

def while_until_no_excessive_error(self) -> None:
self.reinit_smallmap()
Expand Down
8 changes: 7 additions & 1 deletion source/mission/mission_index.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
"""This file is generated automatically. Do not manually modify it."""
MISSION_INDEX = ['MissionAutoCollector', 'MissionCrystalfly', 'MissionSakuraBloom1', 'MissionSweatFlower1', 'MissionTest', 'MissionTest2']
MISSION_INDEX = ['MissionAutoCollector', 'MissionCrystalfly', 'MissionSakuraBloom1', 'MissionSweatFlower1', 'MissionSweatFlower2', 'MissionTest', 'MissionTest2', 'MissionVioletgrass1']
def get_mission_object(mission_name:str):
if mission_name == 'MissionAutoCollector':
import source.mission.missions.MissionAutoCollector
Expand All @@ -13,9 +13,15 @@ def get_mission_object(mission_name:str):
if mission_name == 'MissionSweatFlower1':
import source.mission.missions.MissionSweatFlower1
return source.mission.missions.MissionSweatFlower1.MissionSweatFlower1()
if mission_name == 'MissionSweatFlower2':
import source.mission.missions.MissionSweatFlower2
return source.mission.missions.MissionSweatFlower2.MissionSweatFlower2()
if mission_name == 'MissionTest':
import source.mission.missions.MissionTest
return source.mission.missions.MissionTest.MissionTest()
if mission_name == 'MissionTest2':
import source.mission.missions.MissionTest2
return source.mission.missions.MissionTest2.MissionTest2()
if mission_name == 'MissionVioletgrass1':
import source.mission.missions.MissionVioletgrass1
return source.mission.missions.MissionVioletgrass1.MissionVioletgrass1()
11 changes: 9 additions & 2 deletions source/mission/missions/MissionAutoCollector.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
from source.ui.ui import ui_control
import source.ui.page as UIPage
from source.mission.mission_template import MissionExecutor, ERR_FAIL,ERR_PASS
from source.funclib.err_code_lib import ERR_NONE

SUCC_RATE_WEIGHTING = 6
COLLECTION = 0
ENEMY = 1
Expand Down Expand Up @@ -152,12 +154,17 @@ def exec_mission(self):

r = self.collect(MODE="AUTO", collector_type=self.collector_type, is_combat = (self.collector_type==ENEMY), is_activate_pickup=True)
if r == ERR_FAIL:
self._add_logs("COLLECT FAIL")
err_info = self.CFCF.flow_connector.puo.get_last_err_code()
self._add_logs(f"COLLECT FAIL: {err_info}")
self._set_collected_id()
if not self._add_collection_i():
break
continue
self._add_logs("SUCCESS")
err_info = self.CFCF.flow_connector.puo.get_last_err_code()
if err_info != ERR_NONE:
self._add_logs("SUCCESS")
else:
self._add_logs(f"COLLECT FAIL: {err_info}")

if not self._add_collection_i():
break
Expand Down
2 changes: 1 addition & 1 deletion source/mission/missions/MissionSweatFlower1.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ def __init__(self):

def exec_mission(self):
self.start_pickup()
self.move_along("SweatFlower167910289922", is_tp=True, is_precise_arrival=True)
self.move_along("SweatFlower167910289922", is_tp=True, is_precise_arrival=False)
self.stop_pickup()
# self.collect(MODE="AUTO",pickup_points=[[71, -2205],[65,-2230]])

Expand Down
5 changes: 5 additions & 0 deletions source/mission/missions/MissionSweatFlower2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from source.mission.template.mission_just_collect import MissionJustCollect

class MissionSweatFlower2(MissionJustCollect):
def __init__(self):
super().__init__("SweatFlowerV2P120230507180640i0", "MissionSweatFlower2")
5 changes: 5 additions & 0 deletions source/mission/missions/MissionVioletgrass1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from source.mission.template.mission_just_collect import MissionJustCollect

class MissionVioletgrass1(MissionJustCollect):
def __init__(self):
super().__init__("LLDV2P120230507182352i0", "MissionVioletgrass1")
13 changes: 13 additions & 0 deletions source/mission/template/mission_just_collect.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from source.mission.mission_template import MissionExecutor

class MissionJustCollect(MissionExecutor):
def __init__(self, filename, name):
super().__init__(is_CFCF=True,is_PUO=True,is_TMCF=True)
self.filename = filename
self.setName(name)

def exec_mission(self):
self.start_pickup()# SweatFlower167910289922 SweatFlowerV2P120230507180640i0
self.move_along(self.filename, is_tp=True, is_precise_arrival=False)
self.stop_pickup()
# self.collect(MODE="AUTO",pickup_points=[[71, -2205],[65,-2230]])
4 changes: 2 additions & 2 deletions source/operator/pickup_operator.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ def __init__(self):
self.reset_time = 120
self.collector_loops = 0
self.collector_flag = True
self.max_number_of_collector_loops = 100
self.max_number_of_collector_loops = 35
self.pickup_timer = timer_module.Timer()
self.pickup_fail_timeout = timer_module.TimeoutTimer(65)
self.night_timer = timer_module.FileTimer("night_timer")
Expand Down Expand Up @@ -274,7 +274,7 @@ def finding_collector(self):
while self.collector_loops < self.max_number_of_collector_loops:
if self.checkup_stop_func():
return 0
self.itt.move_to(50, 0, relative=True)
self.itt.move_to(200, 0, relative=True)
ret_points = self.find_collector()
if len(ret_points) != 0: # type: ignore
self.reset_collector_loops()
Expand Down
2 changes: 1 addition & 1 deletion source/webio/pages.py
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ def on_click_startstop(self):
listening.TASK_MANAGER.start_stop_tasklist()
if pin.pin["MissionSelect"] != None and pin.pin["MissionSelect"] != "":
cj = load_json()
cj["mission_group"] = pin.pin["MissionSelect"]
cj["MissionGroup"] = pin.pin["MissionSelect"]
save_json(cj)
GIAconfig.update()

Expand Down

0 comments on commit b2a0d42

Please sign in to comment.