Files
main_plugin_farm/legacy/zhenxun_plugin_farm/utils/json.py
T
2026-10-15 14:14:58 +08:00

147 lines
4.5 KiB
Python

import json
from zhenxun.services.log import logger
from . import config, getRequestManager
class CJsonManager:
def __init__(self):
self._m_pItem = {}
self._m_pLevel = {}
self._m_pSoil = {}
self._m_pSign = {}
self._m_bItemLoaded = False
self._m_bLevelLoaded = False
self._m_bSoilLoaded = False
self._m_bSignLoaded = False
async def getItem(self) -> dict:
if not self._m_bItemLoaded:
success = await self.initItem()
if not success:
return {}
return self._m_pItem
async def getLevel(self) -> dict:
if not self._m_bLevelLoaded:
success = await self.initLevel()
if not success:
return {}
return self._m_pLevel
async def getSoil(self) -> dict:
if not self._m_bSoilLoaded:
success = await self.initSoil()
if not success:
return {}
return self._m_pSoil
async def getSign(self) -> dict:
if not self._m_bSignLoaded:
success = await self.initSign()
if not success:
return {}
return self._m_pSign
async def reloadItem(self) -> bool:
self._m_bItemLoaded = False
return await self.initItem()
async def reloadLevel(self) -> bool:
self._m_bLevelLoaded = False
return await self.initLevel()
async def reloadSoil(self) -> bool:
self._m_bSoilLoaded = False
return await self.initSoil()
async def reloadSign(self) -> bool:
self._m_bSignLoaded = False
return await self.initSign()
async def initItem(self) -> bool:
try:
with open(
config.g_sConfigPath / "item.json",
encoding="utf-8",
) as file:
self._m_pItem = json.load(file)
self._m_bItemLoaded = True
return True
except FileNotFoundError:
logger.warning("item.json 打开失败")
self._m_pItem = {}
return False
except json.JSONDecodeError as e:
logger.warning(f"item.json JSON格式错误: {e}")
self._m_pItem = {}
return False
async def initLevel(self) -> bool:
try:
with open(
config.g_sConfigPath / "level.json",
encoding="utf-8",
) as file:
self._m_pLevel = json.load(file)
self._m_bLevelLoaded = True
return True
except FileNotFoundError:
logger.warning("level.json 打开失败")
self._m_pLevel = {}
return False
except json.JSONDecodeError as e:
logger.warning(f"level.json JSON格式错误: {e}")
self._m_pLevel = {}
return False
async def initSoil(self) -> bool:
try:
with open(
config.g_sConfigPath / "soil.json",
encoding="utf-8",
) as file:
self._m_pSoil = json.load(file)
self._m_bSoilLoaded = True
return True
except FileNotFoundError:
logger.warning("soil.json 打开失败")
self._m_pSoil = {}
return False
except json.JSONDecodeError as e:
logger.warning(f"soil.json JSON格式错误: {e}")
self._m_pSoil = {}
return False
async def initSignInFile(self) -> bool:
if not await getRequestManager().initSignInFile():
config.g_bSignStatus = False
return False
else:
result = await self.initSign()
config.g_bSignStatus = result
return result
async def initSign(self) -> bool:
try:
with open(
config.g_sSignInPath,
encoding="utf-8",
) as file:
self._m_pSign = json.load(file)
self._m_bSignLoaded = True
return True
except FileNotFoundError:
logger.warning("sign_in.json 打开失败")
self._m_pSign = {}
return False
except json.JSONDecodeError as e:
logger.warning(f"sign_in.json JSON格式错误: {e}")
self._m_pSign = {}
return False
g_pJsonManager = CJsonManager()