支持自动保存音量设置到文件,以便下次直接应用
This commit is contained in:
parent
ffc57d12ff
commit
2b85451404
@ -30,6 +30,15 @@ class Level(tool.State):
|
||||
self.setupBackground()
|
||||
self.initState()
|
||||
|
||||
def saveUserData(self):
|
||||
with open(c.USERDATA_PATH, "w") as f:
|
||||
userdata = {}
|
||||
for i in self.game_info:
|
||||
if i in c.INIT_USERDATA:
|
||||
userdata[i] = self.game_info[i]
|
||||
dataToSave = json.dumps(userdata, sort_keys=True, indent=4)
|
||||
f.write(dataToSave)
|
||||
|
||||
def loadMap(self):
|
||||
if self.game_info[c.GAME_MODE] == c.MODE_LITTLEGAME:
|
||||
map_file = f'littleGame_{self.game_info[c.LITTLEGAME_NUM]}.json'
|
||||
@ -55,13 +64,7 @@ class Level(tool.State):
|
||||
self.game_info[c.LITTLEGAME_COMPLETIONS] += 1
|
||||
self.done = True
|
||||
self.next = c.MAIN_MENU
|
||||
with open(c.USERDATA_PATH, "w") as f:
|
||||
userdata = {}
|
||||
for i in self.game_info:
|
||||
if i in c.INIT_USERDATA:
|
||||
userdata[i] = self.game_info[i]
|
||||
savedata = json.dumps(userdata, sort_keys=True, indent=4)
|
||||
f.write(savedata)
|
||||
self.saveUserData()
|
||||
return
|
||||
# 是否有铲子的信息:无铲子时为0,有铲子时为1,故直接赋值即可
|
||||
self.hasShovel = self.map_data[c.SHOVEL]
|
||||
@ -590,6 +593,8 @@ class Level(tool.State):
|
||||
for i in c.SOUNDS:
|
||||
i.set_volume(self.game_info[c.VOLUME])
|
||||
c.SOUND_BUTTON_CLICK.play()
|
||||
# 将音量信息存档
|
||||
self.saveUserData()
|
||||
elif self.inArea(self.volume_minus_button_rect, *mouse_pos):
|
||||
self.game_info[c.VOLUME] = max(self.game_info[c.VOLUME] - 0.1, 0)
|
||||
# 一般不会有人想把音乐和音效分开设置,故pg.mixer.Sound.set_volume()和pg.mixer.music.set_volume()需要一起用
|
||||
@ -597,6 +602,8 @@ class Level(tool.State):
|
||||
for i in c.SOUNDS:
|
||||
i.set_volume(self.game_info[c.VOLUME])
|
||||
c.SOUND_BUTTON_CLICK.play()
|
||||
# 将音量信息存档
|
||||
self.saveUserData()
|
||||
|
||||
|
||||
# 一大波僵尸来袭图片显示
|
||||
@ -1427,13 +1434,7 @@ class Level(tool.State):
|
||||
self.game_info[c.LEVEL_NUM] += 1
|
||||
self.next = c.GAME_VICTORY
|
||||
self.done = True
|
||||
with open(c.USERDATA_PATH, "w") as f:
|
||||
userdata = {}
|
||||
for i in self.game_info:
|
||||
if i in c.INIT_USERDATA:
|
||||
userdata[i] = self.game_info[i]
|
||||
savedata = json.dumps(userdata, sort_keys=True, indent=4)
|
||||
f.write(savedata)
|
||||
self.saveUserData()
|
||||
elif self.checkLose():
|
||||
self.next = c.GAME_LOSE
|
||||
self.done = True
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
import pygame as pg
|
||||
import os
|
||||
import json
|
||||
from .. import tool
|
||||
from .. import constants as c
|
||||
|
||||
@ -22,6 +23,15 @@ class Menu(tool.State):
|
||||
pg.display.set_caption(c.ORIGINAL_CAPTION)
|
||||
pg.mixer.music.set_volume(self.game_info[c.VOLUME])
|
||||
|
||||
def saveUserData(self):
|
||||
with open(c.USERDATA_PATH, "w") as f:
|
||||
userdata = {}
|
||||
for i in self.game_info:
|
||||
if i in c.INIT_USERDATA:
|
||||
userdata[i] = self.game_info[i]
|
||||
dataToSave = json.dumps(userdata, sort_keys=True, indent=4)
|
||||
f.write(dataToSave)
|
||||
|
||||
def setupBackground(self):
|
||||
frame_rect = (80, 0, 800, 600)
|
||||
# 1、形参中加单星号,即f(*x)则表示x为元组,所有对x的操作都应将x视为元组类型进行。
|
||||
@ -270,6 +280,7 @@ class Menu(tool.State):
|
||||
for i in c.SOUNDS:
|
||||
i.set_volume(self.game_info[c.VOLUME])
|
||||
c.SOUND_BUTTON_CLICK.play()
|
||||
self.saveUserData()
|
||||
# 音量-
|
||||
elif self.inArea(self.volume_minus_button_rect, *mouse_pos):
|
||||
self.game_info[c.VOLUME] = max(self.game_info[c.VOLUME] - 0.1, 0)
|
||||
@ -278,6 +289,7 @@ class Menu(tool.State):
|
||||
for i in c.SOUNDS:
|
||||
i.set_volume(self.game_info[c.VOLUME])
|
||||
c.SOUND_BUTTON_CLICK.play()
|
||||
self.saveUserData()
|
||||
# 没有点到前两者时常规行检测所有按钮的点击和高亮
|
||||
else:
|
||||
# 先检查选项高亮预览
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user