1038 lines
34 KiB
Lua
1038 lines
34 KiB
Lua
|
XDormConfig = XDormConfig or {}
|
|||
|
|
|||
|
-- 加载宿舍类型
|
|||
|
XDormConfig.DormDataType = {
|
|||
|
Self = 0,
|
|||
|
Target = 1,
|
|||
|
Template = 2, -- 模板宿舍
|
|||
|
Collect = 3, -- 收藏宿舍
|
|||
|
Provisional = 4, --导入宿舍
|
|||
|
CollectNone = 5,
|
|||
|
}
|
|||
|
|
|||
|
-- 构造体喜欢类型
|
|||
|
XDormConfig.CharacterLikeType = {
|
|||
|
LoveType = "LoveType",
|
|||
|
LikeType = "LikeType",
|
|||
|
}
|
|||
|
|
|||
|
-- 仓库Toggle
|
|||
|
XDormConfig.DORM_BAG_PANEL_INDEX = {
|
|||
|
FURNITURE = 1, -- 家具
|
|||
|
CHARACTER = 2, -- 构造体
|
|||
|
DRAFT = 3, -- 图纸
|
|||
|
}
|
|||
|
|
|||
|
-- 仓库住户Toggle
|
|||
|
XDormConfig.DORM_CHAR_INDEX = {
|
|||
|
CHARACTER = 1, -- 构造体
|
|||
|
EMNEY = 2, -- 侵蚀体
|
|||
|
-- HUMAN = 3, -- 人类
|
|||
|
INFESTOR = 3, -- 授格者
|
|||
|
NIER = 4, -- 联动
|
|||
|
}
|
|||
|
|
|||
|
-- 跳转类型
|
|||
|
XDormConfig.VisitDisplaySetType = {
|
|||
|
MySelf = 1,
|
|||
|
MyFriend = 2,
|
|||
|
Stranger = 3
|
|||
|
}
|
|||
|
|
|||
|
-- 访问类型
|
|||
|
XDormConfig.VisitTabTypeCfg = {
|
|||
|
MyFriend = 1,
|
|||
|
Visitor = 2
|
|||
|
}
|
|||
|
|
|||
|
-- 宿舍激活状态
|
|||
|
XDormConfig.DormActiveState = {
|
|||
|
Active = 0,
|
|||
|
UnActive = 1
|
|||
|
}
|
|||
|
|
|||
|
-- 宿舍构造体抚摸状态
|
|||
|
XDormConfig.TouchState = {
|
|||
|
Hide = 0, -- 关闭
|
|||
|
Touch = 1, -- 抚摸
|
|||
|
WaterGun = 2, -- 水枪
|
|||
|
Play = 3, -- 玩耍
|
|||
|
TouchSuccess = 4, -- 抚摸成功
|
|||
|
WaterGunSuccess = 5, -- 水枪成功
|
|||
|
PlaySuccess = 6, --玩耍成功
|
|||
|
Hate = 7, -- 讨厌
|
|||
|
TouchHate = 8, --讨厌抚摸
|
|||
|
}
|
|||
|
|
|||
|
-- 打工状态
|
|||
|
XDormConfig.WorkPosState = {
|
|||
|
Working = 1, --打工中
|
|||
|
Worked = 0, --打工完成
|
|||
|
Empty = -1, --空的
|
|||
|
RewardEd = 2, --奖励领取完
|
|||
|
Lock = 3,
|
|||
|
}
|
|||
|
|
|||
|
-- 客户端展示事件Id
|
|||
|
XDormConfig.ShowEventId = {
|
|||
|
VitalityAdd = 101, -- 体力增加
|
|||
|
VitalityCut = 102, -- 体力减少
|
|||
|
MoodAdd = 103, -- 心情增加
|
|||
|
MoodCut = 104, -- 心情减少
|
|||
|
VitalitySpeedAdd = 105, -- 体力速度增加
|
|||
|
VitalitySpeedCut = 106, -- 体力速度减少
|
|||
|
MoodSpeedAdd = 107, -- 心情速度增加
|
|||
|
MoodSpeedCut = 108, -- 心情速度减少
|
|||
|
}
|
|||
|
|
|||
|
-- 客户端展示事件Id
|
|||
|
XDormConfig.ShowEffectType = {
|
|||
|
Simple = 1, -- 单行模式
|
|||
|
Complex = 2, -- 多行模式
|
|||
|
}
|
|||
|
|
|||
|
-- 客户端展示事件Id
|
|||
|
XDormConfig.CompareType = {
|
|||
|
Less = 0, -- 小于等于
|
|||
|
Greater = 1, -- 大于等于
|
|||
|
Equal = 2, -- 等于
|
|||
|
}
|
|||
|
|
|||
|
-- 回复类型
|
|||
|
XDormConfig.RecoveryType = {
|
|||
|
PutFurniture = 1, -- 放置家具
|
|||
|
PutCharacter = 2, -- 放置构造体
|
|||
|
}
|
|||
|
|
|||
|
XDormConfig.DormSecondEnter = {
|
|||
|
Task = 1, -- 任务
|
|||
|
Des = 2, -- 描述
|
|||
|
WareHouse = 3, --仓库
|
|||
|
ReName = 4, --改名
|
|||
|
FieldGuilde = 5, --图鉴
|
|||
|
Build = 6, --建造
|
|||
|
Shop = 7, --商店
|
|||
|
Person = 8, --人员
|
|||
|
}
|
|||
|
|
|||
|
XDormConfig.DormAttDesIndex = {
|
|||
|
[1] = "DormScoreAttrADes",
|
|||
|
[2] = "DormScoreAttrBDes",
|
|||
|
[3] = "DormScoreAttrCDes",
|
|||
|
}
|
|||
|
|
|||
|
-- 宿舍人物类型
|
|||
|
XDormConfig.DormSex = {
|
|||
|
Man = 1, -- 男构造体
|
|||
|
Woman = 2, -- 女构造体
|
|||
|
Infect = 3, -- 侵蚀体
|
|||
|
Human = 4, -- 人类男
|
|||
|
Huwoman = 5, -- 人类女
|
|||
|
InfestorMale = 6, -- 授格体男
|
|||
|
InfestorFemale = 7, -- 授格体女
|
|||
|
NIER = 8, -- 授格体女
|
|||
|
}
|
|||
|
|
|||
|
-- 宿舍角色性别
|
|||
|
XDormConfig.DormCharGender = {
|
|||
|
None = 0,
|
|||
|
Male = 1,
|
|||
|
Female = 2,
|
|||
|
Gan = 3,
|
|||
|
Max = 4,
|
|||
|
}
|
|||
|
|
|||
|
-- 宿舍空间站枚举
|
|||
|
XDormConfig.SenceType = {
|
|||
|
One = 1,
|
|||
|
Two = 2,
|
|||
|
Three = 3,
|
|||
|
}
|
|||
|
|
|||
|
XDormConfig.DORM_VITALITY_MAX_VALUE = math.floor(CS.XGame.Config:GetInt("DormVitalityMaxValue") / 100)
|
|||
|
XDormConfig.DORM_MOOD_MAX_VALUE = math.floor(CS.XGame.Config:GetInt("DormMoodMaxValue") / 100)
|
|||
|
XDormConfig.DORM_DRAFT_SHOP_ID = CS.XGame.ClientConfig:GetInt("DormDraftShopId")
|
|||
|
|
|||
|
XDormConfig.TOUCH_LENGTH = CS.XGame.ClientConfig:GetInt("DormCharacterTouchLength")
|
|||
|
XDormConfig.WATERGUN_TIME = CS.XGame.ClientConfig:GetInt("DormCharacterWaterGunTime")
|
|||
|
XDormConfig.PLAY_TIME = CS.XGame.ClientConfig:GetInt("DormCharacterPlayTime")
|
|||
|
XDormConfig.DISPPEAR_TIME = CS.XGame.ClientConfig:GetInt("DormDetailDisppearTime")
|
|||
|
XDormConfig.DRAFT_DIS = CS.XGame.ClientConfig:GetInt("DormDraftDistance")
|
|||
|
XDormConfig.TOUCH_CD = CS.XGame.ClientConfig:GetFloat("DormCharacterTouchCD")
|
|||
|
XDormConfig.TOUCH_PROP = CS.XGame.ClientConfig:GetFloat("DormCharacterTouchProportion")
|
|||
|
XDormConfig.GET_SHARE_ID_INTERVAL = CS.XGame.ClientConfig:GetInt("DormShareWaitTime")
|
|||
|
XDormConfig.MAX_SHARE_COUNT = CS.XGame.ClientConfig:GetInt("DormMaxShareCount")
|
|||
|
XDormConfig.MAX_RECYCLE_COUNT = CS.XGame.Config:GetInt("DormMaxRecycleCount")
|
|||
|
XDormConfig.DormComfortTime = CS.XGame.ClientConfig:GetInt("DormComfortTime") or 1
|
|||
|
XDormConfig.CaptureAngleX = CS.XGame.ClientConfig:GetFloat("DormTemplateCaptureAngleX")
|
|||
|
XDormConfig.CaptureAngleY = CS.XGame.ClientConfig:GetFloat("DormTemplateCaptureAngleY")
|
|||
|
XDormConfig.CaptureDistance = CS.XGame.ClientConfig:GetFloat("DormTemplateCaptureDistance")
|
|||
|
XDormConfig.ProvisionalMaXCount = CS.XGame.ClientConfig:GetInt("DormProvisionalMaxCount")
|
|||
|
XDormConfig.ShareName = CS.XGame.ClientConfig:GetString("DormTemplateShareName")
|
|||
|
|
|||
|
local TABLE_DORM_CHARACTER_EVENT_PATH = "Share/Dormitory/Character/DormCharacterEvent.tab"
|
|||
|
local TABLE_DORM_CHARACTER_BEHAVIOR_PATH = "Share/Dormitory/Character/DormCharacterBehavior.tab"
|
|||
|
local TABLE_DORMITORY_PATH = "Share/Dormitory/Dormitory.tab"
|
|||
|
local TABLE_DORMCHARACTERWORK_PATH = "Share/Dormitory/Character/DormCharacterWork.tab"
|
|||
|
local TABLE_DORM_CHARACTER_RECOVERY_PATH = "Share/Dormitory/Character/DormCharacterRecovery.tab"
|
|||
|
local TABLE_DORM_CHARACTER_FONDLE_PATH = "Share/Dormitory/Character/DormCharacterFondle.tab"
|
|||
|
local TABLE_CHARACTER_STYLE_PATH = "Share/Dormitory/Character/DormCharacterStyle.tab"
|
|||
|
local TABLE_CHARACTER_REWARD_PATH = "Share/Dormitory/Character/DormCharacterReward.tab"
|
|||
|
local TABLE_DORM_BGM_PATH = "Share/Dormitory/DormBgm.tab"
|
|||
|
local TABLE_DORM_TEMPLATE_PATH = "Share/Dormitory/DormTemplate.tab"
|
|||
|
|
|||
|
local TABLE_CHARACTER_MOOD_PATH = "Client/Dormitory/DormCharacterMood.tab"
|
|||
|
local TABLE_MOOD_EFFECT_PATH = "Client/Dormitory/DormCharacterEffect.tab"
|
|||
|
local TABLE_CHARACTER_DIALOG_PATH = "Client/Dormitory/DormCharacterDialog.tab"
|
|||
|
local TABLE_CHARACTER_ACTION_PATH = "Client/Dormitory/DormCharacterAction.tab"
|
|||
|
local TABLE_CHARACTER_INTERACTIVE_PATH = "Client/Dormitory/DormInteractiveEvent.tab"
|
|||
|
local TABLE_SHOW_EVENT_PATH = "Client/Dormitory/DormShowEvent.tab"
|
|||
|
local TABLE_DORM_GUIDE_TASK_PATH = "Client/Dormitory/DormGuideTask.tab"
|
|||
|
local TABLE_DORM_TEMPLATE_COLLECT_PATH = "Client/Dormitory/DormTemplateCollect.tab"
|
|||
|
local TABLE_DORM_TEMPLATE_GROUP_PATH = "Client/Dormitory/DormTemplateGroup.tab"
|
|||
|
local TABLE_DORM_F2C_RELATION_PATH = "Client/Dormitory/DormF2CBehaviorRelation.tab"
|
|||
|
|
|||
|
local CharacterEventTemplate = {}
|
|||
|
local CharacterBehaviorTemplate = {}
|
|||
|
local DormitoryTemplate = {} --宿舍配置表
|
|||
|
local CharacterBehaviorStateIndex = {}
|
|||
|
local DormCharacterWork = {} --宿舍打工工位配置表
|
|||
|
local DormCharacterRecovery = {} --构造体回复配置表 table = {characterId = {config1, config2, ...}}
|
|||
|
local CharacterStyleTemplate = {} --客户端构造体风格配置表
|
|||
|
local CharacterMoodTemplate = {} --客户端构造体心情配置表
|
|||
|
local MoodEffectTemplate = {} --构造体表情特效配置表
|
|||
|
local CharacterFondleTemplate = {} -- 爱抚配置表
|
|||
|
local ChaarcterShowEventTemplate = {} -- 事件客户端表现配置表
|
|||
|
local DormTaskGuideCfg = {} -- 宿舍指引任务
|
|||
|
local DormCharacterRewardCfg = {}
|
|||
|
local DormTemplateCfg = {} -- 宿舍模板配置表
|
|||
|
local DormTemplateCollectCfg = {} -- 宿舍收藏模板配置表
|
|||
|
local DormTemplateGroupCfg = {} -- 宿舍模板组配置表
|
|||
|
local DormCharTypeCountDic = {} -- 可获得各类角色总数字典
|
|||
|
|
|||
|
local CharacterActionTemplate = {} --动作
|
|||
|
local CharacterInteractiveTemplate = {} --动作
|
|||
|
|
|||
|
local CharacterDialogTemplate = {} -- 构造体对话表
|
|||
|
local CharacterDialogStateIndex = {}
|
|||
|
local CharacterActionIndex = {}
|
|||
|
local CharacterInteractiveIndex = {}
|
|||
|
local DormTaskGuideDic = nil
|
|||
|
|
|||
|
local DormBgmTemplate = {}
|
|||
|
local DormTemplateData = nil -- 宿舍模板数据
|
|||
|
|
|||
|
local DormF2CRelationConfig = {}
|
|||
|
local DormF2CRelationDic = {}
|
|||
|
-- 初始化构造体恢复表,并排序
|
|||
|
local function InitDormCharacterRecovery()
|
|||
|
local recoverys = XTableManager.ReadByIntKey(TABLE_DORM_CHARACTER_RECOVERY_PATH, XTable.XTableDormCharacterRecovery, "Id")
|
|||
|
for _, recovery in pairs(recoverys) do
|
|||
|
if not DormCharacterRecovery[recovery.CharacterId] then
|
|||
|
DormCharacterRecovery[recovery.CharacterId] = {}
|
|||
|
end
|
|||
|
|
|||
|
table.insert(DormCharacterRecovery[recovery.CharacterId], recovery)
|
|||
|
end
|
|||
|
|
|||
|
for _, recovery in pairs(DormCharacterRecovery) do
|
|||
|
table.sort(recovery, function(a, b)
|
|||
|
return a.Pre < b.Pre
|
|||
|
end)
|
|||
|
end
|
|||
|
end
|
|||
|
--=================
|
|||
|
--构建家具-人物行为关系字典
|
|||
|
--=================
|
|||
|
local function CreateDormF2CRelationDic()
|
|||
|
for _, config in pairs(DormF2CRelationConfig) do
|
|||
|
if not DormF2CRelationDic[config.FurnitureId] then
|
|||
|
DormF2CRelationDic[config.FurnitureId] = {}
|
|||
|
end
|
|||
|
if not DormF2CRelationDic[config.FurnitureId][config.CharacterId] then
|
|||
|
DormF2CRelationDic[config.FurnitureId][config.CharacterId] = {}
|
|||
|
end
|
|||
|
if config.PositionId then
|
|||
|
DormF2CRelationDic[config.FurnitureId][config.CharacterId][config.PositionId] = config
|
|||
|
else
|
|||
|
DormF2CRelationDic[config.FurnitureId][config.CharacterId][1] = config
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XDormConfig.Init()
|
|||
|
CharacterEventTemplate = XTableManager.ReadByIntKey(TABLE_DORM_CHARACTER_EVENT_PATH, XTable.XTableDormCharacterEvent, "EventId")
|
|||
|
CharacterBehaviorTemplate = XTableManager.ReadByIntKey(TABLE_DORM_CHARACTER_BEHAVIOR_PATH, XTable.XTableDormCharacterBehavior, "Id")
|
|||
|
DormitoryTemplate = XTableManager.ReadByIntKey(TABLE_DORMITORY_PATH, XTable.XTableDormitory, "Id")
|
|||
|
DormCharacterWork = XTableManager.ReadByIntKey(TABLE_DORMCHARACTERWORK_PATH, XTable.XTableDormCharacterWork, "DormitoryNum")
|
|||
|
CharacterStyleTemplate = XTableManager.ReadByIntKey(TABLE_CHARACTER_STYLE_PATH, XTable.XTableDormCharacterStyle, "Id")
|
|||
|
CharacterMoodTemplate = XTableManager.ReadByIntKey(TABLE_CHARACTER_MOOD_PATH, XTable.XTableDormCharacterMood, "Id")
|
|||
|
MoodEffectTemplate = XTableManager.ReadByIntKey(TABLE_MOOD_EFFECT_PATH, XTable.XTableDormCharacterEffect, "Id")
|
|||
|
CharacterDialogTemplate = XTableManager.ReadByIntKey(TABLE_CHARACTER_DIALOG_PATH, XTable.XTableDormCharacterDialog, "Id")
|
|||
|
CharacterActionTemplate = XTableManager.ReadByIntKey(TABLE_CHARACTER_ACTION_PATH, XTable.XTableDormCharacterAction, "Id")
|
|||
|
CharacterFondleTemplate = XTableManager.ReadByIntKey(TABLE_DORM_CHARACTER_FONDLE_PATH, XTable.XTableDormCharacterFondle, "CharacterId")
|
|||
|
--CharacterActionTemplate = XTableManager.ReadByIntKey(TABLE_CHARACTER_ACTION_PATH, XTable.XTableDormCharacterAction, "Id")
|
|||
|
CharacterInteractiveTemplate = XTableManager.ReadByIntKey(TABLE_CHARACTER_INTERACTIVE_PATH, XTable.XTableDormInteractiveEvent, "Id")
|
|||
|
ChaarcterShowEventTemplate = XTableManager.ReadByIntKey(TABLE_SHOW_EVENT_PATH, XTable.XTableDormShowEvent, "Id")
|
|||
|
DormBgmTemplate = XTableManager.ReadByIntKey(TABLE_DORM_BGM_PATH, XTable.XTableDormBgm, "Id")
|
|||
|
DormTemplateCollectCfg = XTableManager.ReadByIntKey(TABLE_DORM_TEMPLATE_COLLECT_PATH, XTable.XTableDormTemplateCollect, "Id")
|
|||
|
DormTemplateGroupCfg = XTableManager.ReadByIntKey(TABLE_DORM_TEMPLATE_GROUP_PATH, XTable.XTableDormTemplateGroup, "Id")
|
|||
|
DormTemplateCfg = XTableManager.ReadByIntKey(TABLE_DORM_TEMPLATE_PATH, XTable.XTableDormTemplate, "Id")
|
|||
|
DormTaskGuideCfg = XTableManager.ReadByIntKey(TABLE_DORM_GUIDE_TASK_PATH, XTable.XTableDormGuideTask, "Id")
|
|||
|
DormCharacterRewardCfg = XTableManager.ReadByIntKey(TABLE_CHARACTER_REWARD_PATH, XTable.XTableDormCharacterReward, "Id")
|
|||
|
DormF2CRelationConfig = XTableManager.ReadByIntKey(TABLE_DORM_F2C_RELATION_PATH, XTable.XTableDormF2CBehaviorRelation, "Id")
|
|||
|
InitDormCharacterRecovery()
|
|||
|
|
|||
|
CharacterBehaviorStateIndex = {}
|
|||
|
|
|||
|
for _, v in pairs(CharacterBehaviorTemplate) do
|
|||
|
CharacterBehaviorStateIndex[v.CharacterId] = CharacterBehaviorStateIndex[v.CharacterId] or {}
|
|||
|
CharacterBehaviorStateIndex[v.CharacterId][v.State] = v
|
|||
|
end
|
|||
|
|
|||
|
for _, v in pairs(CharacterDialogTemplate) do
|
|||
|
CharacterDialogStateIndex[v.CharacterId] = CharacterDialogStateIndex[v.CharacterId] or {}
|
|||
|
CharacterDialogStateIndex[v.CharacterId][v.State] = CharacterDialogStateIndex[v.CharacterId][v.State] or {}
|
|||
|
table.insert(CharacterDialogStateIndex[v.CharacterId][v.State], v)
|
|||
|
end
|
|||
|
|
|||
|
for _, v in pairs(CharacterActionTemplate) do
|
|||
|
CharacterActionIndex[v.CharacterId] = CharacterActionIndex[v.CharacterId] or {}
|
|||
|
CharacterActionIndex[v.CharacterId][v.Name] = v.State
|
|||
|
end
|
|||
|
|
|||
|
for _, v in pairs(CharacterInteractiveTemplate) do
|
|||
|
local cha1 = v.CharacterIds[1]
|
|||
|
local cha2 = v.CharacterIds[2]
|
|||
|
CharacterInteractiveIndex[cha1] = CharacterInteractiveIndex[cha1] or {}
|
|||
|
CharacterInteractiveIndex[cha1][cha2] = v
|
|||
|
end
|
|||
|
|
|||
|
for _, v in pairs(CharacterStyleTemplate) do
|
|||
|
local count = DormCharTypeCountDic[v.Type] or 0
|
|||
|
count = count + 1
|
|||
|
DormCharTypeCountDic[v.Type] = count
|
|||
|
end
|
|||
|
|
|||
|
XDormConfig.DormAnimationMoveTime = CS.XGame.ClientConfig:GetInt("DormMainAnimationMoveTime") or 0
|
|||
|
XDormConfig.DormAnimationStaicTime = CS.XGame.ClientConfig:GetInt("DormMainAnimationStaicTime") or 0
|
|||
|
XDormConfig.DormSecondAnimationDelayTime = CS.XGame.ClientConfig:GetInt("DormSecondAnimationDelayTime") or 0
|
|||
|
|
|||
|
local collectMaxCount = CS.XGame.Config:GetInt("DormLayoutMaxCount") or 0
|
|||
|
local cfgCount = 0
|
|||
|
for _, _ in pairs(DormTemplateCollectCfg) do
|
|||
|
cfgCount = cfgCount + 1
|
|||
|
end
|
|||
|
|
|||
|
if collectMaxCount ~= cfgCount then
|
|||
|
XLog.Error("XDormConfig.Init错误,错误原因: DormTemplateCollectCfg表(路径:" .. TABLE_DORM_TEMPLATE_COLLECT_PATH .. ")的表项个数与Share/Config/Config.tab表中DormLayoutMaxCount这一项的最大数量不同")
|
|||
|
end
|
|||
|
--构建家具-人物行为关系字典
|
|||
|
CreateDormF2CRelationDic()
|
|||
|
end
|
|||
|
|
|||
|
-- 获取构造体奖励名字
|
|||
|
function XDormConfig.GetDormCharacterRewardNameById(id)
|
|||
|
local data = XDormConfig.GetDormCharacterRewardData(id)
|
|||
|
if not data or not data.Name then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetDormCharacterRewardNameById", "Name", TABLE_CHARACTER_REWARD_PATH, "id", tostring(id))
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
return data.Name
|
|||
|
end
|
|||
|
|
|||
|
-- 获取构造体奖励品质
|
|||
|
function XDormConfig.GetDormCharacterRewardQualityById(id)
|
|||
|
local data = XDormConfig.GetDormCharacterRewardData(id)
|
|||
|
if not data or not data.Quality then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetDormCharacterRewardQualityById", "Quality", TABLE_CHARACTER_REWARD_PATH, "id", tostring(id))
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
return data.Quality
|
|||
|
end
|
|||
|
|
|||
|
-- 获取构造体奖励Icon
|
|||
|
function XDormConfig.GetDormCharacterRewardIconById(id)
|
|||
|
local data = XDormConfig.GetDormCharacterRewardData(id)
|
|||
|
if not data or not data.Icon then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetDormCharacterRewardIconById", "Icon", TABLE_CHARACTER_REWARD_PATH, "id", tostring(id))
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
return data.Icon
|
|||
|
end
|
|||
|
|
|||
|
-- 获取构造体奖励SmallIcon
|
|||
|
function XDormConfig.GetDormCharacterRewardSmallIconById(id)
|
|||
|
local data = XDormConfig.GetDormCharacterRewardData(id)
|
|||
|
if not data or not data.SmallIcon then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetDormCharacterRewardSmallIconById", "SmallIcon", TABLE_CHARACTER_REWARD_PATH, "id", tostring(id))
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
return data.SmallIcon
|
|||
|
end
|
|||
|
|
|||
|
-- 获取构造体奖励CharacterId
|
|||
|
function XDormConfig.GetDormCharacterRewardCharIdById(id)
|
|||
|
local data = XDormConfig.GetDormCharacterRewardData(id)
|
|||
|
if not data or not data.CharacterId then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetDormCharacterRewardCharIdById", "CharacterId", TABLE_CHARACTER_REWARD_PATH, "id", tostring(id))
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
return data.CharacterId
|
|||
|
end
|
|||
|
|
|||
|
-- 获取构造体奖励Description
|
|||
|
function XDormConfig.GetDormDescriptionRewardCharIdById(id)
|
|||
|
local data = XDormConfig.GetDormCharacterRewardData(id)
|
|||
|
if not data or not data.Description then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetDormDescriptionRewardCharIdById", "Description", TABLE_CHARACTER_REWARD_PATH, "id", tostring(id))
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
return data.Description
|
|||
|
end
|
|||
|
|
|||
|
-- 获取构造体奖励WorldDescription
|
|||
|
function XDormConfig.GetDormWorldDescriptionRewardCharIdById(id)
|
|||
|
local data = XDormConfig.GetDormCharacterRewardData(id)
|
|||
|
if not data or not data.WorldDescription then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetDormWorldDescriptionRewardCharIdById",
|
|||
|
"WorldDescription", TABLE_CHARACTER_REWARD_PATH, "id", tostring(id))
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
return data.WorldDescription
|
|||
|
end
|
|||
|
|
|||
|
-- 获取模板宿舍Ishow
|
|||
|
function XDormConfig.GetDormTemplateIsSwhoById(id)
|
|||
|
local data = XDormConfig.GetDormTemplateCfg(id)
|
|||
|
return data.IsShow
|
|||
|
end
|
|||
|
|
|||
|
function XDormConfig.GetDormTemplateCollectList()
|
|||
|
local list = {}
|
|||
|
for _, info in pairs(DormTemplateCollectCfg) do
|
|||
|
table.insert(list, info)
|
|||
|
end
|
|||
|
|
|||
|
table.sort(list, function(a, b)
|
|||
|
return a.Order < b.Order
|
|||
|
end)
|
|||
|
|
|||
|
return list
|
|||
|
end
|
|||
|
|
|||
|
function XDormConfig.GetDormTemplateGroupList()
|
|||
|
local list = {}
|
|||
|
for _, info in pairs(DormTemplateGroupCfg) do
|
|||
|
table.insert(list, info)
|
|||
|
end
|
|||
|
return list
|
|||
|
end
|
|||
|
|
|||
|
function XDormConfig.GetDormTemplateSelecIndex(connectId)
|
|||
|
local index = 0
|
|||
|
local default = 1
|
|||
|
for _, info in pairs(DormTemplateGroupCfg) do
|
|||
|
index = index + 1
|
|||
|
for _, id in ipairs(info.DormId) do
|
|||
|
if connectId == id then
|
|||
|
return index
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
return default
|
|||
|
end
|
|||
|
|
|||
|
function XDormConfig.GetDormTemplateCfg(id)
|
|||
|
local data = DormTemplateCfg[id]
|
|||
|
if not data then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetDormTemplateCfg", "data", TABLE_DORM_TEMPLATE_PATH, "id", tostring(id))
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
return data
|
|||
|
end
|
|||
|
|
|||
|
function XDormConfig.GetDormCharacterRewardData(id)
|
|||
|
local data = DormCharacterRewardCfg[id]
|
|||
|
return data
|
|||
|
end
|
|||
|
|
|||
|
-- 宿舍指引任务Dic
|
|||
|
function XDormConfig.GetDormitoryGuideTaskCfg()
|
|||
|
if DormTaskGuideDic then
|
|||
|
return DormTaskGuideDic
|
|||
|
end
|
|||
|
|
|||
|
DormTaskGuideDic = {}
|
|||
|
for _, v in pairs(DormTaskGuideCfg) do
|
|||
|
DormTaskGuideDic[v.TaskId] = v.TaskId
|
|||
|
end
|
|||
|
return DormTaskGuideDic
|
|||
|
end
|
|||
|
|
|||
|
-- 获取所有宿舍
|
|||
|
function XDormConfig.GetTotalDormitoryCfg()
|
|||
|
local t = DormitoryTemplate
|
|||
|
return t
|
|||
|
end
|
|||
|
|
|||
|
function XDormConfig.DormCharSexTypeToGender(sexType)
|
|||
|
if sexType == XDormConfig.DormSex.Man or sexType == XDormConfig.DormSex.Human or sexType == XDormConfig.DormSex.InfestorMale then
|
|||
|
return XDormConfig.DormCharGender.Male
|
|||
|
elseif sexType == XDormConfig.DormSex.Woman or sexType == XDormConfig.DormSex.Huwoman or sexType == XDormConfig.DormSex.InfestorFemale then
|
|||
|
return XDormConfig.DormCharGender.Female
|
|||
|
elseif sexType == XDormConfig.DormSex.Infect then
|
|||
|
return XDormConfig.DormCharGender.Gan
|
|||
|
elseif sexType == XDormConfig.DormSex.NIER then
|
|||
|
return XDormConfig.DormCharGender.None
|
|||
|
else
|
|||
|
return XDormConfig.DormCharGender.None
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XDormConfig.GetDormCharacterType(dormCharIndex)
|
|||
|
if dormCharIndex == XDormConfig.DORM_CHAR_INDEX.CHARACTER then
|
|||
|
return XDormConfig.DormSex.Man, XDormConfig.DormSex.Woman
|
|||
|
elseif dormCharIndex == XDormConfig.DORM_CHAR_INDEX.EMNEY then
|
|||
|
return XDormConfig.DormSex.Infect
|
|||
|
-- elseif dormCharIndex == XDormConfig.DORM_CHAR_INDEX.HUMAN then
|
|||
|
-- return XDormConfig.DormSex.Human, XDormConfig.DormSex.Huwoman
|
|||
|
elseif dormCharIndex == XDormConfig.DORM_CHAR_INDEX.INFESTOR then
|
|||
|
return XDormConfig.DormSex.InfestorMale, XDormConfig.DormSex.InfestorFemale
|
|||
|
elseif dormCharIndex == XDormConfig.DORM_CHAR_INDEX.NIER then
|
|||
|
return XDormConfig.DormSex.NIER
|
|||
|
else
|
|||
|
return
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 通过类型,获取宿舍角色总数量
|
|||
|
function XDormConfig.GetDormCharacterTemplatesCountByType(...)
|
|||
|
local count = 0
|
|||
|
local types = { ... }
|
|||
|
for _, k in ipairs(types) do
|
|||
|
local t = DormCharTypeCountDic[k] or 0
|
|||
|
count = count + t
|
|||
|
end
|
|||
|
return count
|
|||
|
end
|
|||
|
|
|||
|
-- 配置的宿舍总数
|
|||
|
function XDormConfig.GetTotalDormitortCountCfg()
|
|||
|
local count = 0
|
|||
|
local t = DormitoryTemplate or {}
|
|||
|
for _, _ in pairs(t) do
|
|||
|
count = count + 1
|
|||
|
end
|
|||
|
|
|||
|
return count
|
|||
|
end
|
|||
|
|
|||
|
-- 获取宿舍配置
|
|||
|
function XDormConfig.GetDormitoryCfgById(id)
|
|||
|
if not id then
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
local t = DormitoryTemplate[id]
|
|||
|
if not t then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetDormitoryCfgById", "t", TABLE_DORMITORY_PATH, "id", tostring(id))
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
return t
|
|||
|
end
|
|||
|
|
|||
|
-- 获取宿舍配置
|
|||
|
function XDormConfig.GetDefaultDormitory()
|
|||
|
for _, v in pairs(DormitoryTemplate) do
|
|||
|
return v
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 获取宿舍空间转向
|
|||
|
function XDormConfig.GetDormSenceVector(dormitoryId)
|
|||
|
local dormitoryConfig = XDormConfig.GetDormitoryCfgById(dormitoryId)
|
|||
|
local v3 = CS.UnityEngine.Vector3.zero
|
|||
|
if dormitoryConfig.SceneId == XDormConfig.SenceType.One then
|
|||
|
v3 = CS.UnityEngine.Vector3(0, -180, 0)
|
|||
|
elseif dormitoryConfig.SceneId == XDormConfig.SenceType.Two then
|
|||
|
v3 = CS.UnityEngine.Vector3(0, -180, 0)
|
|||
|
elseif dormitoryConfig.SceneId == XDormConfig.SenceType.Three then
|
|||
|
v3 = CS.UnityEngine.Vector3(0, -180, 0)
|
|||
|
end
|
|||
|
|
|||
|
return v3
|
|||
|
end
|
|||
|
|
|||
|
-- 获取宿舍号
|
|||
|
function XDormConfig.GetDormitoryNumById(dormitoryId)
|
|||
|
local dormitoryConfig = XDormConfig.GetDormitoryCfgById(dormitoryId)
|
|||
|
return dormitoryConfig.InitNumber
|
|||
|
end
|
|||
|
|
|||
|
-- 获取宿舍空间ID
|
|||
|
function XDormConfig.GetDormitorySenceById(dormitoryId)
|
|||
|
local dormitoryConfig = XDormConfig.GetDormitoryCfgById(dormitoryId)
|
|||
|
return dormitoryConfig.SceneId
|
|||
|
end
|
|||
|
|
|||
|
-- 宿舍可住人数
|
|||
|
-- 获取宿舍配置
|
|||
|
function XDormConfig.GetDormPersonCount(id)
|
|||
|
local t = XDormConfig.GetDormitoryCfgById(id)
|
|||
|
if not t then
|
|||
|
return 0
|
|||
|
end
|
|||
|
|
|||
|
return t.CharCapacity or 0
|
|||
|
end
|
|||
|
|
|||
|
--获取行为节点Id
|
|||
|
function XDormConfig.GetCharacterBehavior(charId, state)
|
|||
|
if not CharacterBehaviorStateIndex or not CharacterBehaviorStateIndex[charId] then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetCharacterBehavior", "CharacterBehaviorStateIndex",
|
|||
|
TABLE_DORM_CHARACTER_BEHAVIOR_PATH, "charId", tostring(charId))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if not CharacterBehaviorStateIndex[charId][state] then
|
|||
|
--也用于检测有无角色行为,这里的报错日志注释掉
|
|||
|
--XLog.ErrorTableDataNotFound("XDormConfig.GetCharacterBehavior", "state", TABLE_DORM_CHARACTER_BEHAVIOR_PATH, "charId", tostring(charId))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return CharacterBehaviorStateIndex[charId][state]
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
--获取行为表
|
|||
|
function XDormConfig.GetCharacterBehaviorById(id)
|
|||
|
if not CharacterBehaviorTemplate then
|
|||
|
XLog.Error("配置表:" .. TABLE_DORM_CHARACTER_BEHAVIOR_PATH .. "读取失败")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if not CharacterBehaviorTemplate[id] then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetCharacterBehaviorById", "配置表项", TABLE_DORM_CHARACTER_BEHAVIOR_PATH, "id", tostring(id))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
return CharacterBehaviorTemplate[id]
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
--获取角色交互
|
|||
|
function XDormConfig.GetCharacterInteractiveIndex(id1, id2)
|
|||
|
if not CharacterInteractiveIndex then
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
if CharacterInteractiveIndex[id1] and CharacterInteractiveIndex[id1][id2] then
|
|||
|
local temp = CharacterInteractiveIndex[id1][id2]
|
|||
|
return true, temp, temp.State[1], temp.State[2]
|
|||
|
elseif CharacterInteractiveIndex[id2] and CharacterInteractiveIndex[id2][id1] then
|
|||
|
local temp = CharacterInteractiveIndex[id2][id1]
|
|||
|
return true, temp, temp.State[2], temp.State[1]
|
|||
|
end
|
|||
|
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
--获取动作状态机
|
|||
|
function XDormConfig.GetCharacterActionState(charId, name)
|
|||
|
if not CharacterActionIndex or not CharacterActionIndex[charId] or not CharacterActionIndex[charId][name] then
|
|||
|
XLog.Error(string.format("CharacterActionIndex不存在 charId:%s name:%s 路径:%s", charId, name, TABLE_CHARACTER_ACTION_PATH))
|
|||
|
name = "QR2YongyechaoExcessiveBase01"
|
|||
|
end
|
|||
|
|
|||
|
return CharacterActionIndex[charId][name]
|
|||
|
end
|
|||
|
|
|||
|
--获取事件
|
|||
|
function XDormConfig.GetCharacterEventById(id)
|
|||
|
if not CharacterEventTemplate then
|
|||
|
XLog.Error("配置表:" .. TABLE_DORM_CHARACTER_EVENT_PATH .. "读取失败")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if not CharacterEventTemplate[id] then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetCharacterEventById", "配置表项", TABLE_DORM_CHARACTER_EVENT_PATH, "id", tostring(id))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return CharacterEventTemplate[id]
|
|||
|
end
|
|||
|
|
|||
|
function XDormConfig.GetDormCharacterWorkById(id)
|
|||
|
if not id then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return DormCharacterWork[id]
|
|||
|
end
|
|||
|
|
|||
|
function XDormConfig.GetDormCharacterWorkData()
|
|||
|
return DormCharacterWork
|
|||
|
end
|
|||
|
|
|||
|
-- 获取构造体回复配置表
|
|||
|
function XDormConfig.GetCharRecoveryConfig(charId)
|
|||
|
local t = DormCharacterRecovery[charId]
|
|||
|
if not t then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetCharRecoveryConfig", "配置表项", TABLE_DORM_CHARACTER_RECOVERY_PATH, "charId", tostring(charId))
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
return t
|
|||
|
end
|
|||
|
|
|||
|
-- 获取构造体表情特效
|
|||
|
function XDormConfig.GetMoodEffectConfig(id)
|
|||
|
local t = MoodEffectTemplate[id]
|
|||
|
if not t then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetMoodEffectConfig", "配置表项", TABLE_MOOD_EFFECT_PATH, "id", tostring(id))
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
return t
|
|||
|
end
|
|||
|
|
|||
|
-- 获取构造体对话配置表
|
|||
|
function XDormConfig.GetCharacterDialogConfig(id)
|
|||
|
local t = CharacterDialogTemplate[id]
|
|||
|
if not t then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetCharacterDialogConfig", "配置表项", TABLE_CHARACTER_DIALOG_PATH, "id", tostring(id))
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
return t
|
|||
|
end
|
|||
|
|
|||
|
-- 获取构造体信息配置
|
|||
|
function XDormConfig.GetCharacterStyleConfigById(id)
|
|||
|
local t = CharacterStyleTemplate[id]
|
|||
|
if not t then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetCharacterStyleConfigById", "配置表项", TABLE_CHARACTER_STYLE_PATH, "id", tostring(id))
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
return t
|
|||
|
end
|
|||
|
|
|||
|
-- 获取构造体Q版头像(圆形)
|
|||
|
function XDormConfig.GetCharacterStyleConfigQIconById(id)
|
|||
|
local t = CharacterStyleTemplate[id]
|
|||
|
if not t or not t.HeadRoundIcon then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetCharacterStyleConfigQIconById",
|
|||
|
"配置表项或者HeadRoundIcon", TABLE_CHARACTER_STYLE_PATH, "id", tostring(id))
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
return t.HeadRoundIcon
|
|||
|
end
|
|||
|
|
|||
|
-- 获取构造体Q版头像(圆形)
|
|||
|
function XDormConfig.GetCharacterStyleConfigQSIconById(id)
|
|||
|
local t = CharacterStyleTemplate[id]
|
|||
|
if not t or not t.HeadIcon then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetCharacterStyleConfigQSIconById", "配置表项或者HeadIcon", TABLE_CHARACTER_STYLE_PATH, "id", tostring(id))
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
return t.HeadIcon
|
|||
|
end
|
|||
|
|
|||
|
-- 获取构造体性别类型
|
|||
|
function XDormConfig.GetCharacterStyleConfigSexById(id)
|
|||
|
local t = CharacterStyleTemplate[id]
|
|||
|
if not t or not t.Type then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetCharacterStyleConfigSexById", "配置表项或者Type", TABLE_CHARACTER_STYLE_PATH, "id", tostring(id))
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
return t.Type
|
|||
|
end
|
|||
|
|
|||
|
function XDormConfig.GetCharacterNameConfigById(id)
|
|||
|
local t = CharacterStyleTemplate[id]
|
|||
|
if not t then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetCharacterNameConfigById", "配置表项", TABLE_CHARACTER_STYLE_PATH, "id", tostring(id))
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
return t.Name
|
|||
|
end
|
|||
|
|
|||
|
-- 获取构造体爱抚配置表
|
|||
|
function XDormConfig.GetCharacterFondleByCharId(characterId)
|
|||
|
local t = CharacterFondleTemplate[characterId]
|
|||
|
if not t then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetCharacterFondleByCharId",
|
|||
|
"配置表项", TABLE_DORM_CHARACTER_FONDLE_PATH, "characterId", tostring(characterId))
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
return t
|
|||
|
end
|
|||
|
|
|||
|
-- 获取构造体爱总次数
|
|||
|
function XDormConfig.GetCharacterFondleCount(characterId)
|
|||
|
local t = XDormConfig.GetCharacterFondleByCharId(characterId)
|
|||
|
return t.MaxCount
|
|||
|
end
|
|||
|
|
|||
|
-- 获取构造体爱恢复一次时间
|
|||
|
function XDormConfig.GetCharacterFondleRecoveryTime(characterId)
|
|||
|
local t = XDormConfig.GetCharacterFondleByCharId(characterId)
|
|||
|
return t.RecoveryTime
|
|||
|
end
|
|||
|
|
|||
|
-- 获取构造体事件客户表现表
|
|||
|
function XDormConfig.GetCharacterShowEvent(id)
|
|||
|
local t = ChaarcterShowEventTemplate[id]
|
|||
|
if not t then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetCharacterShowEvent", "配置表项", TABLE_SHOW_EVENT_PATH, "id", tostring(id))
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
return t
|
|||
|
end
|
|||
|
|
|||
|
-- 获取构造体事件状态
|
|||
|
function XDormConfig.GetCharacterShowEventState(id)
|
|||
|
local t = XDormConfig.GetCharacterShowEvent(id)
|
|||
|
return t.State
|
|||
|
end
|
|||
|
|
|||
|
-- 获取构造体心情状态
|
|||
|
function XDormConfig.GetMoodStateByMoodValue(moodValue)
|
|||
|
local t
|
|||
|
|
|||
|
for _, v in pairs(CharacterMoodTemplate) do
|
|||
|
if moodValue > v.MoodMinValue and moodValue <= v.MoodMaxValue then
|
|||
|
t = v
|
|||
|
break
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
if not t then
|
|||
|
XLog.Error("XDormConfig.GetMoodStateByMoodValue 参数不符合规范,moodValue: " .. tostring(moodValue))
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
return t
|
|||
|
end
|
|||
|
|
|||
|
-- 获取构造体心情状态描述
|
|||
|
function XDormConfig.GetMoodStateDesc(moodValue)
|
|||
|
local desc = ""
|
|||
|
|
|||
|
for _, v in pairs(CharacterMoodTemplate) do
|
|||
|
if moodValue > v.MoodMinValue and moodValue <= v.MoodMaxValue then
|
|||
|
desc = v.Describe
|
|||
|
break
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
return desc
|
|||
|
end
|
|||
|
|
|||
|
-- 获取构造体心情状态颜色值
|
|||
|
function XDormConfig.GetMoodStateColor(moodValue)
|
|||
|
local color = "FFFFFFFF"
|
|||
|
|
|||
|
for _, v in pairs(CharacterMoodTemplate) do
|
|||
|
if moodValue > v.MoodMinValue and moodValue <= v.MoodMaxValue then
|
|||
|
color = v.Color
|
|||
|
break
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
return XUiHelper.Hexcolor2Color(color)
|
|||
|
end
|
|||
|
|
|||
|
-- 获取图纸商店跳转ID
|
|||
|
function XDormConfig.GetDraftShopId()
|
|||
|
return XDormConfig.DORM_DRAFT_SHOP_ID
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
--获取对话表
|
|||
|
function XDormConfig.GetCharacterDialog(charData, state)
|
|||
|
|
|||
|
local charId = charData.CharacterId
|
|||
|
|
|||
|
if not CharacterDialogStateIndex or not CharacterDialogStateIndex[charId] then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetCharacterDialog", "配置表项", TABLE_CHARACTER_DIALOG_PATH, "charId", tostring(charId))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if not CharacterDialogStateIndex[charId][state] then
|
|||
|
XLog.ErrorTableDataNotFound("XDormConfig.GetCharacterDialog", "配置表项或者state", TABLE_CHARACTER_DIALOG_PATH, "charId", tostring(charId))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local dialogList = CharacterDialogStateIndex[charId][state]
|
|||
|
|
|||
|
if not dialogList then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local fitterList = {}
|
|||
|
|
|||
|
for _, v in ipairs(dialogList) do
|
|||
|
if charData.Mood >= v.MoodMinValue and charData.Mood <= v.MoodMaxValue then
|
|||
|
table.insert(fitterList, v)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
if #fitterList <= 0 then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
math.randomseed(os.time())
|
|||
|
local index = math.random(0, #fitterList)
|
|||
|
|
|||
|
return fitterList[index]
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
--获取套装的音乐信息
|
|||
|
function XDormConfig.GetDormSuitBgmInfo(suitId)
|
|||
|
for _, v in pairs(DormBgmTemplate) do
|
|||
|
if v.SuitId == suitId then
|
|||
|
return v
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
--获取背景音乐
|
|||
|
function XDormConfig.GetDormBgm(furnitureList)
|
|||
|
local musicList = {}
|
|||
|
|
|||
|
for _, v in pairs(DormBgmTemplate) do
|
|||
|
if v.SuitId == -1 then
|
|||
|
table.insert(musicList, v)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
if not furnitureList then
|
|||
|
return false, musicList
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
local suitDic = {}
|
|||
|
for _, v in pairs(furnitureList) do
|
|||
|
suitDic[v.SuitId] = suitDic[v.SuitId] or {}
|
|||
|
local isExist = false
|
|||
|
for _, id in ipairs(suitDic[v.SuitId]) do
|
|||
|
if id == v.Id then
|
|||
|
isExist = true
|
|||
|
break
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
if not isExist then
|
|||
|
table.insert(suitDic[v.SuitId], v.Id)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
for _, v in pairs(DormBgmTemplate) do
|
|||
|
if suitDic[v.SuitId] and #suitDic[v.SuitId] >= v.SuitNum then
|
|||
|
table.insert(musicList, v)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
if #musicList <= 1 then
|
|||
|
return false, musicList
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
table.sort(musicList, function(a, b)
|
|||
|
return a.Order > b.Order
|
|||
|
end)
|
|||
|
|
|||
|
|
|||
|
return true, musicList
|
|||
|
end
|
|||
|
|
|||
|
-- 是否是模板宿舍
|
|||
|
function XDormConfig.IsTemplateRoom(dormDataType)
|
|||
|
if dormDataType == XDormConfig.DormDataType.Template or
|
|||
|
dormDataType == XDormConfig.DormDataType.Collect or
|
|||
|
dormDataType == XDormConfig.DormDataType.CollectNone or
|
|||
|
dormDataType == XDormConfig.DormDataType.Provisional then
|
|||
|
return true
|
|||
|
end
|
|||
|
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
-- 初始化宿舍模板列表
|
|||
|
local function InitDormTemplate()
|
|||
|
DormTemplateData = {}
|
|||
|
for _, v in pairs(DormTemplateCfg) do
|
|||
|
DormTemplateData[v.Id] = XHomeRoomData.New(v.Id)
|
|||
|
DormTemplateData[v.Id]:SetPlayerId(XPlayer.Id)
|
|||
|
DormTemplateData[v.Id]:SetRoomName(v.Name)
|
|||
|
DormTemplateData[v.Id]:SetRoomUnlock(true)
|
|||
|
DormTemplateData[v.Id]:SetRoomDataType(XDormConfig.DormDataType.Template)
|
|||
|
DormTemplateData[v.Id]:SetRoomOrder(v.Order)
|
|||
|
DormTemplateData[v.Id]:SetRoomPicturePath(v.PicturePath)
|
|||
|
|
|||
|
for i = 1, #v.FurnitureId do
|
|||
|
if not v.FurniturePos[i] then
|
|||
|
XLog.ErrorTableDataNotFound("InitDormTemplate", "FurniturePos", TABLE_DORM_TEMPLATE_PATH, "Id", tostring(v.Id))
|
|||
|
break
|
|||
|
end
|
|||
|
|
|||
|
local posList = string.Split(v.FurniturePos[i], "|")
|
|||
|
if not posList then
|
|||
|
XLog.ErrorTableDataNotFound("InitDormTemplate", "FurnitureId", TABLE_DORM_TEMPLATE_PATH, "Id", tostring(v.Id))
|
|||
|
break
|
|||
|
end
|
|||
|
|
|||
|
local id = XGlobalVar.GetIncId()
|
|||
|
local x = posList[1] and tonumber(posList[1]) or 0
|
|||
|
local y = posList[2] and tonumber(posList[2]) or 0
|
|||
|
local r = posList[3] and tonumber(posList[3]) or 0
|
|||
|
DormTemplateData[v.Id]:AddFurniture(id, v.FurnitureId[i], x, y, r)
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XDormConfig.GetDormTemplateData()
|
|||
|
InitDormTemplate()
|
|||
|
return DormTemplateData
|
|||
|
end
|
|||
|
|
|||
|
function XDormConfig.GetDormitoryTablePath()
|
|||
|
return TABLE_DORMITORY_PATH
|
|||
|
end
|
|||
|
--===================
|
|||
|
--获取家具-角色行为对照关系配置
|
|||
|
--@param furnitureId:家具Id
|
|||
|
--@param characterId:角色Id
|
|||
|
--@param positionId:接触点序号(不填默认为1,只有1个接触点的家具接触点序号默认1)
|
|||
|
--===================
|
|||
|
function XDormConfig.GetDormF2CBehaviorRelative(furnitureId, characterId, positionId)
|
|||
|
local config = DormF2CRelationDic[furnitureId]
|
|||
|
if not config then return nil end
|
|||
|
if not config[characterId] then return nil end
|
|||
|
return config[characterId][positionId or 1]
|
|||
|
end
|