减少try包括的语段
This commit is contained in:
parent
1c52ea88f4
commit
10711a5509
@ -62,36 +62,18 @@ class Control():
|
|||||||
self.state_dict = {}
|
self.state_dict = {}
|
||||||
self.state_name = None
|
self.state_name = None
|
||||||
self.state = None
|
self.state = None
|
||||||
# 这里需要考虑多种情况,如文件不存在、文件不可读、文件不符合JSON语法要求
|
|
||||||
# 因此仍然采用try-except实现而非if-else实现
|
|
||||||
try:
|
try:
|
||||||
# 存在存档即导入
|
# 存在存档即导入
|
||||||
# 自动修复读写权限
|
# 先自动修复读写权限(Python权限规则和Unix不一样,420表示unix的644,Windows自动忽略不支持项)
|
||||||
# Python权限规则和Unix不一样,420表示unix的644,Windows自动忽略不支持项
|
|
||||||
os.chmod(c.USERDATA_PATH, 420)
|
os.chmod(c.USERDATA_PATH, 420)
|
||||||
with open(c.USERDATA_PATH) as f:
|
with open(c.USERDATA_PATH) as f:
|
||||||
userdata = json.load(f)
|
userdata = json.load(f)
|
||||||
self.applyUserData(userdata) # 写入时也可能发生权限问题,因此放到try语句中
|
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
self.setupUserData()
|
self.setupUserData()
|
||||||
except json.JSONDecodeError:
|
except json.JSONDecodeError:
|
||||||
logger.warning("用户存档解码错误!程序将新建初始存档!\n")
|
logger.warning("用户存档解码错误!程序将新建初始存档!\n")
|
||||||
self.setupUserData()
|
self.setupUserData()
|
||||||
# 存档内不包含即时游戏时间信息,需要新建
|
else: # 没有引发异常才执行
|
||||||
self.game_info[c.CURRENT_TIME] = 0
|
|
||||||
|
|
||||||
# 50为目前的基础帧率,乘以倍率即是游戏帧率
|
|
||||||
self.fps = 50 * self.game_info[c.GAME_RATE]
|
|
||||||
|
|
||||||
def setupUserData(self):
|
|
||||||
if not os.path.exists(os.path.dirname(c.USERDATA_PATH)):
|
|
||||||
os.makedirs(os.path.dirname(c.USERDATA_PATH))
|
|
||||||
with open(c.USERDATA_PATH, "w") as f:
|
|
||||||
savedata = json.dumps(c.INIT_USERDATA, sort_keys=True, indent=4)
|
|
||||||
f.write(savedata)
|
|
||||||
self.game_info = c.INIT_USERDATA.copy() # 内部全是不可变对象,浅拷贝即可
|
|
||||||
|
|
||||||
def applyUserData(self, userdata):
|
|
||||||
self.game_info = {}
|
self.game_info = {}
|
||||||
# 导入数据,保证了可运行性,但是放弃了数据向后兼容性,即假如某些变量在以后改名,在导入时可能会被重置
|
# 导入数据,保证了可运行性,但是放弃了数据向后兼容性,即假如某些变量在以后改名,在导入时可能会被重置
|
||||||
need_to_rewrite = False
|
need_to_rewrite = False
|
||||||
@ -105,6 +87,19 @@ class Control():
|
|||||||
with open(c.USERDATA_PATH, "w") as f:
|
with open(c.USERDATA_PATH, "w") as f:
|
||||||
savedata = json.dumps(self.game_info, sort_keys=True, indent=4)
|
savedata = json.dumps(self.game_info, sort_keys=True, indent=4)
|
||||||
f.write(savedata)
|
f.write(savedata)
|
||||||
|
# 存档内不包含即时游戏时间信息,需要新建
|
||||||
|
self.game_info[c.CURRENT_TIME] = 0
|
||||||
|
|
||||||
|
# 50为目前的基础帧率,乘以倍率即是游戏帧率
|
||||||
|
self.fps = 50 * self.game_info[c.GAME_RATE]
|
||||||
|
|
||||||
|
def setupUserData(self):
|
||||||
|
if not os.path.exists(os.path.dirname(c.USERDATA_PATH)):
|
||||||
|
os.makedirs(os.path.dirname(c.USERDATA_PATH))
|
||||||
|
with open(c.USERDATA_PATH, "w") as f:
|
||||||
|
savedata = json.dumps(c.INIT_USERDATA, sort_keys=True, indent=4)
|
||||||
|
f.write(savedata)
|
||||||
|
self.game_info = c.INIT_USERDATA.copy() # 内部全是不可变对象,浅拷贝即可
|
||||||
|
|
||||||
def setup_states(self, state_dict, start_state):
|
def setup_states(self, state_dict, start_state):
|
||||||
self.state_dict = state_dict
|
self.state_dict = state_dict
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user