2471 lines
95 KiB
Lua
2471 lines
95 KiB
Lua
|
local tableInsert = table.insert
|
|||
|
local tableSort = table.sort
|
|||
|
local ipairs = ipairs
|
|||
|
local pairs = pairs
|
|||
|
local stringGsub = string.gsub
|
|||
|
local CSXTextManagerGetText = CS.XTextManager.GetText
|
|||
|
|
|||
|
local TABLE_CHAPTER_PATH = "Share/MiniActivity/RpgMakerGame/RpgMakerGameChapter.tab"
|
|||
|
local TABLE_STAGE_PATH = "Share/MiniActivity/RpgMakerGame/RpgMakerGameStage.tab"
|
|||
|
local TABLE_STAR_CONDITION_PATH = "Share/MiniActivity/RpgMakerGame/RpgMakerGameStarCondition.tab"
|
|||
|
local TABLE_ROLE_PATH = "Share/MiniActivity/RpgMakerGame/RpgMakerGameRole.tab"
|
|||
|
local TABLE_MAP_PATH = "Share/MiniActivity/RpgMakerGame/RpgMakerGameMap.tab" --
|
|||
|
local TABLE_START_POINT_PATH = "Share/MiniActivity/RpgMakerGame/RpgMakerGameStartPoint.tab"
|
|||
|
local TABLE_END_POINT_PATH = "Share/MiniActivity/RpgMakerGame/RpgMakerGameEndPoint.tab"
|
|||
|
local TABLE_BLOCK_PATH = "Share/MiniActivity/RpgMakerGame/RpgMakerGameBlock.tab"
|
|||
|
local TABLE_GAP_PATH = "Share/MiniActivity/RpgMakerGame/RpgMakerGameGap.tab"
|
|||
|
local TABLE_MONSTER_PATH = "Share/MiniActivity/RpgMakerGame/RpgMakerGameMonster.tab"
|
|||
|
local TABLE_TRIGGER_PATH = "Share/MiniActivity/RpgMakerGame/RpgMakerGameTrigger.tab"
|
|||
|
local TABLE_ACTIVITY_PATH = "Share/MiniActivity/RpgMakerGame/RpgMakerGameActivity.tab"
|
|||
|
local TABLE_SHADOW_PATH = "Share/MiniActivity/RpgMakerGame/RpgMakerGameShadow.tab"
|
|||
|
local TABLE_TRAP_PATH = "Share/MiniActivity/RpgMakerGame/RpgMakerGameTrap.tab"
|
|||
|
local TABLE_ELECTRIC_FENCE_PATH = "Share/MiniActivity/RpgMakerGame/RpgMakerGameElectricFence.tab"
|
|||
|
local TABLE_CHAPTER_GROUP_PATH = "Share/MiniActivity/RpgMakerGame/RpgMakerGameChapterGroup.tab"
|
|||
|
local TABLE_ENTITY_PATH = "Share/MiniActivity/RpgMakerGame/RpgMakerGameEntity.tab"
|
|||
|
local TABLE_TRANSFER_POINT_PATH = "Share/MiniActivity/RpgMakerGame/RpgMakerGameTransferPoint.tab"
|
|||
|
local TABLE_HINT_ICON_PATH = "Client/MiniActivity/RpgMakerGame/RpgMakerGameHintIcon.tab"
|
|||
|
local TABLE_RANDOM_DIALOG_BOX_PATH = "Client/MiniActivity/RpgMakerGame/RpgMakerGameRandomDialogBox.tab"
|
|||
|
local TABLE_HINT_DIALOG_BOX_PATH = "Client/MiniActivity/RpgMakerGame/RpgMakerGameHintDialogBox.tab"
|
|||
|
local TABLE_MODEL_PATH = "Client/MiniActivity/RpgMakerGame/RpgMakerGameModel.tab"
|
|||
|
local TABLE_ANIMATION_PATH = "Client/MiniActivity/RpgMakerGame/RpgMakerGameAnimation.tab"
|
|||
|
local TABLE_PLAY_MAIN_DOWN_HINT_PATH = "Client/MiniActivity/RpgMakerGame/RpgMakerGamePlayMainDownHint.tab"
|
|||
|
local TABLE_HINT_LINE_PATH = "Client/MiniActivity/RpgMakerGame/RpgMakerGameHintLine.tab"
|
|||
|
local TABLE_DEATH_TITAL_PATH = "Client/MiniActivity/RpgMakerGame/RpgMakerGameDeathTitle.tab"
|
|||
|
local TABLE_SKILL_TYPE_PATH = "Client/MiniActivity/RpgMakerGame/RpgMakerGameSkillType.tab"
|
|||
|
local RpgMakerGameChapterConfigs = {}
|
|||
|
local RpgMakerGameStageConfigs = {}
|
|||
|
local RpgMakerGameSKillTypeConfigs = {}
|
|||
|
local RpgMakerGameStarConditionConfigs = {}
|
|||
|
local RpgMakerGameRoleConfigs = {}
|
|||
|
local RpgMakerGameMapConfigs = {}
|
|||
|
local RpgMakerGameStartPointConfigs = {}
|
|||
|
local RpgMakerGameEndPointConfigs = {}
|
|||
|
local RpgMakerGameBlockConfigs = {}
|
|||
|
local RpgMakerGameGapConfigs = {}
|
|||
|
local RpgMakerGameMonsterConfigs = {}
|
|||
|
local RpgMakerGameTriggerConfigs = {}
|
|||
|
local RpgMakerGameHintIconConfigs = {}
|
|||
|
local RpgMakerGameActivityConfigs = {}
|
|||
|
local RpgMakerGameRandomDialogBoxConfigs = {}
|
|||
|
local RpgMakerGameHintDialogBoxConfigs = {}
|
|||
|
local RpgMakerGameModelConfigs = {}
|
|||
|
local RpgMakerGameAnimationConfigs = {}
|
|||
|
local RpgMakerGamePlayMainDownHintConfigs = {}
|
|||
|
local RpgMakerGameHintLineConfigs = {}
|
|||
|
local RpgMakerGameShadowConfigs = {}
|
|||
|
local RpgMakerGameTrapConfigs = {}
|
|||
|
local RpgMakerGameElectricFenceConfigs = {}
|
|||
|
local RpgMakerGameDeathTitleConfigs = {}
|
|||
|
local RpgMakerGameChapterGroupConfigs = {}
|
|||
|
local RpgMakerGameEntityConfigs = {}
|
|||
|
local RpgMakerGameTransferPointConfigs = {}
|
|||
|
|
|||
|
local RpgMakerGameChapterIdList = {}
|
|||
|
local RpgMakerGameChapterIdToStageIdListDic = {}
|
|||
|
local RpgMakerGameStageIdToStarConditionIdListDic = {}
|
|||
|
local RpgMakerGameRoleIdList = {}
|
|||
|
local RpgMakerGameStageIdList = {}
|
|||
|
local RpgMakerGameSkillTypeList = {}
|
|||
|
local RpgMakerGameMapIdToBlockIdList = {}
|
|||
|
local RpgMakerGameMapIdToGapIdList = {}
|
|||
|
local RpgMakerGameMapIdToMonsterIdList = {}
|
|||
|
local RpgMakerGameMapIdToTriggerIdList = {}
|
|||
|
local RpgMakerGameMapIdToHintIdList = {}
|
|||
|
local RpgMakerGameRandomDialogBoxIdList = {}
|
|||
|
local RpgMakerGameMapIdToShadowIdList = {}
|
|||
|
local RpgMakerGameMapIdToTrapIdList = {}
|
|||
|
local RpgMakerGameMapIdToElectricFenceIdList = {}
|
|||
|
local MapIdToTransferPointIdList = {} --key:mapId,value:transferPointIdList
|
|||
|
local MapIdToEntityIdList = {} --key:mapId,value:entityIdList
|
|||
|
local EntityTypeDic = {} --key1:MapId,key2:X,key3:Y,value:TypeList
|
|||
|
local EntityIdDic = {} --key1:MapId,key2:X,key3:Y,value:entityIdList
|
|||
|
local RpgMakerGameChapterGroupToChapterIdList = {} --key:chapterGroupId,value:chapterIdList
|
|||
|
local RpgMakerGameChapterGroupIdList = {}
|
|||
|
|
|||
|
local DefaultActivityId = 1
|
|||
|
|
|||
|
XRpgMakerGameConfigs = XRpgMakerGameConfigs or {}
|
|||
|
|
|||
|
--关卡状态
|
|||
|
XRpgMakerGameConfigs.RpgMakerGameStageStatus = {
|
|||
|
Lock = 1, --未开启
|
|||
|
UnLock = 2, --已开启
|
|||
|
Clear = 3, --已通关
|
|||
|
}
|
|||
|
|
|||
|
--方向
|
|||
|
XRpgMakerGameConfigs.RpgMakerGameMoveDirection = {
|
|||
|
MoveLeft = 1,
|
|||
|
MoveRight = 2,
|
|||
|
MoveUp = 3,
|
|||
|
MoveDown = 4,
|
|||
|
}
|
|||
|
|
|||
|
--行动类型
|
|||
|
XRpgMakerGameConfigs.RpgMakerGameActionType = {
|
|||
|
ActionNone = 0,
|
|||
|
ActionPlayerMove = 1, --玩家移动
|
|||
|
ActionKillMonster = 2, --杀死怪物
|
|||
|
ActionStageWin = 3, --关卡胜利
|
|||
|
ActionEndPointOpen = 4, --终点开启
|
|||
|
ActionMonsterRunAway = 5, --怪物逃跑
|
|||
|
ActionMonsterChangeDirection = 6, --怪物调整方向
|
|||
|
ActionMonsterKillPlayer = 7, --怪物杀死玩家
|
|||
|
ActionTriggerStatusChange = 8, --机关状态改变
|
|||
|
ActionMonsterPatrol = 9, --怪物巡逻
|
|||
|
ActionUnlockRole = 10, --解锁角色
|
|||
|
ActionMonsterPatrolLine = 11, --怪物巡逻路线
|
|||
|
ActionShadowMove = 12, --影子移动
|
|||
|
ActionShadowDieByTrap = 13, --影子掉落陷阱
|
|||
|
ActionPlayerDieByTrap = 14, --玩家掉落陷阱
|
|||
|
ActionMonsterDieByTrap = 15, --怪物掉落陷阱
|
|||
|
ActionElectricStatusChange = 16, --电墙状态改变
|
|||
|
ActionPlayerKillByElectricFence = 17, --玩家被电墙杀死
|
|||
|
ActionMonsterKillByElectricFence = 18, --怪物被电墙杀死
|
|||
|
ActionHumanKill = 19, --人类被杀,关卡失败
|
|||
|
ActionSentrySign = 20, --产生哨戒的标记
|
|||
|
ActionPlayerTransfer = 21, --玩家传送
|
|||
|
ActionBurnGrass = 22, --燃烧草圃
|
|||
|
ActionGrowGrass = 23, --草圃生长
|
|||
|
ActionPlayerDrown = 24, --玩家淹死
|
|||
|
ActionMonsterDrown = 25, --怪物淹死
|
|||
|
ActionSteelBrokenToTrap = 26, --钢板破损变成陷阱
|
|||
|
ActionSteelBrokenToFlat = 27, --钢板破损消失
|
|||
|
ActionMonsterTransfer = 28, --怪物传送
|
|||
|
}
|
|||
|
|
|||
|
--缝隙类型
|
|||
|
XRpgMakerGameConfigs.RpgMakerGapDirection = {
|
|||
|
GridLeft = 1, --格子左边线
|
|||
|
GridRight = 2, --格子右边线
|
|||
|
GridTop = 3, --格子顶部线
|
|||
|
GridBottom = 4, --格子底部线
|
|||
|
}
|
|||
|
|
|||
|
--终点类型
|
|||
|
XRpgMakerGameConfigs.XRpgMakerGameEndPointType = {
|
|||
|
DefaultClose = 0, --默认关闭
|
|||
|
DefaultOpen = 1, --默认开启
|
|||
|
}
|
|||
|
|
|||
|
--阻挡状态
|
|||
|
XRpgMakerGameConfigs.XRpgMakerGameBlockStatus = {
|
|||
|
UnBlock = 0, --不阻挡
|
|||
|
Block = 1, --阻挡
|
|||
|
}
|
|||
|
|
|||
|
--怪物类型
|
|||
|
XRpgMakerGameConfigs.XRpgMakerGameMonsterType = {
|
|||
|
Normal = 1, --小怪
|
|||
|
BOSS = 2,
|
|||
|
Human = 3, --人类
|
|||
|
}
|
|||
|
|
|||
|
--怪物攻击范围方向
|
|||
|
XRpgMakerGameConfigs.XRpgMakerGameMonsterViewAreaType = {
|
|||
|
ViewFront = 1, --怪物的前方
|
|||
|
ViewBack = 2, --怪物的后面
|
|||
|
ViewLeft = 3, --怪物的左边
|
|||
|
ViewRight = 4, --怪物的右边
|
|||
|
}
|
|||
|
|
|||
|
--机关类型
|
|||
|
XRpgMakerGameConfigs.XRpgMakerGameTriggerType = {
|
|||
|
Trigger1 = 1, --本身是不能阻挡,停在上面可以触发类型2的机关状态转变
|
|||
|
Trigger2 = 2, --由类型1触发
|
|||
|
Trigger3 = 3, --经过后,会从通过状态转变为阻挡状态
|
|||
|
TriggerElectricFence = 4, --电围栏触发机关
|
|||
|
}
|
|||
|
|
|||
|
--电墙机关(开关)状态
|
|||
|
XRpgMakerGameConfigs.XRpgMakerGameElectricStatus = {
|
|||
|
CloseElectricFence = 0, --关闭电网
|
|||
|
OpenElectricFence = 1, --开启电网
|
|||
|
}
|
|||
|
|
|||
|
--电网状态
|
|||
|
XRpgMakerGameConfigs.XRpgMakerGameElectricFenceStatus = {
|
|||
|
Close = 0, --关闭
|
|||
|
Open = 1, --开启
|
|||
|
}
|
|||
|
|
|||
|
--答案类型
|
|||
|
XRpgMakerGameConfigs.XRpgMakerGameRoleAnswerType = {
|
|||
|
Hint = 1, --提示
|
|||
|
Answer = 2, --答案
|
|||
|
}
|
|||
|
|
|||
|
--角色技能
|
|||
|
XRpgMakerGameConfigs.XRpgMakerGameRoleSkillType = {
|
|||
|
Crystal = 1, --冰霜
|
|||
|
Flame = 2, --烈焰
|
|||
|
Raiden = 3, --雷电
|
|||
|
Dark = 4 --暗元素
|
|||
|
}
|
|||
|
|
|||
|
--实体类型
|
|||
|
XRpgMakerGameConfigs.XRpgMakerGameEntityType = {
|
|||
|
Water = 1, --水
|
|||
|
Ice = 2, --冰
|
|||
|
Grass = 3, --草圃
|
|||
|
Steel = 4 --钢板
|
|||
|
}
|
|||
|
|
|||
|
--水类型
|
|||
|
XRpgMakerGameConfigs.XRpgMakerGameWaterType = {
|
|||
|
Water = 1, --水
|
|||
|
Ice = 2, --冰
|
|||
|
Melt = 3, --冰融化
|
|||
|
}
|
|||
|
|
|||
|
XRpgMakerGameConfigs.XRpgMakerTransferPointColor = {
|
|||
|
Green = 1, --
|
|||
|
Yellow = 2, --
|
|||
|
Purple = 3, --
|
|||
|
}
|
|||
|
|
|||
|
--钢板破损后的类型
|
|||
|
XRpgMakerGameConfigs.XRpgMakerGameSteelBrokenType = {
|
|||
|
Init = 0, --默认状态
|
|||
|
Flat = 1, --变成平地
|
|||
|
Trap = 2, --变成陷阱
|
|||
|
}
|
|||
|
|
|||
|
--小地图提示图标配置表的key
|
|||
|
XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps = {
|
|||
|
BlockIcon = "BlockIcon",
|
|||
|
NormalMonsterIcon = "NormalMonsterIcon",
|
|||
|
BossIcon = "BossIcon",
|
|||
|
TriggerIcon1 = "TriggerIcon1",
|
|||
|
TriggerIcon2 = "TriggerIcon2",
|
|||
|
TriggerIcon3 = "TriggerIcon3",
|
|||
|
ElectricFencTrigger = "ElectricFencTrigger",
|
|||
|
GapIcon = "GapIcon",
|
|||
|
ShadowIcon = "ShadowIcon",
|
|||
|
ElectricFenceIcon = "ElectricFenceIcon",
|
|||
|
HumanIcon = "HumanIcon",
|
|||
|
StartPointIcon = "StartPointIcon",
|
|||
|
EndPointIcon = "EndPointIcon",
|
|||
|
TrapIcon = "TrapIcon",
|
|||
|
MoveLineIcon = "MoveLineIcon",
|
|||
|
CrystalMonsterIcon = "CrystalMonsterIcon",
|
|||
|
FlameMonsterIcon = "FlameMonsterIcon",
|
|||
|
RaidenMonsterIcon = "RaidenMonsterIcon",
|
|||
|
DarkMonsterIcon = "DarkMonsterIcon",
|
|||
|
CrystalBossIcon = "CrystalBossIcon",
|
|||
|
FlameBossIcon = "FlameBossIcon",
|
|||
|
RaidenBossIcon = "RaidenBossIcon",
|
|||
|
DarkBossIcon = "DarkBossIcon",
|
|||
|
EntityIcon1 = "EntityIcon1",
|
|||
|
EntityIcon2 = "EntityIcon2",
|
|||
|
EntityIcon3 = "EntityIcon3",
|
|||
|
EntityIcon4 = "EntityIcon4",
|
|||
|
TransferPointIcon1 = "TransferPointIcon1",
|
|||
|
TransferPointIcon2 = "TransferPointIcon2",
|
|||
|
TransferPointIcon3 = "TransferPointIcon3",
|
|||
|
}
|
|||
|
|
|||
|
--模型/特效的key(RpgMakerGameModel.tab)
|
|||
|
XRpgMakerGameConfigs.ModelKeyMaps = {
|
|||
|
GoldClose = "GoldClose",
|
|||
|
Gap = "Gap",
|
|||
|
TriggerType3 = "TriggerType3",
|
|||
|
ViewArea = "ViewArea",
|
|||
|
TriggerType1 = "TriggerType1",
|
|||
|
GoldOpen = "GoldOpen",
|
|||
|
MoveLine = "MoveLine",
|
|||
|
TriggerType2 = "TriggerType2",
|
|||
|
RoleMoveArrow = "RoleMoveArrow",
|
|||
|
MonsterTriggerEffect = "MonsterTriggerEffect",
|
|||
|
ElectricFence = "ElectricFence",
|
|||
|
Trap = "Trap",
|
|||
|
SentryLine = "SentryLine",
|
|||
|
Sentry = "Sentry",
|
|||
|
SentryRoand = "SentryRoand",
|
|||
|
TriggerElectricFenceOpen = "TriggerElectricFenceOpen",
|
|||
|
TriggerElectricFenceClose = "TriggerElectricFenceClose",
|
|||
|
ElectricFenceEffect = "ElectricFenceEffect",
|
|||
|
KillByElectricFenceEffect = "KillByElectricFenceEffect",
|
|||
|
BeAtkEffect = "BeAtkEffect",
|
|||
|
ShadowEffect = "ShadowEffect",
|
|||
|
Grass = "Grass",
|
|||
|
Pool = "Pool",
|
|||
|
TransferPointLoopColor1 = "TransferPointLoopColor1",
|
|||
|
TransferPointLoopColor2 = "TransferPointLoopColor2",
|
|||
|
TransferPointLoopColor3 = "TransferPointLoopColor3",
|
|||
|
TransferPointColor1 = "TransferPointColor1",
|
|||
|
TransferPointColor2 = "TransferPointColor2",
|
|||
|
TransferPointColor3 = "TransferPointColor3",
|
|||
|
Steel = "Steel",
|
|||
|
SteelBroken = "SteelBroken",
|
|||
|
Freeze = "Freeze",
|
|||
|
Melt = "Melt",
|
|||
|
Drown = "Drown",
|
|||
|
Burn = "Burn",
|
|||
|
WaterRipper = "WaterRipper",
|
|||
|
DarkSkillEffect = "DarkSkillEffect",
|
|||
|
CrystalSkillEffect = "CrystalSkillEffect",
|
|||
|
FlameSkillEffect = "FlameSkillEffect",
|
|||
|
RaidenSkillEffect = "RaidenSkillEffect",
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
--一个关卡最多星星数
|
|||
|
XRpgMakerGameConfigs.MaxStarCount = 3
|
|||
|
|
|||
|
--延迟被攻击回调的时间
|
|||
|
XRpgMakerGameConfigs.BeAtkEffectDelayCallbackTime = CS.XGame.ClientConfig:GetInt("RpgMakerGamePlayBeAtkEffectDelayCallbackTime")
|
|||
|
|
|||
|
--草埔生长、燃烧等动画播放间隔(毫秒)
|
|||
|
XRpgMakerGameConfigs.PlayAnimaInterval = 50
|
|||
|
|
|||
|
|
|||
|
local InitRpgMakerGameChapterIdToStageIdListDic = function()
|
|||
|
local chapterId
|
|||
|
for _, v in pairs(RpgMakerGameStageConfigs) do
|
|||
|
chapterId = v.ChapterId
|
|||
|
if not RpgMakerGameChapterIdToStageIdListDic[chapterId] then
|
|||
|
RpgMakerGameChapterIdToStageIdListDic[chapterId] = {}
|
|||
|
end
|
|||
|
tableInsert(RpgMakerGameChapterIdToStageIdListDic[chapterId], v.Id)
|
|||
|
end
|
|||
|
|
|||
|
for chapterId, stageIdList in pairs(RpgMakerGameChapterIdToStageIdListDic) do
|
|||
|
tableSort(stageIdList, function(a, b)
|
|||
|
return a < b
|
|||
|
end)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local InitRpgMakerGameStageIdToStarConditionIdListDic = function()
|
|||
|
local stageId
|
|||
|
for _, v in pairs(RpgMakerGameStarConditionConfigs) do
|
|||
|
stageId = v.StageId
|
|||
|
if not RpgMakerGameStageIdToStarConditionIdListDic[stageId] then
|
|||
|
RpgMakerGameStageIdToStarConditionIdListDic[stageId] = {}
|
|||
|
end
|
|||
|
|
|||
|
tableInsert(RpgMakerGameStageIdToStarConditionIdListDic[stageId], v.Id)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local InitRpgMakerGameRoleIdList = function()
|
|||
|
local tempTable = {}
|
|||
|
for _, v in pairs(RpgMakerGameRoleConfigs) do
|
|||
|
tableInsert(tempTable, v)
|
|||
|
end
|
|||
|
tableSort(tempTable, function(a, b)
|
|||
|
if a.RoleOrder ~= b.RoleOrder then
|
|||
|
return a.RoleOrder < b.RoleOrder
|
|||
|
end
|
|||
|
return a.Id < b.Id
|
|||
|
end)
|
|||
|
|
|||
|
for _, v in ipairs(tempTable) do
|
|||
|
tableInsert(RpgMakerGameRoleIdList, v.Id)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local InitRpgMakerGameStageIdList = function()
|
|||
|
for _, v in pairs(RpgMakerGameStageConfigs) do
|
|||
|
tableInsert(RpgMakerGameStageIdList, v.Id)
|
|||
|
end
|
|||
|
tableSort(RpgMakerGameStageIdList, function(a, b)
|
|||
|
return a < b
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
local InitRpgMakerGameSkillTypeList = function()
|
|||
|
for _, v in pairs(RpgMakerGameSKillTypeConfigs) do
|
|||
|
tableInsert(RpgMakerGameSkillTypeList, v.Id)
|
|||
|
end
|
|||
|
tableSort(RpgMakerGameSkillTypeList, function(a, b)
|
|||
|
return a < b
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
local InitRpgMakerGameMapIdToBlockIdList = function()
|
|||
|
local mapId
|
|||
|
for _, v in pairs(RpgMakerGameBlockConfigs) do
|
|||
|
mapId = v.MapId
|
|||
|
if not RpgMakerGameMapIdToBlockIdList[mapId] then
|
|||
|
RpgMakerGameMapIdToBlockIdList[mapId] = {}
|
|||
|
end
|
|||
|
tableInsert(RpgMakerGameMapIdToBlockIdList[mapId], v.Id)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local InitRpgMakerGameMapIdToGapIdList = function()
|
|||
|
local mapId
|
|||
|
for _, v in pairs(RpgMakerGameGapConfigs) do
|
|||
|
mapId = v.MapId
|
|||
|
if not RpgMakerGameMapIdToGapIdList[mapId] then
|
|||
|
RpgMakerGameMapIdToGapIdList[mapId] = {}
|
|||
|
end
|
|||
|
tableInsert(RpgMakerGameMapIdToGapIdList[mapId], v.Id)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local InitRpgMakerGameMapIdToMonsterIdList = function()
|
|||
|
local mapId
|
|||
|
for _, v in pairs(RpgMakerGameMonsterConfigs) do
|
|||
|
mapId = v.MapId
|
|||
|
if not RpgMakerGameMapIdToMonsterIdList[mapId] then
|
|||
|
RpgMakerGameMapIdToMonsterIdList[mapId] = {}
|
|||
|
end
|
|||
|
tableInsert(RpgMakerGameMapIdToMonsterIdList[mapId], v.Id)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local InitRpgMakerGameMapIdToTriggerIdList = function()
|
|||
|
local mapId
|
|||
|
for _, v in pairs(RpgMakerGameTriggerConfigs) do
|
|||
|
mapId = v.MapId
|
|||
|
if not RpgMakerGameMapIdToTriggerIdList[mapId] then
|
|||
|
RpgMakerGameMapIdToTriggerIdList[mapId] = {}
|
|||
|
end
|
|||
|
tableInsert(RpgMakerGameMapIdToTriggerIdList[mapId], v.Id)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local InitActivityConfig = function()
|
|||
|
for activityId, config in pairs(RpgMakerGameActivityConfigs) do
|
|||
|
if XTool.IsNumberValid(config.ActivityTimeId) then
|
|||
|
DefaultActivityId = activityId
|
|||
|
break
|
|||
|
end
|
|||
|
DefaultActivityId = activityId
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local InitRpgMakerGameRandomDialogBoxIdList = function()
|
|||
|
for _, v in pairs(RpgMakerGameRandomDialogBoxConfigs) do
|
|||
|
tableInsert(RpgMakerGameRandomDialogBoxIdList, v.Id)
|
|||
|
end
|
|||
|
tableSort(RpgMakerGameRandomDialogBoxIdList, function(a, b)
|
|||
|
return a < b
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
local InitRpgMakerGameMapIdToShadowIdList = function()
|
|||
|
local mapId
|
|||
|
for _, v in pairs(RpgMakerGameShadowConfigs) do
|
|||
|
mapId = v.MapId
|
|||
|
if not RpgMakerGameMapIdToShadowIdList[mapId] then
|
|||
|
RpgMakerGameMapIdToShadowIdList[mapId] = {}
|
|||
|
end
|
|||
|
tableInsert(RpgMakerGameMapIdToShadowIdList[mapId], v.Id)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local InitRpgMakerGameMapIdToShadowIdList = function()
|
|||
|
local mapId
|
|||
|
for _, v in pairs(RpgMakerGameShadowConfigs) do
|
|||
|
mapId = v.MapId
|
|||
|
if not RpgMakerGameMapIdToShadowIdList[mapId] then
|
|||
|
RpgMakerGameMapIdToShadowIdList[mapId] = {}
|
|||
|
end
|
|||
|
tableInsert(RpgMakerGameMapIdToShadowIdList[mapId], v.Id)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local InitRpgMakerGameMapIdToTrapIdList = function()
|
|||
|
local mapId
|
|||
|
for _, v in pairs(RpgMakerGameTrapConfigs) do
|
|||
|
mapId = v.MapId
|
|||
|
if not RpgMakerGameMapIdToTrapIdList[mapId] then
|
|||
|
RpgMakerGameMapIdToTrapIdList[mapId] = {}
|
|||
|
end
|
|||
|
tableInsert(RpgMakerGameMapIdToTrapIdList[mapId], v.Id)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local InitRpgMakerGameMapIdToElectricFenceIdList = function()
|
|||
|
local mapId
|
|||
|
for _, v in pairs(RpgMakerGameElectricFenceConfigs) do
|
|||
|
mapId = v.MapId
|
|||
|
if not RpgMakerGameMapIdToElectricFenceIdList[mapId] then
|
|||
|
RpgMakerGameMapIdToElectricFenceIdList[mapId] = {}
|
|||
|
end
|
|||
|
tableInsert(RpgMakerGameMapIdToElectricFenceIdList[mapId], v.Id)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local IsInitTransferPoint = false
|
|||
|
local InitMapIdToTransferPointIdList = function()
|
|||
|
if IsInitTransferPoint then
|
|||
|
return
|
|||
|
end
|
|||
|
local mapId
|
|||
|
for _, v in pairs(RpgMakerGameTransferPointConfigs) do
|
|||
|
mapId = v.MapId
|
|||
|
if not MapIdToTransferPointIdList[mapId] then
|
|||
|
MapIdToTransferPointIdList[mapId] = {}
|
|||
|
end
|
|||
|
tableInsert(MapIdToTransferPointIdList[mapId], v.Id)
|
|||
|
end
|
|||
|
IsInitTransferPoint = true
|
|||
|
end
|
|||
|
|
|||
|
local IsInitEntity = false
|
|||
|
local InitMapIdToEntityIdList = function()
|
|||
|
if IsInitEntity then
|
|||
|
return
|
|||
|
end
|
|||
|
local mapId
|
|||
|
for _, v in pairs(RpgMakerGameEntityConfigs) do
|
|||
|
mapId = v.MapId
|
|||
|
if not MapIdToEntityIdList[mapId] then
|
|||
|
MapIdToEntityIdList[mapId] = {}
|
|||
|
end
|
|||
|
tableInsert(MapIdToEntityIdList[mapId], v.Id)
|
|||
|
|
|||
|
--初始化实例所在的坐标、对应的实例类型列表
|
|||
|
if not EntityTypeDic[mapId] then
|
|||
|
EntityTypeDic[mapId] = {}
|
|||
|
end
|
|||
|
if not EntityTypeDic[mapId][v.X] then
|
|||
|
EntityTypeDic[mapId][v.X] = {}
|
|||
|
end
|
|||
|
if not EntityTypeDic[mapId][v.X][v.Y] then
|
|||
|
EntityTypeDic[mapId][v.X][v.Y] = {}
|
|||
|
end
|
|||
|
tableInsert(EntityTypeDic[mapId][v.X][v.Y], v.Type)
|
|||
|
|
|||
|
--初始化实例所在的坐标、对应的实例Id列表
|
|||
|
if not EntityIdDic[mapId] then
|
|||
|
EntityIdDic[mapId] = {}
|
|||
|
end
|
|||
|
if not EntityIdDic[mapId][v.X] then
|
|||
|
EntityIdDic[mapId][v.X] = {}
|
|||
|
end
|
|||
|
if not EntityIdDic[mapId][v.X][v.Y] then
|
|||
|
EntityIdDic[mapId][v.X][v.Y] = {}
|
|||
|
end
|
|||
|
tableInsert(EntityIdDic[mapId][v.X][v.Y], v.Id)
|
|||
|
end
|
|||
|
IsInitEntity = true
|
|||
|
end
|
|||
|
|
|||
|
local IsInitChapterGroup = false
|
|||
|
local _DefaultChapterGroupId
|
|||
|
local InitChapterGroup = function()
|
|||
|
if IsInitChapterGroup then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local groupId
|
|||
|
for id, v in pairs(RpgMakerGameChapterConfigs) do
|
|||
|
groupId = v.GroupId
|
|||
|
if not RpgMakerGameChapterGroupToChapterIdList[groupId] then
|
|||
|
RpgMakerGameChapterGroupToChapterIdList[groupId] = {}
|
|||
|
end
|
|||
|
tableInsert(RpgMakerGameChapterGroupToChapterIdList[groupId], id)
|
|||
|
end
|
|||
|
|
|||
|
for groupId, chapterIdList in pairs(RpgMakerGameChapterGroupToChapterIdList) do
|
|||
|
tableSort(chapterIdList, function(chapterIdA, chapterIdB)
|
|||
|
return chapterIdA < chapterIdB
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
for id, v in pairs(RpgMakerGameChapterGroupConfigs) do
|
|||
|
tableInsert(RpgMakerGameChapterGroupIdList, id)
|
|||
|
|
|||
|
if v.IsFirstShow then
|
|||
|
_DefaultChapterGroupId = id
|
|||
|
end
|
|||
|
end
|
|||
|
tableSort(RpgMakerGameChapterGroupIdList, function(groupIdA, groupIdB)
|
|||
|
return groupIdA < groupIdB
|
|||
|
end)
|
|||
|
|
|||
|
IsInitChapterGroup = true
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.Init()
|
|||
|
RpgMakerGameChapterConfigs = XTableManager.ReadByIntKey(TABLE_CHAPTER_PATH, XTable.XTableRpgMakerGameChapter, "Id")
|
|||
|
RpgMakerGameStageConfigs = XTableManager.ReadByIntKey(TABLE_STAGE_PATH, XTable.XTableRpgMakerGameStage, "Id")
|
|||
|
RpgMakerGameStarConditionConfigs = XTableManager.ReadByIntKey(TABLE_STAR_CONDITION_PATH, XTable.XTableRpgMakerGameStarCondition, "Id")
|
|||
|
RpgMakerGameRoleConfigs = XTableManager.ReadByIntKey(TABLE_ROLE_PATH, XTable.XTableRpgMakerGameRole, "Id")
|
|||
|
RpgMakerGameMapConfigs = XTableManager.ReadByIntKey(TABLE_MAP_PATH, XTable.XTableRpgMakerGameMap, "Id")
|
|||
|
RpgMakerGameStartPointConfigs = XTableManager.ReadByIntKey(TABLE_START_POINT_PATH, XTable.XTableRpgMakerGameStartPoint, "Id")
|
|||
|
RpgMakerGameSKillTypeConfigs = XTableManager.ReadByIntKey(TABLE_SKILL_TYPE_PATH, XTable.XTableRpgMakerGameSkillType, "SkillType")
|
|||
|
RpgMakerGameEndPointConfigs = XTableManager.ReadByIntKey(TABLE_END_POINT_PATH, XTable.XTableRpgMakerGameEndPoint, "Id")
|
|||
|
RpgMakerGameBlockConfigs = XTableManager.ReadByIntKey(TABLE_BLOCK_PATH, XTable.XTableRpgMakerGameBlock, "Id")
|
|||
|
RpgMakerGameGapConfigs = XTableManager.ReadByIntKey(TABLE_GAP_PATH, XTable.XTableRpgMakerGameGap, "Id")
|
|||
|
RpgMakerGameMonsterConfigs = XTableManager.ReadByIntKey(TABLE_MONSTER_PATH, XTable.XTableRpgMakerGameMonster, "Id")
|
|||
|
RpgMakerGameTriggerConfigs = XTableManager.ReadByIntKey(TABLE_TRIGGER_PATH, XTable.XTableRpgMakerGameTrigger, "Id")
|
|||
|
RpgMakerGameHintIconConfigs = XTableManager.ReadByStringKey(TABLE_HINT_ICON_PATH, XTable.XTableRpgMakerGameHintIcon, "Key")
|
|||
|
RpgMakerGameActivityConfigs = XTableManager.ReadByIntKey(TABLE_ACTIVITY_PATH, XTable.XTableRpgMakerGameActivity, "Id")
|
|||
|
RpgMakerGameRandomDialogBoxConfigs = XTableManager.ReadByIntKey(TABLE_RANDOM_DIALOG_BOX_PATH, XTable.XTableRpgMakerGameRandomDialogBox, "Id")
|
|||
|
RpgMakerGameHintDialogBoxConfigs = XTableManager.ReadByIntKey(TABLE_HINT_DIALOG_BOX_PATH, XTable.XTableRpgMakerGameHintDialogBox, "StageId")
|
|||
|
RpgMakerGameModelConfigs = XTableManager.ReadByStringKey(TABLE_MODEL_PATH, XTable.XTableRpgMakerGameModel, "Key")
|
|||
|
RpgMakerGameAnimationConfigs = XTableManager.ReadByStringKey(TABLE_ANIMATION_PATH, XTable.XTableRpgMakerGameAnimation, "ModelName")
|
|||
|
RpgMakerGamePlayMainDownHintConfigs = XTableManager.ReadByIntKey(TABLE_PLAY_MAIN_DOWN_HINT_PATH, XTable.XTableRpgMakerGamePlayMainDownHint, "Id")
|
|||
|
RpgMakerGameHintLineConfigs = XTableManager.ReadByIntKey(TABLE_HINT_LINE_PATH, XTable.XTableRpgMakerGameHintLine, "MapId")
|
|||
|
RpgMakerGameShadowConfigs = XTableManager.ReadByIntKey(TABLE_SHADOW_PATH, XTable.XTableRpgMakerGameShadow, "Id")
|
|||
|
RpgMakerGameTrapConfigs = XTableManager.ReadByIntKey(TABLE_TRAP_PATH, XTable.XTableRpgMakerGameTrap, "Id")
|
|||
|
RpgMakerGameElectricFenceConfigs = XTableManager.ReadByIntKey(TABLE_ELECTRIC_FENCE_PATH, XTable.XTableRpgMakerGameElectricFence, "Id")
|
|||
|
RpgMakerGameDeathTitleConfigs = XTableManager.ReadByIntKey(TABLE_DEATH_TITAL_PATH, XTable.XTableRpgMakerGameDeathTitle, "Type")
|
|||
|
RpgMakerGameChapterGroupConfigs = XTableManager.ReadByIntKey(TABLE_CHAPTER_GROUP_PATH, XTable.XTableRpgMakerGameChapterGroup, "Id")
|
|||
|
RpgMakerGameEntityConfigs = XTableManager.ReadByIntKey(TABLE_ENTITY_PATH, XTable.XTableRpgMakerGameEntity, "Id")
|
|||
|
RpgMakerGameTransferPointConfigs = XTableManager.ReadByIntKey(TABLE_TRANSFER_POINT_PATH, XTable.XTableRpgMakerGameTransferPoint, "Id")
|
|||
|
|
|||
|
InitRpgMakerGameChapterIdToStageIdListDic()
|
|||
|
InitRpgMakerGameStageIdToStarConditionIdListDic()
|
|||
|
InitRpgMakerGameRoleIdList()
|
|||
|
InitRpgMakerGameStageIdList()
|
|||
|
InitRpgMakerGameSkillTypeList()
|
|||
|
InitRpgMakerGameMapIdToBlockIdList()
|
|||
|
InitRpgMakerGameMapIdToGapIdList()
|
|||
|
InitRpgMakerGameMapIdToMonsterIdList()
|
|||
|
InitRpgMakerGameMapIdToTriggerIdList()
|
|||
|
InitActivityConfig()
|
|||
|
InitRpgMakerGameRandomDialogBoxIdList()
|
|||
|
InitRpgMakerGameMapIdToShadowIdList()
|
|||
|
InitRpgMakerGameMapIdToTrapIdList()
|
|||
|
InitRpgMakerGameMapIdToElectricFenceIdList()
|
|||
|
end
|
|||
|
|
|||
|
-----------------RpgMakerGameChapter begin--------------------
|
|||
|
local GetRpgMakerGameChapterConfig = function(id)
|
|||
|
local config = RpgMakerGameChapterConfigs[id]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.GetRpgMakerGameChapterConfig", "RpgMakerGameChapterCfg", TABLE_CHAPTER_PATH, "Id", tostring(id))
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameChapterOpenTimeId(id)
|
|||
|
local config = GetRpgMakerGameChapterConfig(id)
|
|||
|
return config.OpenTimeId
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameChapterName(id)
|
|||
|
local config = GetRpgMakerGameChapterConfig(id)
|
|||
|
return config.Name
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameChapterTagBtnBG(id)
|
|||
|
local config = GetRpgMakerGameChapterConfig(id)
|
|||
|
return config.TagBtnBG
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameChapterPrefab(id)
|
|||
|
local config = GetRpgMakerGameChapterConfig(id)
|
|||
|
return config.Prefab
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameStageIdList(chapterId)
|
|||
|
return RpgMakerGameChapterIdToStageIdListDic[chapterId] or {}
|
|||
|
end
|
|||
|
-----------------RpgMakerGameChapter end--------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameStage begin--------------------
|
|||
|
local GetRpgMakerGameStageConfig = function(id)
|
|||
|
local config = RpgMakerGameStageConfigs[id]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.GetRpgMakerGameStageConfig", "RpgMakerGameStageConfig", TABLE_STAGE_PATH, "Id", tostring(id))
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameStageChapterId(id)
|
|||
|
local config = GetRpgMakerGameStageConfig(id)
|
|||
|
return config.ChapterId
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameStagePreStage(id)
|
|||
|
local config = GetRpgMakerGameStageConfig(id)
|
|||
|
return config.PreStage
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameStageBG(id)
|
|||
|
local config = GetRpgMakerGameStageConfig(id)
|
|||
|
return config.BG
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameStagePrefab(id)
|
|||
|
local config = GetRpgMakerGameStageConfig(id)
|
|||
|
return config.Prefab
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameStarConditionIdList(stageId)
|
|||
|
return RpgMakerGameStageIdToStarConditionIdListDic[stageId] or {}
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameStageName(id)
|
|||
|
local config = GetRpgMakerGameStageConfig(id)
|
|||
|
return config.Name or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameStageHint(id)
|
|||
|
local config = GetRpgMakerGameStageConfig(id)
|
|||
|
return config.StageHint or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameAllStageIdList()
|
|||
|
return RpgMakerGameStageIdList
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameNextStageId(currStageId)
|
|||
|
local chapterId = XRpgMakerGameConfigs.GetRpgMakerGameStageChapterId(currStageId)
|
|||
|
local stageIdList = XRpgMakerGameConfigs.GetRpgMakerGameStageIdList(chapterId)
|
|||
|
local nextStageId = 0
|
|||
|
for i, stageId in ipairs(stageIdList or {}) do
|
|||
|
if stageId == currStageId then
|
|||
|
nextStageId = stageIdList[i + 1] or 0
|
|||
|
return nextStageId
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
return nextStageId
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameStageLoseHintList(id)
|
|||
|
local config = GetRpgMakerGameStageConfig(id)
|
|||
|
return config.LoseHint or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameNumberName(id)
|
|||
|
local config = GetRpgMakerGameStageConfig(id)
|
|||
|
return config.NumberName or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetStageHintCost(id)
|
|||
|
local config = GetRpgMakerGameStageConfig(id)
|
|||
|
return config.HintCost
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetStageAnswerCost(id)
|
|||
|
local config = GetRpgMakerGameStageConfig(id)
|
|||
|
return config.AnswerCost
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetStageMapId(id)
|
|||
|
local config = GetRpgMakerGameStageConfig(id)
|
|||
|
return config.MapId
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetStageUseRoleId(id)
|
|||
|
local config = GetRpgMakerGameStageConfig(id)
|
|||
|
return config.UseRoleId
|
|||
|
end
|
|||
|
-----------------RpgMakerGameStage end--------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameStarCondition 通关获得的星星条件 begin--------------------
|
|||
|
local GetRpgMakerGameStarConditionConfig = function(id)
|
|||
|
local config = RpgMakerGameStarConditionConfigs[id]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.GetRpgMakerGameStarConditionConfig", "RpgMakerGameStarConditionConfig", TABLE_STAR_CONDITION_PATH, "Id", tostring(id))
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameStarConditionStar(id)
|
|||
|
local config = GetRpgMakerGameStarConditionConfig(id)
|
|||
|
return config.Star
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameStarConditionStepCount(id)
|
|||
|
local config = GetRpgMakerGameStarConditionConfig(id)
|
|||
|
return config.StepCount
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameStarConditionMonsterCount(id)
|
|||
|
local config = GetRpgMakerGameStarConditionConfig(id)
|
|||
|
return config.MonsterCount
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameStarConditionMonsterBossCount(id)
|
|||
|
local config = GetRpgMakerGameStarConditionConfig(id)
|
|||
|
return config.MonsterBossCount or 0
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameStarConditionDesc(id)
|
|||
|
local config = GetRpgMakerGameStarConditionConfig(id)
|
|||
|
return config.ConditionDesc
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameTotalStar(chapterId)
|
|||
|
local stageIdList = XRpgMakerGameConfigs.GetRpgMakerGameStageIdList(chapterId)
|
|||
|
local starConditionIdList
|
|||
|
local totalStarCount = 0
|
|||
|
for _, stageId in ipairs(stageIdList) do
|
|||
|
starConditionIdList = XRpgMakerGameConfigs.GetRpgMakerGameStarConditionIdList(stageId)
|
|||
|
for _, starConditionId in ipairs(starConditionIdList) do
|
|||
|
totalStarCount = totalStarCount + XRpgMakerGameConfigs.GetRpgMakerGameStarConditionStar(starConditionId)
|
|||
|
end
|
|||
|
end
|
|||
|
return totalStarCount
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameStageTotalStar(stageId)
|
|||
|
local starConditionIdList = XRpgMakerGameConfigs.GetRpgMakerGameStarConditionIdList(stageId)
|
|||
|
local totalCount = 0
|
|||
|
for _, starConditionId in ipairs(starConditionIdList) do
|
|||
|
totalCount = totalCount + XRpgMakerGameConfigs.GetRpgMakerGameStarConditionStar(starConditionId)
|
|||
|
end
|
|||
|
return totalCount
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetStarConditionReward(id)
|
|||
|
local config = GetRpgMakerGameStarConditionConfig(id)
|
|||
|
return config.Reward
|
|||
|
end
|
|||
|
-----------------RpgMakerGameStarCondition 通关获得的星星条件 end----------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameRole 角色列表 begin--------------------
|
|||
|
local GetRpgMakerGameRoleConfig = function(id)
|
|||
|
local config = RpgMakerGameRoleConfigs[id]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.GetRpgMakerGameRoleConfig", "RpgMakerGameRoleConfigs", TABLE_ROLE_PATH, "Id", tostring(id))
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameRoleIdList()
|
|||
|
return RpgMakerGameRoleIdList
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameRoleUnlockChapterId(id)
|
|||
|
local config = GetRpgMakerGameRoleConfig(id)
|
|||
|
return config.UnlockChapterId
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameRoleName(id)
|
|||
|
local config = GetRpgMakerGameRoleConfig(id)
|
|||
|
return config.Name or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameRoleStyle(id)
|
|||
|
local config = GetRpgMakerGameRoleConfig(id)
|
|||
|
return config.Style or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameRoleSkillType(id)
|
|||
|
local config = GetRpgMakerGameRoleConfig(id)
|
|||
|
return config.SkillType or nil
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameRoleModelAssetPath(id)
|
|||
|
local config = GetRpgMakerGameRoleConfig(id)
|
|||
|
return config.ModelAssetPath
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameRoleInfoName(id)
|
|||
|
local config = GetRpgMakerGameRoleConfig(id)
|
|||
|
return config.InfoName or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameRoleInfo(id)
|
|||
|
local config = GetRpgMakerGameRoleConfig(id)
|
|||
|
return config.Info or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameRoleHeadPath(id)
|
|||
|
local config = GetRpgMakerGameRoleConfig(id)
|
|||
|
return config.HeadPath
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameRoleLockTipsDesc(id)
|
|||
|
local config = GetRpgMakerGameRoleConfig(id)
|
|||
|
return config.LockTipsDesc or ""
|
|||
|
end
|
|||
|
|
|||
|
--根据解锁的关卡id,返回对应的角色id列表
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameRoleIdListByUnlockChapterId(unlockChapterId)
|
|||
|
local roleIdList = XRpgMakerGameConfigs.GetRpgMakerGameRoleIdList()
|
|||
|
local unlockChapterIdCfg
|
|||
|
local roleIdList = {}
|
|||
|
for _, roleId in ipairs(roleIdList) do
|
|||
|
unlockChapterIdCfg = XRpgMakerGameConfigs.GetRpgMakerGameRoleUnlockChapterId(roleId)
|
|||
|
if unlockChapterIdCfg == unlockChapterId then
|
|||
|
tableInsert(roleIdList, roleId)
|
|||
|
end
|
|||
|
end
|
|||
|
return roleIdList
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRoleSkillType(id)
|
|||
|
local config = GetRpgMakerGameRoleConfig(id)
|
|||
|
return config.SkillType or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRoleGraphicBefore(id)
|
|||
|
local config = GetRpgMakerGameRoleConfig(id)
|
|||
|
return config.GraphicBefore
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRoleGraphicAfter(id)
|
|||
|
local config = GetRpgMakerGameRoleConfig(id)
|
|||
|
return config.GraphicAfter
|
|||
|
end
|
|||
|
-----------------RpgMakerGameRole 角色列表 end--------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameSkillType 技能类型列表 begin--------------------
|
|||
|
local GetRpgMakerGameSkillTypeConfig = function(skillType)
|
|||
|
local config = RpgMakerGameSKillTypeConfigs[skillType]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.GetRpgMakerGameSkillTypeConfig", "RpgMakerGameSkillTypeConfigs", TABLE_SKILL_TYPE_PATH, "skillType", tostring(skillType))
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameSkillTypeIcon(skillType)
|
|||
|
local config = GetRpgMakerGameSkillTypeConfig(skillType)
|
|||
|
return config.Icon
|
|||
|
end
|
|||
|
-----------------RpgMakerGameSkillType 技能类型列表 end--------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameMap 地图 begin-----------------------
|
|||
|
local GetRpgMakerGameMapConfigs = function(id)
|
|||
|
local config = RpgMakerGameMapConfigs[id]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.GetRpgMakerGameMapConfigs", "RpgMakerGameMapConfigs", TABLE_MAP_PATH, "Id", tostring(id))
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameMaxRound(id)
|
|||
|
local config = GetRpgMakerGameMapConfigs(id)
|
|||
|
return config.MaxRound
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameStartPointId(id)
|
|||
|
local config = GetRpgMakerGameMapConfigs(id)
|
|||
|
return config.StartPointId
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameEndPointId(id)
|
|||
|
local config = GetRpgMakerGameMapConfigs(id)
|
|||
|
return config.EndPointId
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGamePrefab(id)
|
|||
|
local config = GetRpgMakerGameMapConfigs(id)
|
|||
|
return config.Prefab
|
|||
|
end
|
|||
|
|
|||
|
--行
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameRow(id)
|
|||
|
local config = GetRpgMakerGameMapConfigs(id)
|
|||
|
return config.Row
|
|||
|
end
|
|||
|
|
|||
|
--列
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameCol(id)
|
|||
|
local config = GetRpgMakerGameMapConfigs(id)
|
|||
|
return config.Col
|
|||
|
end
|
|||
|
-----------------RpgMakerGameMap 地图 end-------------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameStartPoint 玩家起点 begin-----------------------
|
|||
|
local GetRpgMakerGameStartPointConfigs = function(id)
|
|||
|
local config = RpgMakerGameStartPointConfigs[id]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.GetRpgMakerGameStartPointConfigs", "RpgMakerGameStartPointConfigs", TABLE_START_POINT_PATH, "Id", tostring(id))
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameStartPointX(id)
|
|||
|
local config = GetRpgMakerGameStartPointConfigs(id)
|
|||
|
return config.X
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameStartPointY(id)
|
|||
|
local config = GetRpgMakerGameStartPointConfigs(id)
|
|||
|
return config.Y
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameStartPointDirection(id)
|
|||
|
local config = GetRpgMakerGameStartPointConfigs(id)
|
|||
|
return config.Direction
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.IsRpgMakerGameStartPoint(mapId, x, y)
|
|||
|
local startPointId = XRpgMakerGameConfigs.GetRpgMakerGameStartPointId(mapId)
|
|||
|
local startPointX = XRpgMakerGameConfigs.GetRpgMakerGameStartPointX(startPointId)
|
|||
|
local startPointY = XRpgMakerGameConfigs.GetRpgMakerGameStartPointY(startPointId)
|
|||
|
return startPointX == x and startPointY == y
|
|||
|
end
|
|||
|
-----------------RpgMakerGameStartPoint 玩家起点 end-------------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameEndPoint 终点 begin-----------------------
|
|||
|
local GetRpgMakerGameEndPointConfigs = function(id)
|
|||
|
local config = RpgMakerGameEndPointConfigs[id]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.GetRpgMakerGameEndPointConfigs", "RpgMakerGameEndPointConfigs", TABLE_END_POINT_PATH, "Id", tostring(id))
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameEndPointX(id)
|
|||
|
local config = GetRpgMakerGameEndPointConfigs(id)
|
|||
|
return config.X
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameEndPointY(id)
|
|||
|
local config = GetRpgMakerGameEndPointConfigs(id)
|
|||
|
return config.Y
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameEndPointType(id)
|
|||
|
local config = GetRpgMakerGameEndPointConfigs(id)
|
|||
|
return config.Type
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.IsRpgMakerGameEndPoint(mapId, x, y)
|
|||
|
local endPointId = XRpgMakerGameConfigs.GetRpgMakerGameEndPointId(mapId)
|
|||
|
local endPointX = XRpgMakerGameConfigs.GetRpgMakerGameEndPointX(endPointId)
|
|||
|
local endPointY = XRpgMakerGameConfigs.GetRpgMakerGameEndPointY(endPointId)
|
|||
|
return endPointX == x and endPointY == y
|
|||
|
end
|
|||
|
-----------------RpgMakerGameEndPoint 终点 end-------------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameBlock 阻挡物 begin-----------------------
|
|||
|
local GetRpgMakerGameBlockConfigs = function(id)
|
|||
|
local config = RpgMakerGameBlockConfigs[id]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.GetRpgMakerGameBlockConfigs", "RpgMakerGameBlockConfigs", TABLE_BLOCK_PATH, "Id", tostring(id))
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameBlockRow(id)
|
|||
|
local config = GetRpgMakerGameBlockConfigs(id)
|
|||
|
return config.Row
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameBlockColList(id)
|
|||
|
local config = GetRpgMakerGameBlockConfigs(id)
|
|||
|
return config.Col
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameMapIdToBlockIdList(mapId)
|
|||
|
return RpgMakerGameMapIdToBlockIdList[mapId] or {}
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.IsRpgMakerGameHaveBlock(mapId)
|
|||
|
local blockIdList = XRpgMakerGameConfigs.GetRpgMakerGameMapIdToBlockIdList(mapId)
|
|||
|
local colList
|
|||
|
for _, blockId in ipairs(blockIdList) do
|
|||
|
colList = XRpgMakerGameConfigs.GetRpgMakerGameBlockColList(blockId)
|
|||
|
for _, col in ipairs(colList) do
|
|||
|
if not XTool.IsNumberValid(col) then
|
|||
|
return true
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
return false
|
|||
|
end
|
|||
|
-----------------RpgMakerGameBlock 阻挡物 end-------------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameGap 墙 begin-----------------------
|
|||
|
local GetRpgMakerGameGapConfigs = function(id)
|
|||
|
local config = RpgMakerGameGapConfigs[id]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.GetRpgMakerGameGapConfigs", "RpgMakerGameGapConfigs", TABLE_GAP_PATH, "Id", tostring(id))
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameGapX(id)
|
|||
|
local config = GetRpgMakerGameGapConfigs(id)
|
|||
|
return config.X
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameGapY(id)
|
|||
|
local config = GetRpgMakerGameGapConfigs(id)
|
|||
|
return config.Y
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameGapDirection(id)
|
|||
|
local config = GetRpgMakerGameGapConfigs(id)
|
|||
|
return config.Direction
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameMapIdToGapIdList(id)
|
|||
|
return RpgMakerGameMapIdToGapIdList[id] or {}
|
|||
|
end
|
|||
|
|
|||
|
--获得相同x和y坐标的gapId列表
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameSameXYGapIdIdList(mapId, x, y)
|
|||
|
local gapIdList = XRpgMakerGameConfigs.GetRpgMakerGameMapIdToGapIdList(mapId)
|
|||
|
local gapX
|
|||
|
local gapY
|
|||
|
local sameXYGapIdList = {}
|
|||
|
for _, gapId in ipairs(gapIdList) do
|
|||
|
gapX = XRpgMakerGameConfigs.GetRpgMakerGameGapX(gapId)
|
|||
|
gapY = XRpgMakerGameConfigs.GetRpgMakerGameGapY(gapId)
|
|||
|
if gapX == x and gapY == y then
|
|||
|
tableInsert(sameXYGapIdList, gapId)
|
|||
|
end
|
|||
|
end
|
|||
|
return sameXYGapIdList
|
|||
|
end
|
|||
|
-----------------RpgMakerGameGap 墙 end-------------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameMonster 怪物 begin-----------------------
|
|||
|
local GetRpgMakerGameMonsterConfigs = function(id)
|
|||
|
local config = RpgMakerGameMonsterConfigs[id]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.GetRpgMakerGameMonsterConfigs", "RpgMakerGameMonsterConfigs", TABLE_MONSTER_PATH, "Id", tostring(id))
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameMonsterType(id)
|
|||
|
local config = GetRpgMakerGameMonsterConfigs(id)
|
|||
|
return config.Type
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameMonsterSkillType(id)
|
|||
|
local config = GetRpgMakerGameMonsterConfigs(id)
|
|||
|
return config.SkillType
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameMonsterX(id)
|
|||
|
local config = GetRpgMakerGameMonsterConfigs(id)
|
|||
|
return config.X
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameMonsterY(id)
|
|||
|
local config = GetRpgMakerGameMonsterConfigs(id)
|
|||
|
return config.Y
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameMonsterDirection(id)
|
|||
|
local config = GetRpgMakerGameMonsterConfigs(id)
|
|||
|
return config.Direction
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameMonsterViewFront(id)
|
|||
|
local config = GetRpgMakerGameMonsterConfigs(id)
|
|||
|
return config.ViewFront
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameMonsterViewBack(id)
|
|||
|
local config = GetRpgMakerGameMonsterConfigs(id)
|
|||
|
return config.ViewBack
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameMonsterViewLeft(id)
|
|||
|
local config = GetRpgMakerGameMonsterConfigs(id)
|
|||
|
return config.ViewLeft
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameMonsterViewRight(id)
|
|||
|
local config = GetRpgMakerGameMonsterConfigs(id)
|
|||
|
return config.ViewRight
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameSentryFront(id)
|
|||
|
local config = GetRpgMakerGameMonsterConfigs(id)
|
|||
|
return config.SentryFront
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameSentryBack(id)
|
|||
|
local config = GetRpgMakerGameMonsterConfigs(id)
|
|||
|
return config.SentryBack
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameSentryLeft(id)
|
|||
|
local config = GetRpgMakerGameMonsterConfigs(id)
|
|||
|
return config.SentryLeft
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameSentryRight(id)
|
|||
|
local config = GetRpgMakerGameMonsterConfigs(id)
|
|||
|
return config.SentryRight
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameSentryStopRound(id)
|
|||
|
local config = GetRpgMakerGameMonsterConfigs(id)
|
|||
|
return config.SentryStopRound
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameMapIdToMonsterIdList(mapId)
|
|||
|
return RpgMakerGameMapIdToMonsterIdList[mapId] or {}
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameMonsterPrefab(id)
|
|||
|
local config = GetRpgMakerGameMonsterConfigs(id)
|
|||
|
return config.Prefab
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameMonsterId(mapId, x, y)
|
|||
|
local monsterIdList = XRpgMakerGameConfigs.GetRpgMakerGameMapIdToMonsterIdList(mapId)
|
|||
|
local monsterX
|
|||
|
local monsterY
|
|||
|
for _, monsterId in ipairs(monsterIdList) do
|
|||
|
monsterX = XRpgMakerGameConfigs.GetRpgMakerGameMonsterX(monsterId)
|
|||
|
monsterY = XRpgMakerGameConfigs.GetRpgMakerGameMonsterY(monsterId)
|
|||
|
if monsterX == x and monsterY == y then
|
|||
|
return monsterId
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameMonsterPatrolIdList(id)
|
|||
|
local config = GetRpgMakerGameMonsterConfigs(id)
|
|||
|
return config.PatrolId
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.IsRpgMakerGameMonsterTriggerEnd(id)
|
|||
|
local config = GetRpgMakerGameMonsterConfigs(id)
|
|||
|
return XTool.IsNumberValid(config.TriggerEnd)
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.IsRpgMakerGameHaveMonster(mapId, monsterType)
|
|||
|
local monsterIdList = XRpgMakerGameConfigs.GetRpgMakerGameMapIdToMonsterIdList(mapId)
|
|||
|
local isHaveNormalIcon, isHaveCrystalIcon, isHaveFlameIcon, isHaveRaidenIcon, isHaveDarkIcon
|
|||
|
local typeCfg
|
|||
|
local skillCfg
|
|||
|
for _, monsterId in ipairs(monsterIdList) do
|
|||
|
typeCfg = XRpgMakerGameConfigs.GetRpgMakerGameMonsterType(monsterId)
|
|||
|
skillCfg = XRpgMakerGameConfigs.GetRpgMakerGameMonsterSkillType(monsterId)
|
|||
|
if typeCfg == monsterType then
|
|||
|
if monsterType == XRpgMakerGameConfigs.XRpgMakerGameMonsterType.Human then
|
|||
|
return true
|
|||
|
elseif skillCfg then
|
|||
|
if skillCfg == XRpgMakerGameConfigs.XRpgMakerGameRoleSkillType.Crystal then isHaveCrystalIcon = true
|
|||
|
elseif skillCfg == XRpgMakerGameConfigs.XRpgMakerGameRoleSkillType.Flame then isHaveFlameIcon = true
|
|||
|
elseif skillCfg == XRpgMakerGameConfigs.XRpgMakerGameRoleSkillType.Raiden then isHaveRaidenIcon = true
|
|||
|
elseif skillCfg == XRpgMakerGameConfigs.XRpgMakerGameRoleSkillType.Dark then isHaveDarkIcon = true
|
|||
|
else isHaveNormalIcon = true end
|
|||
|
else
|
|||
|
isHaveNormalIcon = true
|
|||
|
end
|
|||
|
end
|
|||
|
if isHaveNormalIcon and isHaveCrystalIcon and isHaveFlameIcon and isHaveRaidenIcon and isHaveDarkIcon then
|
|||
|
break
|
|||
|
end
|
|||
|
end
|
|||
|
return isHaveNormalIcon, isHaveCrystalIcon, isHaveFlameIcon, isHaveRaidenIcon, isHaveDarkIcon
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetMonsterSkillType(id)
|
|||
|
local config = GetRpgMakerGameMonsterConfigs(id)
|
|||
|
return config.SkillType
|
|||
|
end
|
|||
|
-----------------RpgMakerGameMonster 怪物 end-------------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameTrigger 机关 begin-----------------------
|
|||
|
local GetRpgMakerGameTriggerConfigs = function(id)
|
|||
|
local config = RpgMakerGameTriggerConfigs[id]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.GetRpgMakerGameTriggerConfigs", "RpgMakerGameTriggerConfigs", TABLE_TRIGGER_PATH, "Id", tostring(id))
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameTriggerX(id)
|
|||
|
local config = GetRpgMakerGameTriggerConfigs(id)
|
|||
|
return config.X
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameTriggerY(id)
|
|||
|
local config = GetRpgMakerGameTriggerConfigs(id)
|
|||
|
return config.Y
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameTriggerDefaultBlock(id)
|
|||
|
local config = GetRpgMakerGameTriggerConfigs(id)
|
|||
|
return config.DefaultBlock
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameTriggerType(id)
|
|||
|
local config = GetRpgMakerGameTriggerConfigs(id)
|
|||
|
return config.Type
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameMapIdToTriggerIdList(mapId)
|
|||
|
return RpgMakerGameMapIdToTriggerIdList[mapId] or {}
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameTriggerId(mapId, x, y)
|
|||
|
local triggerIdList = XRpgMakerGameConfigs.GetRpgMakerGameMapIdToTriggerIdList(mapId)
|
|||
|
local triggerX
|
|||
|
local triggerY
|
|||
|
for _, triggerId in ipairs(triggerIdList) do
|
|||
|
triggerX = XRpgMakerGameConfigs.GetRpgMakerGameTriggerX(triggerId)
|
|||
|
triggerY = XRpgMakerGameConfigs.GetRpgMakerGameTriggerY(triggerId)
|
|||
|
if triggerX == x and triggerY == y then
|
|||
|
return triggerId
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.IsRpgMakerGameHaveTrigger(mapId)
|
|||
|
local isHaveType1Trigger, isHaveType2Trigger, isHaveType3Trigger, isHaveElectricFencTrigger
|
|||
|
local triggerIdList = XRpgMakerGameConfigs.GetRpgMakerGameMapIdToTriggerIdList(mapId)
|
|||
|
local typeCfg
|
|||
|
for _, triggerId in ipairs(triggerIdList) do
|
|||
|
typeCfg = XRpgMakerGameConfigs.GetRpgMakerGameTriggerType(triggerId)
|
|||
|
if typeCfg == XRpgMakerGameConfigs.XRpgMakerGameTriggerType.Trigger1 then
|
|||
|
isHaveType1Trigger = true
|
|||
|
elseif typeCfg == XRpgMakerGameConfigs.XRpgMakerGameTriggerType.Trigger2 then
|
|||
|
isHaveType2Trigger = true
|
|||
|
elseif typeCfg == XRpgMakerGameConfigs.XRpgMakerGameTriggerType.Trigger3 then
|
|||
|
isHaveType3Trigger = true
|
|||
|
elseif typeCfg == XRpgMakerGameConfigs.XRpgMakerGameTriggerType.TriggerElectricFence then
|
|||
|
isHaveElectricFencTrigger = true
|
|||
|
end
|
|||
|
|
|||
|
if isHaveType1Trigger and isHaveType2Trigger and isHaveType3Trigger and isHaveElectricFencTrigger then
|
|||
|
break
|
|||
|
end
|
|||
|
end
|
|||
|
return isHaveType1Trigger, isHaveType2Trigger, isHaveType3Trigger, isHaveElectricFencTrigger
|
|||
|
end
|
|||
|
-----------------RpgMakerGameTrigger 机关 end-------------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameHintIcon 通关提示图标 begin-----------------------
|
|||
|
local GetRpgMakerGameHintIconConfig = function(key)
|
|||
|
local config = RpgMakerGameHintIconConfigs[key]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.GetRpgMakerGameHintIconConfig", "RpgMakerGameHintIconConfigs", TABLE_HINT_ICON_PATH, "Key", key)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameHintIconKeyList()
|
|||
|
local hintIconKeyList = {}
|
|||
|
for k in pairs(RpgMakerGameHintIconConfigs) do
|
|||
|
tableInsert(hintIconKeyList, k)
|
|||
|
end
|
|||
|
return hintIconKeyList
|
|||
|
end
|
|||
|
|
|||
|
--只获取该地图上有对应对象的图标
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameHintIconKeyListByMapId(mapId, isNotShowLine)
|
|||
|
local hintIconKeyList = {}
|
|||
|
if not XTool.IsNumberValid(mapId) then
|
|||
|
return hintIconKeyList
|
|||
|
end
|
|||
|
|
|||
|
local isHaveBlock = XRpgMakerGameConfigs.IsRpgMakerGameHaveBlock(mapId)
|
|||
|
-- 不同属性库洛洛不同图标
|
|||
|
local isHaveNormalMonster, isHaveCrystalMonsterIcon, isHaveFlameMonsterIcon, isHaveRaidenMonsterIcon, isHaveDarkMonsterIcon
|
|||
|
= XRpgMakerGameConfigs.IsRpgMakerGameHaveMonster(mapId, XRpgMakerGameConfigs.XRpgMakerGameMonsterType.Normal)
|
|||
|
local isHaveNormalBoss, isHaveCrystalBossIcon, isHaveFlameBossIcon, isHaveRaidenBossIcon, isHaveDarkBossIcon
|
|||
|
= XRpgMakerGameConfigs.IsRpgMakerGameHaveMonster(mapId, XRpgMakerGameConfigs.XRpgMakerGameMonsterType.BOSS)
|
|||
|
|
|||
|
local isHaveType1Trigger, isHaveType2Trigger, isHaveType3Trigger, isHaveElectricFencTrigger = XRpgMakerGameConfigs.IsRpgMakerGameHaveTrigger(mapId)
|
|||
|
local isHaveGap = not XTool.IsTableEmpty(XRpgMakerGameConfigs.GetRpgMakerGameMapIdToGapIdList(mapId))
|
|||
|
local isHaveShadow = not XTool.IsTableEmpty(XRpgMakerGameConfigs.GetRpgMakerGameMapIdToShadowIdList(mapId))
|
|||
|
local isHaveElectricFence = not XTool.IsTableEmpty(XRpgMakerGameConfigs.GetRpgMakerGameMapIdToElectricFenceIdList(mapId))
|
|||
|
local isHaveHuman = XRpgMakerGameConfigs.IsRpgMakerGameHaveMonster(mapId, XRpgMakerGameConfigs.XRpgMakerGameMonsterType.Human)
|
|||
|
local isHaveTrap = not XTool.IsTableEmpty(XRpgMakerGameConfigs.GetRpgMakerGameMapIdToTrapIdList(mapId))
|
|||
|
-- 地图实体:1 水面、2 冰面、3 草圃、4 钢板
|
|||
|
local isHaveEntity1, isHaveEntity2, isHaveEntity3, isHaveEntity4 = XRpgMakerGameConfigs.IsRpgMakerGameHaveEntity(mapId)
|
|||
|
local isHaveTransferPoint1, isHaveTransferPoint2, isHaveTransferPoint3 = XRpgMakerGameConfigs.IsRpgMakerGameHaveTransferPoint(mapId)
|
|||
|
|
|||
|
local isInsert = true
|
|||
|
for k in pairs(RpgMakerGameHintIconConfigs) do
|
|||
|
if k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.BlockIcon then
|
|||
|
isInsert = isHaveBlock
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.CrystalMonsterIcon then
|
|||
|
isInsert = isHaveCrystalMonsterIcon
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.FlameMonsterIcon then
|
|||
|
isInsert = isHaveFlameMonsterIcon
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.RaidenMonsterIcon then
|
|||
|
isInsert = isHaveRaidenMonsterIcon
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.DarkMonsterIcon then
|
|||
|
isInsert = isHaveDarkMonsterIcon
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.NormalMonsterIcon then
|
|||
|
isInsert = isHaveNormalMonster
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.CrystalBossIcon then
|
|||
|
isInsert = isHaveCrystalBossIcon
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.FlameBossIcon then
|
|||
|
isInsert = isHaveFlameBossIcon
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.RaidenBossIcon then
|
|||
|
isInsert = isHaveRaidenBossIcon
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.DarkBossIcon then
|
|||
|
isInsert = isHaveDarkBossIcon
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.BossIcon then
|
|||
|
isInsert = isHaveNormalBoss
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.TriggerIcon1 then
|
|||
|
isInsert = isHaveType1Trigger
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.TriggerIcon2 then
|
|||
|
isInsert = isHaveType2Trigger
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.TriggerIcon3 then
|
|||
|
isInsert = isHaveType3Trigger
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.ElectricFencTrigger then
|
|||
|
isInsert = isHaveElectricFencTrigger
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.GapIcon then
|
|||
|
isInsert = isHaveGap
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.ShadowIcon then
|
|||
|
isInsert = isHaveShadow
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.ElectricFenceIcon then
|
|||
|
isInsert = isHaveElectricFence
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.HumanIcon then
|
|||
|
isInsert = isHaveHuman
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.TrapIcon then
|
|||
|
isInsert = isHaveTrap
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.EntityIcon1 then
|
|||
|
isInsert = isHaveEntity1
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.EntityIcon2 then
|
|||
|
isInsert = isHaveEntity2
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.EntityIcon3 then
|
|||
|
isInsert = isHaveEntity3
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.EntityIcon4 then
|
|||
|
isInsert = isHaveEntity4
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.TransferPointIcon1 then
|
|||
|
isInsert = isHaveTransferPoint1
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.TransferPointIcon2 then
|
|||
|
isInsert = isHaveTransferPoint2
|
|||
|
elseif k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.TransferPointIcon3 then
|
|||
|
isInsert = isHaveTransferPoint3
|
|||
|
elseif isNotShowLine and k == XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.MoveLineIcon then
|
|||
|
isInsert = false
|
|||
|
end
|
|||
|
|
|||
|
if isInsert then
|
|||
|
tableInsert(hintIconKeyList, k)
|
|||
|
end
|
|||
|
isInsert = true
|
|||
|
end
|
|||
|
return hintIconKeyList
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameHintIcon(key)
|
|||
|
local config = GetRpgMakerGameHintIconConfig(key)
|
|||
|
return config.Icon
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameHintLayer(key)
|
|||
|
local config = GetRpgMakerGameHintIconConfig(key)
|
|||
|
return config.Layer
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameHintIconName(key)
|
|||
|
local config = GetRpgMakerGameHintIconConfig(key)
|
|||
|
return config.Name
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetMonsterIconKey(monsterType, skillType)
|
|||
|
if XRpgMakerGameConfigs.XRpgMakerGameMonsterType.BOSS == monsterType then
|
|||
|
if skillType then
|
|||
|
if skillType == XRpgMakerGameConfigs.XRpgMakerGameRoleSkillType.Crystal then
|
|||
|
return XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.CrystalBossIcon
|
|||
|
elseif skillType == XRpgMakerGameConfigs.XRpgMakerGameRoleSkillType.Flame then
|
|||
|
return XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.FlameBossIcon
|
|||
|
elseif skillType == XRpgMakerGameConfigs.XRpgMakerGameRoleSkillType.Raiden then
|
|||
|
return XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.RaidenBossIcon
|
|||
|
elseif skillType == XRpgMakerGameConfigs.XRpgMakerGameRoleSkillType.Dark then
|
|||
|
return XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.DarkBossIcon
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
return XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.BossIcon
|
|||
|
end
|
|||
|
|
|||
|
if XRpgMakerGameConfigs.XRpgMakerGameMonsterType.Human == monsterType then
|
|||
|
return XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.HumanIcon
|
|||
|
end
|
|||
|
|
|||
|
if skillType then
|
|||
|
if skillType == XRpgMakerGameConfigs.XRpgMakerGameRoleSkillType.Crystal then
|
|||
|
return XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.CrystalMonsterIcon
|
|||
|
elseif skillType == XRpgMakerGameConfigs.XRpgMakerGameRoleSkillType.Flame then
|
|||
|
return XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.FlameMonsterIcon
|
|||
|
elseif skillType == XRpgMakerGameConfigs.XRpgMakerGameRoleSkillType.Raiden then
|
|||
|
return XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.RaidenMonsterIcon
|
|||
|
elseif skillType == XRpgMakerGameConfigs.XRpgMakerGameRoleSkillType.Dark then
|
|||
|
return XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.DarkMonsterIcon
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
return XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.NormalMonsterIcon
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetTriggerIconKey(triggerType)
|
|||
|
if triggerType == XRpgMakerGameConfigs.XRpgMakerGameTriggerType.Trigger1 then
|
|||
|
return XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.TriggerIcon1
|
|||
|
end
|
|||
|
|
|||
|
if triggerType == XRpgMakerGameConfigs.XRpgMakerGameTriggerType.Trigger2 then
|
|||
|
return XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.TriggerIcon2
|
|||
|
end
|
|||
|
|
|||
|
if triggerType == XRpgMakerGameConfigs.XRpgMakerGameTriggerType.TriggerElectricFence then
|
|||
|
return XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.ElectricFencTrigger
|
|||
|
end
|
|||
|
|
|||
|
return XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.TriggerIcon3
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetEntityIconKey(entityType)
|
|||
|
if entityType == XRpgMakerGameConfigs.XRpgMakerGameEntityType.Water then
|
|||
|
return XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.EntityIcon1
|
|||
|
end
|
|||
|
|
|||
|
if entityType == XRpgMakerGameConfigs.XRpgMakerGameEntityType.Ice then
|
|||
|
return XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.EntityIcon2
|
|||
|
end
|
|||
|
|
|||
|
if entityType == XRpgMakerGameConfigs.XRpgMakerGameEntityType.Grass then
|
|||
|
return XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.EntityIcon3
|
|||
|
end
|
|||
|
|
|||
|
return XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.EntityIcon4
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetTransferPointIconKey(transferPointColor)
|
|||
|
if transferPointColor == XRpgMakerGameConfigs.XRpgMakerTransferPointColor.Green then
|
|||
|
return XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.TransferPointIcon1
|
|||
|
end
|
|||
|
|
|||
|
if transferPointColor == XRpgMakerGameConfigs.XRpgMakerTransferPointColor.Yellow then
|
|||
|
return XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.TransferPointIcon2
|
|||
|
end
|
|||
|
|
|||
|
return XRpgMakerGameConfigs.RpgMakerGameHintIconKeyMaps.TransferPointIcon3
|
|||
|
end
|
|||
|
-----------------RpgMakerGameHintIcon 通关提示图标 end-------------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameActivity 活动相关 begin-----------------------
|
|||
|
local GetRpgMakerGameActivityConfig = function(id)
|
|||
|
local config = RpgMakerGameActivityConfigs[id]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.GetRpgMakerGameActivityConfig", "RpgMakerGameActivityConfigs", TABLE_ACTIVITY_PATH, "Id", id)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetDefaultActivityId()
|
|||
|
return DefaultActivityId
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameActivityTaskTimeLimitId(id)
|
|||
|
local config = GetRpgMakerGameActivityConfig(id)
|
|||
|
return config.TaskTimeLimitId
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameActivityTimeId(id)
|
|||
|
local config = GetRpgMakerGameActivityConfig(id)
|
|||
|
return config.TimeId
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetActivityName(id)
|
|||
|
local config = GetRpgMakerGameActivityConfig(id)
|
|||
|
return config.Name
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetActivityBannerBg(id)
|
|||
|
local config = GetRpgMakerGameActivityConfig(id)
|
|||
|
return config.BannerBg
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetActivityCollectionIcon(id)
|
|||
|
local config = GetRpgMakerGameActivityConfig(id)
|
|||
|
return config.CollectionIcon
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetActivityGuideMoveDirection(id)
|
|||
|
id = id or XRpgMakerGameConfigs.GetDefaultActivityId()
|
|||
|
local config = GetRpgMakerGameActivityConfig(id)
|
|||
|
return config.GuideMoveDirection
|
|||
|
end
|
|||
|
-----------------RpgMakerGameActivity 活动相关 end-------------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameRandomDialogBox 随机提示 begin-----------------------
|
|||
|
local GetRpgMakerGameRandomDialogBoxConfigs = function(id)
|
|||
|
local config = RpgMakerGameRandomDialogBoxConfigs[id]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.GetRpgMakerGameRandomDialogBoxConfigs", "RpgMakerGameRandomDialogBoxConfigs", TABLE_RANDOM_DIALOG_BOX_PATH, "Id", id)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameRandomDialogBoxIdList()
|
|||
|
return RpgMakerGameRandomDialogBoxIdList
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameRandomDialogBoxPreStage(id)
|
|||
|
local config = GetRpgMakerGameRandomDialogBoxConfigs(id)
|
|||
|
return config.PreStage
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameRandomDialogBoxText(id)
|
|||
|
local config = GetRpgMakerGameRandomDialogBoxConfigs(id)
|
|||
|
return config.Text or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameRandomDialogBoxWeight(id)
|
|||
|
local config = GetRpgMakerGameRandomDialogBoxConfigs(id)
|
|||
|
return config.Weight
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameRandomDialogBoxDuration(id)
|
|||
|
local config = GetRpgMakerGameRandomDialogBoxConfigs(id)
|
|||
|
return config.Duration
|
|||
|
end
|
|||
|
-----------------RpgMakerGameRandomDialogBox 随机提示 end-------------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameHintDialogBox 点击头像提示 begin-----------------------
|
|||
|
local GetRpgMakerGameHintDialogBoxConfigs = function(id)
|
|||
|
local config = RpgMakerGameHintDialogBoxConfigs[id]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.GetRpgMakerGameHintDialogBoxConfigs", "RpgMakerGameHintDialogBoxConfigs", TABLE_HINT_DIALOG_BOX_PATH, "Id", id)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.IsHasRpgMakerGameHintDialogBox(id)
|
|||
|
return RpgMakerGameHintDialogBoxConfigs[id] and true or false
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameHintDialogBoxText(id)
|
|||
|
local config = GetRpgMakerGameHintDialogBoxConfigs(id)
|
|||
|
return config and config.Text or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameHintDialogBoxBackCount(id)
|
|||
|
local config = GetRpgMakerGameHintDialogBoxConfigs(id)
|
|||
|
return config and config.BackCount or 0
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameHintDialogBoxResetCount(id)
|
|||
|
local config = GetRpgMakerGameHintDialogBoxConfigs(id)
|
|||
|
return config.ResetCount
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameHintDialogBoxTotalLoseCount(id)
|
|||
|
local config = GetRpgMakerGameHintDialogBoxConfigs(id)
|
|||
|
return config.TotalLoseCount
|
|||
|
end
|
|||
|
-----------------RpgMakerGameHintDialogBox 点击头像提示 end-------------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameModel 模型相关 begin-----------------------
|
|||
|
local GetRpgMakerGameModelConfig = function(key)
|
|||
|
local config = RpgMakerGameModelConfigs[key]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.RpgMakerGameModelConfig", "RpgMakerGameModelConfigs", TABLE_MODEL_PATH, "Key", key)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameModelPath(key)
|
|||
|
local config = GetRpgMakerGameModelConfig(key)
|
|||
|
return config.ModelPath or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameTriggerKey(triggerType, isOpen)
|
|||
|
if triggerType == XRpgMakerGameConfigs.XRpgMakerGameTriggerType.Trigger1 then
|
|||
|
return XRpgMakerGameConfigs.ModelKeyMaps.TriggerType1
|
|||
|
end
|
|||
|
|
|||
|
if triggerType == XRpgMakerGameConfigs.XRpgMakerGameTriggerType.Trigger2 then
|
|||
|
return XRpgMakerGameConfigs.ModelKeyMaps.TriggerType2
|
|||
|
end
|
|||
|
|
|||
|
if triggerType == XRpgMakerGameConfigs.XRpgMakerGameTriggerType.Trigger3 then
|
|||
|
return XRpgMakerGameConfigs.ModelKeyMaps.TriggerType3
|
|||
|
end
|
|||
|
|
|||
|
if triggerType == XRpgMakerGameConfigs.XRpgMakerGameTriggerType.TriggerElectricFence then
|
|||
|
return isOpen and XRpgMakerGameConfigs.ModelKeyMaps.TriggerElectricFenceOpen or XRpgMakerGameConfigs.ModelKeyMaps.TriggerElectricFenceClose
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetTransferPointLoopColorKey(colorIndex)
|
|||
|
return XRpgMakerGameConfigs.ModelKeyMaps["TransferPointLoopColor" .. colorIndex]
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetTransferPointColorKey(colorIndex)
|
|||
|
return XRpgMakerGameConfigs.ModelKeyMaps["TransferPointColor" .. colorIndex]
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetModelEntityKey(entityType)
|
|||
|
if entityType == XRpgMakerGameConfigs.XRpgMakerGameEntityType.Water then
|
|||
|
return XRpgMakerGameConfigs.ModelKeyMaps.WaterRipper
|
|||
|
elseif entityType == XRpgMakerGameConfigs.XRpgMakerGameEntityType.Ice then
|
|||
|
return XRpgMakerGameConfigs.ModelKeyMaps.Freeze
|
|||
|
elseif entityType == XRpgMakerGameConfigs.XRpgMakerGameEntityType.Grass then
|
|||
|
return XRpgMakerGameConfigs.ModelKeyMaps.Grass
|
|||
|
elseif entityType == XRpgMakerGameConfigs.XRpgMakerGameEntityType.Steel then
|
|||
|
return XRpgMakerGameConfigs.ModelKeyMaps.Steel
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetModelSkillEffctKey(skillType)
|
|||
|
if skillType == XRpgMakerGameConfigs.XRpgMakerGameRoleSkillType.Crystal then
|
|||
|
return XRpgMakerGameConfigs.ModelKeyMaps.CrystalSkillEffect
|
|||
|
elseif skillType == XRpgMakerGameConfigs.XRpgMakerGameRoleSkillType.Flame then
|
|||
|
return XRpgMakerGameConfigs.ModelKeyMaps.FlameSkillEffect
|
|||
|
elseif skillType == XRpgMakerGameConfigs.XRpgMakerGameRoleSkillType.Raiden then
|
|||
|
return XRpgMakerGameConfigs.ModelKeyMaps.RaidenSkillEffect
|
|||
|
elseif skillType == XRpgMakerGameConfigs.XRpgMakerGameRoleSkillType.Dark then
|
|||
|
return XRpgMakerGameConfigs.ModelKeyMaps.DarkSkillEffect
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameModelName(key)
|
|||
|
local config = GetRpgMakerGameModelConfig(key)
|
|||
|
return config.Name or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameModelDesc(key)
|
|||
|
local config = GetRpgMakerGameModelConfig(key)
|
|||
|
return config.Desc or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameModelIcon(key)
|
|||
|
local config = GetRpgMakerGameModelConfig(key)
|
|||
|
return config.Icon or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetModelSize(key)
|
|||
|
local config = GetRpgMakerGameModelConfig(key)
|
|||
|
local size = config.Size
|
|||
|
local sizeList = string.Split(size, "|")
|
|||
|
return {x = tonumber(sizeList[1]) or 0,
|
|||
|
y = tonumber(sizeList[2]) or 0,
|
|||
|
z = tonumber(sizeList[3] or 0)
|
|||
|
}
|
|||
|
end
|
|||
|
-----------------RpgMakerGameModel 模型相关 end-----------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameAnimation 动画相关 begin-----------------------
|
|||
|
local GetRpgMakerGameAnimationConfig = function(modelName)
|
|||
|
local config = RpgMakerGameAnimationConfigs[modelName]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.RpgMakerGameAnimationConfig", "RpgMakerGameAnimationConfigs", TABLE_ANIMATION_PATH, "ModelName", modelName)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameStandAnimaName(modelName)
|
|||
|
local config = GetRpgMakerGameAnimationConfig(modelName)
|
|||
|
return config.StandAnimaName or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameRunAnimaName(modelName)
|
|||
|
local config = GetRpgMakerGameAnimationConfig(modelName)
|
|||
|
return config.RunAnimaName or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameAtkAnimaName(modelName)
|
|||
|
local config = GetRpgMakerGameAnimationConfig(modelName)
|
|||
|
return config.AtkAnimaName or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameElectricFenceAnimaName(modelName)
|
|||
|
local config = GetRpgMakerGameAnimationConfig(modelName)
|
|||
|
return config.ElectricFenceAnimaName or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameAlarmAnimaName(modelName)
|
|||
|
local config = GetRpgMakerGameAnimationConfig(modelName)
|
|||
|
return config.AlarmAnimaName or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameDrownAnimaName(modelName)
|
|||
|
local config = GetRpgMakerGameAnimationConfig(modelName)
|
|||
|
return config.DrownAnimaName or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameAdsorbAnimaName(modelName)
|
|||
|
local config = GetRpgMakerGameAnimationConfig(modelName)
|
|||
|
return config.AdsorbAnimaName or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameTransferAnimaName(modelName)
|
|||
|
local config = GetRpgMakerGameAnimationConfig(modelName)
|
|||
|
return config.TransferAnimaName or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameTransferDisAnimaName(modelName)
|
|||
|
local config = GetRpgMakerGameAnimationConfig(modelName)
|
|||
|
return config.TransferDisAnimaName or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameEffectRoot(modelName)
|
|||
|
local config = GetRpgMakerGameAnimationConfig(modelName)
|
|||
|
return config.EffectRoot or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameSentrySignYOffset(modelName)
|
|||
|
local config = GetRpgMakerGameAnimationConfig(modelName)
|
|||
|
local yOffset = config and config.SentrySignYOffset
|
|||
|
return yOffset and yOffset / 1000 or 0
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameXOffSet(modelName)
|
|||
|
local config = GetRpgMakerGameAnimationConfig(modelName)
|
|||
|
return config.XOffSet or 0
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameYOffSet(modelName)
|
|||
|
local config = GetRpgMakerGameAnimationConfig(modelName)
|
|||
|
return config.YOffSet or 0
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameZOffSet(modelName)
|
|||
|
local config = GetRpgMakerGameAnimationConfig(modelName)
|
|||
|
return config.ZOffSet or 0
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameName(modelName)
|
|||
|
local config = GetRpgMakerGameAnimationConfig(modelName)
|
|||
|
return config.Name or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameDesc(modelName)
|
|||
|
local config = GetRpgMakerGameAnimationConfig(modelName)
|
|||
|
return config.Desc or ""
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameIcon(modelName)
|
|||
|
local config = GetRpgMakerGameAnimationConfig(modelName)
|
|||
|
return config.Icon or ""
|
|||
|
end
|
|||
|
-----------------RpgMakerGameAnimation 动画相关 end-----------------------
|
|||
|
|
|||
|
-----------------RpgMakerGamePlayMainDownHint 玩法主界面下方提示 begin-----------------------
|
|||
|
local GetRpgMakerGamePlayMainDownHintConfig = function(id)
|
|||
|
local config = RpgMakerGamePlayMainDownHintConfigs[id]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.RpgMakerGamePlayMainDownHintConfig", "RpgMakerGamePlayMainDownHintConfigs", TABLE_PLAY_MAIN_DOWN_HINT_PATH, "Id", id)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGamePlayMainDownHintConfigMaxCount()
|
|||
|
return #RpgMakerGamePlayMainDownHintConfigs
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGamePlayMainDownHintText(id)
|
|||
|
local config = GetRpgMakerGamePlayMainDownHintConfig(id)
|
|||
|
return config.Text or ""
|
|||
|
end
|
|||
|
-----------------RpgMakerGamePlayMainDownHint 玩法主界面下方提示 end-----------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameHintLine 通关提示线路 begin--------------------
|
|||
|
local GetRpgMakerGameHintLineConfig = function(mapId)
|
|||
|
local config = RpgMakerGameHintLineConfigs[mapId]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.RpgMakerGameHintLineConfig", "RpgMakerGameHintLineConfigs", TABLE_HINT_LINE_PATH, "MapId", mapId)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
local GetStringSplitTwoNumParam = function(text)
|
|||
|
local textList = string.Split(text, "|")
|
|||
|
return textList[1] and tonumber(textList[1]) or 0, textList[2] and tonumber(textList[2]) or 0
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetHintLineHintTitle(mapId)
|
|||
|
local config = GetRpgMakerGameHintLineConfig(mapId)
|
|||
|
return config.HintTitle or ""
|
|||
|
end
|
|||
|
|
|||
|
--获得开始绘制线的格子行和列
|
|||
|
function XRpgMakerGameConfigs.GetHintLineStartRowAndCol(mapId)
|
|||
|
local config = GetRpgMakerGameHintLineConfig(mapId)
|
|||
|
local row, line = GetStringSplitTwoNumParam(config.StartRowAndCol)
|
|||
|
return row, line
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetHintLineStartGridPercent(mapId)
|
|||
|
local config = GetRpgMakerGameHintLineConfig(mapId)
|
|||
|
local widthPercent, heightPercent = GetStringSplitTwoNumParam(config.StartGridPercent)
|
|||
|
return widthPercent, heightPercent
|
|||
|
end
|
|||
|
|
|||
|
--获得格子中从哪一点开始
|
|||
|
function XRpgMakerGameConfigs.GetHintLineStartGridPos(mapId, width, height)
|
|||
|
local percentWidth, percentHeight = XRpgMakerGameConfigs.GetHintLineStartGridPercent(mapId)
|
|||
|
local x = width and width * percentWidth or 0
|
|||
|
local y = height and height * percentHeight or 0
|
|||
|
return x, y
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetHintLineNextRowAndColList(mapId)
|
|||
|
local config = GetRpgMakerGameHintLineConfig(mapId)
|
|||
|
return config.NextRowAndCol
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetHintLineNextRowAndCol(mapId, index)
|
|||
|
local row, line = 0, 0
|
|||
|
local config = GetRpgMakerGameHintLineConfig(mapId)
|
|||
|
local nextRowAndCol = config.NextRowAndCol[index]
|
|||
|
if not nextRowAndCol then
|
|||
|
return row, line
|
|||
|
end
|
|||
|
|
|||
|
row, line = GetStringSplitTwoNumParam(nextRowAndCol)
|
|||
|
return row, line
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetHintLineNextGridPercent(mapId, index)
|
|||
|
local widthPercent, heightPercent = 0, 0
|
|||
|
local config = GetRpgMakerGameHintLineConfig(mapId)
|
|||
|
local nextGridPercent = config.NextGridPercent[index]
|
|||
|
if not nextGridPercent then
|
|||
|
return widthPercent, heightPercent
|
|||
|
end
|
|||
|
|
|||
|
widthPercent, heightPercent = GetStringSplitTwoNumParam(nextGridPercent)
|
|||
|
return widthPercent, heightPercent
|
|||
|
end
|
|||
|
|
|||
|
--获得格子中终点位置的宽度和高度百分比
|
|||
|
--direction:方向
|
|||
|
--isEnd:是否为绘制一条线的最后一个格子
|
|||
|
--endWidthPercent:绘制一条线的最后一个格子的宽度百分比
|
|||
|
--endHeightPercent:绘制一条线的最后一个格子的高度百分比
|
|||
|
local GetEndPercent = function(direction, isEnd, endWidthPercent, endHeightPercent)
|
|||
|
if isEnd then
|
|||
|
return endWidthPercent, endHeightPercent
|
|||
|
end
|
|||
|
|
|||
|
endWidthPercent = (direction == XRpgMakerGameConfigs.RpgMakerGameMoveDirection.MoveLeft and 0) or (direction == XRpgMakerGameConfigs.RpgMakerGameMoveDirection.MoveRight and 1) or endWidthPercent
|
|||
|
endHeightPercent = (direction == XRpgMakerGameConfigs.RpgMakerGameMoveDirection.MoveDown and 0) or (direction == XRpgMakerGameConfigs.RpgMakerGameMoveDirection.MoveUp and 1) or endHeightPercent
|
|||
|
return endWidthPercent, endHeightPercent
|
|||
|
end
|
|||
|
|
|||
|
--获得格子中起点位置的宽度和高度百分比
|
|||
|
--direction:方向
|
|||
|
--startWidthPercent:绘制一条线的第一个格子的宽度百分比
|
|||
|
--startHeightPercent:绘制一条线的第一个格子的高度百分比
|
|||
|
local GetStartPercent = function(direction, startWidthPercent, startHeightPercent)
|
|||
|
startWidthPercent = (direction == XRpgMakerGameConfigs.RpgMakerGameMoveDirection.MoveLeft and 1) or (direction == XRpgMakerGameConfigs.RpgMakerGameMoveDirection.MoveRight and 0) or startWidthPercent
|
|||
|
startHeightPercent = (direction == XRpgMakerGameConfigs.RpgMakerGameMoveDirection.MoveDown and 1) or (direction == XRpgMakerGameConfigs.RpgMakerGameMoveDirection.MoveUp and 0) or startHeightPercent
|
|||
|
return startWidthPercent, startHeightPercent
|
|||
|
end
|
|||
|
|
|||
|
--获得各个格子绘制线的数据
|
|||
|
function XRpgMakerGameConfigs.GetHintLineMap(mapId)
|
|||
|
local hintLineMap = {}
|
|||
|
local mapId = mapId
|
|||
|
local lineId = 0
|
|||
|
|
|||
|
local InsertHintLineMap = function(row, col, widthPercent, heightPercent, direction, isStart, endWidthPercent, endHeightPercent)
|
|||
|
lineId = lineId + 1
|
|||
|
if not hintLineMap[row] then
|
|||
|
hintLineMap[row] = {}
|
|||
|
end
|
|||
|
if not hintLineMap[row][col] then
|
|||
|
hintLineMap[row][col] = {}
|
|||
|
end
|
|||
|
|
|||
|
local param = {
|
|||
|
IsStart = isStart, --是否是第一条绘制的线
|
|||
|
WidthPercent = widthPercent, --格子宽度百分比,用来计算线在格子中的起始位置
|
|||
|
HeightPercent = heightPercent, --格子高度百分比,用来计算线在格子中的起始位置
|
|||
|
EndWidthPercent = endWidthPercent, --格子宽度百分比,用来计算线在格子中的终点位置
|
|||
|
EndHeightPercent = endHeightPercent, --格子高度百分比,用来计算线在格子中的终点位置
|
|||
|
Direction = direction, --箭头方向
|
|||
|
Id = lineId,
|
|||
|
}
|
|||
|
|
|||
|
table.insert(hintLineMap[row][col], param)
|
|||
|
end
|
|||
|
|
|||
|
local startRow, startCol = XRpgMakerGameConfigs.GetHintLineStartRowAndCol(mapId)
|
|||
|
local startWidthPercent, startHeightPercent = XRpgMakerGameConfigs.GetHintLineStartGridPercent(mapId)
|
|||
|
local nextRow, nextCol = XRpgMakerGameConfigs.GetHintLineNextRowAndCol(mapId, 1)
|
|||
|
local endWidthPercent, endHeightPercent = XRpgMakerGameConfigs.GetHintLineNextGridPercent(mapId, 1)
|
|||
|
local direction = XRpgMakerGameConfigs.GetHintLineDirection(startRow, startCol, nextRow, nextCol, startWidthPercent, startHeightPercent, endWidthPercent, endHeightPercent)
|
|||
|
local isSameGrid = startRow == nextRow and startCol == nextCol and (startWidthPercent ~= endWidthPercent or startHeightPercent ~= endHeightPercent) --前后两点是否在同一格子里,且宽高百分比至少有一个不同
|
|||
|
local distance = (nextCol ~= startCol and nextRow ~= startRow) and 0 or math.floor(math.sqrt((nextCol - startCol) ^ 2 + (nextRow - startRow) ^ 2)) --前后两点的距离,不在一条直线上时为0
|
|||
|
if distance ~= 0 or isSameGrid then
|
|||
|
endWidthPercent, endHeightPercent = GetEndPercent(direction, distance == 0, endWidthPercent, endHeightPercent)
|
|||
|
InsertHintLineMap(startRow, startCol, startWidthPercent, startHeightPercent, direction, true, endWidthPercent, endHeightPercent)
|
|||
|
end
|
|||
|
|
|||
|
local nextRowAndColList = XRpgMakerGameConfigs.GetHintLineNextRowAndColList(mapId)
|
|||
|
local isStart
|
|||
|
local isEnd
|
|||
|
local startWidthPercentTemp
|
|||
|
local startHeightPercentTemp
|
|||
|
local endWidthPercentTemp
|
|||
|
local endHeightPercentTemp
|
|||
|
local row
|
|||
|
local col
|
|||
|
for nextRowAndColIndex in ipairs(nextRowAndColList) do
|
|||
|
isStart = nextRowAndColIndex == 1
|
|||
|
endWidthPercent, endHeightPercent = XRpgMakerGameConfigs.GetHintLineNextGridPercent(mapId, nextRowAndColIndex)
|
|||
|
nextRow, nextCol = XRpgMakerGameConfigs.GetHintLineNextRowAndCol(mapId, nextRowAndColIndex)
|
|||
|
direction = XRpgMakerGameConfigs.GetHintLineDirection(startRow, startCol, nextRow, nextCol, startWidthPercent, startHeightPercent, endWidthPercent, endHeightPercent)
|
|||
|
|
|||
|
distance = (nextCol ~= startCol and nextRow ~= startRow) and 0 or math.floor(math.sqrt((nextCol - startCol) ^ 2 + (nextRow - startRow) ^ 2))
|
|||
|
isEnd = distance == 0
|
|||
|
isSameGrid = startRow == nextRow and startCol == nextCol and (startWidthPercent ~= endWidthPercent or startHeightPercent ~= endHeightPercent)
|
|||
|
if (not isStart) and (distance ~= 0 or isSameGrid) then
|
|||
|
endWidthPercentTemp, endHeightPercentTemp = GetEndPercent(direction, isEnd, endWidthPercent, endHeightPercent)
|
|||
|
InsertHintLineMap(startRow, startCol, startWidthPercent, startHeightPercent, direction, false, endWidthPercentTemp, endHeightPercentTemp)
|
|||
|
end
|
|||
|
|
|||
|
for i = 1, distance do
|
|||
|
isEnd = i == distance
|
|||
|
startWidthPercentTemp, startHeightPercentTemp = GetStartPercent(direction, startWidthPercent, startHeightPercent)
|
|||
|
endWidthPercentTemp, endHeightPercentTemp = GetEndPercent(direction, isEnd, endWidthPercent, endHeightPercent)
|
|||
|
|
|||
|
if isEnd then
|
|||
|
InsertHintLineMap(nextRow, nextCol, startWidthPercentTemp, startHeightPercentTemp, direction, isStart, endWidthPercentTemp, endHeightPercentTemp)
|
|||
|
else
|
|||
|
row = (startRow - nextRow == 0 and startRow) or (startRow > nextRow and startRow - i or startRow + i)
|
|||
|
col = (startCol - nextCol == 0 and startCol) or (startCol > nextCol and startCol - i or startCol + i)
|
|||
|
InsertHintLineMap(row, col, startWidthPercentTemp, startHeightPercentTemp, direction, isStart, endWidthPercentTemp, endHeightPercentTemp)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
startRow, startCol = nextRow, nextCol
|
|||
|
startWidthPercent, startHeightPercent = XRpgMakerGameConfigs.GetHintLineNextGridPercent(mapId, nextRowAndColIndex)
|
|||
|
end
|
|||
|
|
|||
|
return hintLineMap, lineId
|
|||
|
end
|
|||
|
|
|||
|
--获得一条线的方向
|
|||
|
--startRow, startCol:起点的行数和列数
|
|||
|
--endRow, endCol:终点的行数和列数
|
|||
|
--startWidthPercent, startHeightPercent:起点在格子中的宽度百分比和高度百分比
|
|||
|
--endWidthPercent, endHeightPercent:终点在格子中的宽度百分比和高度百分比
|
|||
|
function XRpgMakerGameConfigs.GetHintLineDirection(startRow, startCol, endRow, endCol, startWidthPercent, startHeightPercent, endWidthPercent, endHeightPercent)
|
|||
|
local horizontalDistance = startRow - endRow --垂直方向距离
|
|||
|
local verticalDistance = startCol - endCol --水平方向距离
|
|||
|
local widthPercentDistance = (startWidthPercent and endWidthPercent) and startWidthPercent - endWidthPercent or 0
|
|||
|
local heightPercentDistance = (startHeightPercent and endHeightPercent) and startHeightPercent - endHeightPercent or 0
|
|||
|
if horizontalDistance ~= 0 and verticalDistance ~= 0 then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if horizontalDistance ~= 0 then
|
|||
|
return horizontalDistance > 0 and XRpgMakerGameConfigs.RpgMakerGameMoveDirection.MoveDown or XRpgMakerGameConfigs.RpgMakerGameMoveDirection.MoveUp
|
|||
|
end
|
|||
|
|
|||
|
if verticalDistance ~= 0 then
|
|||
|
return verticalDistance > 0 and XRpgMakerGameConfigs.RpgMakerGameMoveDirection.MoveLeft or XRpgMakerGameConfigs.RpgMakerGameMoveDirection.MoveRight
|
|||
|
end
|
|||
|
|
|||
|
if widthPercentDistance ~= 0 then
|
|||
|
return widthPercentDistance > 0 and XRpgMakerGameConfigs.RpgMakerGameMoveDirection.MoveLeft or XRpgMakerGameConfigs.RpgMakerGameMoveDirection.MoveRight
|
|||
|
end
|
|||
|
|
|||
|
if heightPercentDistance ~= 0 then
|
|||
|
return heightPercentDistance > 0 and XRpgMakerGameConfigs.RpgMakerGameMoveDirection.MoveDown or XRpgMakerGameConfigs.RpgMakerGameMoveDirection.MoveUp
|
|||
|
end
|
|||
|
end
|
|||
|
-----------------RpgMakerGameHintLine 通关提示线路 end----------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameShadow 影子 begin--------------------
|
|||
|
local GetRpgMakerGameShadowConfig = function(id)
|
|||
|
local config = RpgMakerGameShadowConfigs[id]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.RpgMakerGameHintLineConfig", "RpgMakerGameShadowConfigs", TABLE_SHADOW_PATH, "Id", id)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameMapIdToShadowIdList(mapId)
|
|||
|
return RpgMakerGameMapIdToShadowIdList[mapId] or {}
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameShadowX(id)
|
|||
|
local config = GetRpgMakerGameShadowConfig(id)
|
|||
|
return config.X
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameShadowY(id)
|
|||
|
local config = GetRpgMakerGameShadowConfig(id)
|
|||
|
return config.Y
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameShadowDirection(id)
|
|||
|
local config = GetRpgMakerGameShadowConfig(id)
|
|||
|
return config.Direction
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameShadowId(mapId, x, y)
|
|||
|
local shadowIdList = XRpgMakerGameConfigs.GetRpgMakerGameMapIdToShadowIdList(mapId)
|
|||
|
local shadowX
|
|||
|
local shadowY
|
|||
|
for _, shadowId in ipairs(shadowIdList) do
|
|||
|
shadowX = XRpgMakerGameConfigs.GetRpgMakerGameShadowX(shadowId)
|
|||
|
shadowY = XRpgMakerGameConfigs.GetRpgMakerGameShadowY(shadowId)
|
|||
|
if shadowX == x and shadowY == y then
|
|||
|
return shadowId
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
-----------------RpgMakerGameShadow 影子 end----------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameTrap 陷阱 begin--------------------
|
|||
|
local GetRpgMakerGameTrapConfig = function(id)
|
|||
|
local config = RpgMakerGameTrapConfigs[id]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.RpgMakerGameHintLineConfig", "RpgMakerGameTrapConfigs", TABLE_TRAP_PATH, "Id", id)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameMapIdToTrapIdList(mapId)
|
|||
|
return RpgMakerGameMapIdToTrapIdList[mapId] or {}
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameTrapX(id)
|
|||
|
local config = GetRpgMakerGameTrapConfig(id)
|
|||
|
return config.X
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameTrapY(id)
|
|||
|
local config = GetRpgMakerGameTrapConfig(id)
|
|||
|
return config.Y
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameTrapId(mapId, x, y)
|
|||
|
local trapIdList = XRpgMakerGameConfigs.GetRpgMakerGameMapIdToTrapIdList(mapId)
|
|||
|
local trapX
|
|||
|
local trapY
|
|||
|
for _, trapId in ipairs(trapIdList) do
|
|||
|
trapX = XRpgMakerGameConfigs.GetRpgMakerGameTrapX(trapId)
|
|||
|
trapY = XRpgMakerGameConfigs.GetRpgMakerGameTrapY(trapId)
|
|||
|
if trapX == x and trapY == y then
|
|||
|
return trapId
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
-----------------RpgMakerGameTrap 陷阱 end----------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameElectricFence 电网 begin--------------------
|
|||
|
local GetRpgMakerGameElectricFenceConfig = function(id)
|
|||
|
local config = RpgMakerGameElectricFenceConfigs[id]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.RpgMakerGameElectricFenceConfig", "RpgMakerGameElectricFenceConfigs", TABLE_ELECTRIC_FENCE_PATH, "Id", id)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameMapIdToElectricFenceIdList(mapId)
|
|||
|
return RpgMakerGameMapIdToElectricFenceIdList[mapId] or {}
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameElectricFenceX(id)
|
|||
|
local config = GetRpgMakerGameElectricFenceConfig(id)
|
|||
|
return config.X
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameElectricFenceY(id)
|
|||
|
local config = GetRpgMakerGameElectricFenceConfig(id)
|
|||
|
return config.Y
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameElectricDirection(id)
|
|||
|
local config = GetRpgMakerGameElectricFenceConfig(id)
|
|||
|
return config.Direction
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameSameXYElectricFenceIdList(mapId, x, y)
|
|||
|
local electricFenceIdList = XRpgMakerGameConfigs.GetRpgMakerGameMapIdToElectricFenceIdList(mapId)
|
|||
|
local gapX
|
|||
|
local gapY
|
|||
|
local sameXYElectricFenceIdList = {}
|
|||
|
for _, gapId in ipairs(electricFenceIdList) do
|
|||
|
gapX = XRpgMakerGameConfigs.GetRpgMakerGameElectricFenceX(gapId)
|
|||
|
gapY = XRpgMakerGameConfigs.GetRpgMakerGameElectricFenceY(gapId)
|
|||
|
if gapX == x and gapY == y then
|
|||
|
tableInsert(sameXYElectricFenceIdList, gapId)
|
|||
|
end
|
|||
|
end
|
|||
|
return sameXYElectricFenceIdList
|
|||
|
end
|
|||
|
-----------------RpgMakerGameElectricFence 电网 end----------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameDeathTitle 不同类型的死亡弹窗标题 begin--------------------
|
|||
|
local GetRpgMakerGameDeathTitleConfig = function(type)
|
|||
|
local config = RpgMakerGameDeathTitleConfigs[type]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.RpgMakerGameDeathTitleConfig", "RpgMakerGameDeathTitleConfigs", TABLE_DEATH_TITAL_PATH, "Type", type)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameDeathTitle(type)
|
|||
|
local config = GetRpgMakerGameDeathTitleConfig(type)
|
|||
|
return config and config.Name or ""
|
|||
|
end
|
|||
|
-----------------RpgMakerGameDeathTitle 不同类型的死亡弹窗标题 end----------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameChapterGroup 第X期章节组 begin-----------------
|
|||
|
local GetRpgMakerGameChapterGroupConfig = function(id)
|
|||
|
local config = RpgMakerGameChapterGroupConfigs[id]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.RpgMakerGameChapterGroupConfig", "RpgMakerGameChapterGroupConfigs", TABLE_CHAPTER_GROUP_PATH, "Id", id)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameChapterGroupIdList()
|
|||
|
InitChapterGroup()
|
|||
|
return RpgMakerGameChapterGroupIdList
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameChapterIdList(groupId)
|
|||
|
InitChapterGroup()
|
|||
|
return RpgMakerGameChapterGroupToChapterIdList[groupId] or {}
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetDefaultChapterGroupId()
|
|||
|
InitChapterGroup()
|
|||
|
return _DefaultChapterGroupId
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetChapterGroupName(id)
|
|||
|
local config = GetRpgMakerGameChapterGroupConfig(id)
|
|||
|
return config.Name
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetChapterGroupOpenTimeId(id)
|
|||
|
local config = GetRpgMakerGameChapterGroupConfig(id)
|
|||
|
return config.OpenTimeId
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetChapterGroupActivityIcon(id)
|
|||
|
local config = GetRpgMakerGameChapterGroupConfig(id)
|
|||
|
return config.ActivityIcon
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetChapterGroupBg(id)
|
|||
|
local config = GetRpgMakerGameChapterGroupConfig(id)
|
|||
|
return config.Bg
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetChapterGroupIsShowTask(id)
|
|||
|
local config = GetRpgMakerGameChapterGroupConfig(id)
|
|||
|
return config.IsShowTask
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetChapterGroupIsFirstShow(id)
|
|||
|
local config = GetRpgMakerGameChapterGroupConfig(id)
|
|||
|
return config.IsFirstShow
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetChapterGroupTitlePrefab(id)
|
|||
|
local config = GetRpgMakerGameChapterGroupConfig(id)
|
|||
|
return config.TitlePrefab
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetChapterGroupGroundPrefab(id)
|
|||
|
local config = GetRpgMakerGameChapterGroupConfig(id)
|
|||
|
return config.GroundPrefab
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetChapterGroupBlockPrefab(id)
|
|||
|
local config = GetRpgMakerGameChapterGroupConfig(id)
|
|||
|
return config.BlockPrefab
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetChapterGroupHelpKey(id)
|
|||
|
local config = GetRpgMakerGameChapterGroupConfig(id)
|
|||
|
return config.HelpKey
|
|||
|
end
|
|||
|
-----------------RpgMakerGameChapterGroup 第X期章节组 end-------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameEntity begin-----------------
|
|||
|
local GetRpgMakerGameEntityConfig = function(id)
|
|||
|
local config = RpgMakerGameEntityConfigs[id]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.RpgMakerGameEntityConfig", "RpgMakerGameEntityConfigs", TABLE_ENTITY_PATH, "Id", id)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetEntityTypeListByDic(mapId, x, y)
|
|||
|
InitMapIdToEntityIdList()
|
|||
|
return EntityTypeDic[mapId] and EntityTypeDic[mapId][x] and EntityTypeDic[mapId][x][y]
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetMapIdToEntityIdList(mapId)
|
|||
|
InitMapIdToEntityIdList()
|
|||
|
return MapIdToEntityIdList[mapId] or {}
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetEntityIdListByDic(mapId, x, y)
|
|||
|
InitMapIdToEntityIdList()
|
|||
|
return (EntityIdDic[mapId] and EntityIdDic[mapId][x] and EntityIdDic[mapId][x][y]) or {}
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.IsSameEntity(mapId, x, y, type)
|
|||
|
local entityTypeList = XRpgMakerGameConfigs.GetEntityTypeListByDic(mapId, x, y)
|
|||
|
if XTool.IsTableEmpty(entityTypeList) then
|
|||
|
return false
|
|||
|
end
|
|||
|
for _, entityType in ipairs(entityTypeList) do
|
|||
|
if entityType == type then
|
|||
|
return true
|
|||
|
end
|
|||
|
end
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetEntityMapId(id)
|
|||
|
local config = GetRpgMakerGameEntityConfig(id)
|
|||
|
return config.MapId
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetEntityType(id)
|
|||
|
local config = GetRpgMakerGameEntityConfig(id)
|
|||
|
return config.Type
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetEntityX(id)
|
|||
|
local config = GetRpgMakerGameEntityConfig(id)
|
|||
|
return config.X
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetEntityY(id)
|
|||
|
local config = GetRpgMakerGameEntityConfig(id)
|
|||
|
return config.Y
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetEntityBrokenType(id)
|
|||
|
local config = GetRpgMakerGameEntityConfig(id)
|
|||
|
return config.BrokenType
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameEntityTypeListByXY(mapId, x, y)
|
|||
|
local entityIdList = XRpgMakerGameConfigs.GetMapIdToEntityIdList(mapId)
|
|||
|
local idList = {}
|
|||
|
local entityX
|
|||
|
local entityY
|
|||
|
for _, entityId in ipairs(entityIdList) do
|
|||
|
entityX = XRpgMakerGameConfigs.GetEntityX(entityId)
|
|||
|
entityY = XRpgMakerGameConfigs.GetEntityY(entityId)
|
|||
|
if entityX == x and entityY == y then
|
|||
|
tableInsert(idList, XRpgMakerGameConfigs.GetEntityType(entityId))
|
|||
|
tableSort(idList)
|
|||
|
end
|
|||
|
end
|
|||
|
return idList or {}
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.IsRpgMakerGameHaveEntity(mapId)
|
|||
|
-- 地图实体:1 水面、2 冰面、3 草圃、4 钢板
|
|||
|
local isHaveEntity1, isHaveEntity2, isHaveEntity3, isHaveEntity4
|
|||
|
local entityIdList = XRpgMakerGameConfigs.GetMapIdToEntityIdList(mapId)
|
|||
|
local typeCfg
|
|||
|
for _, entityId in ipairs(entityIdList) do
|
|||
|
typeCfg = XRpgMakerGameConfigs.GetEntityType(entityId)
|
|||
|
if typeCfg == XRpgMakerGameConfigs.XRpgMakerGameEntityType.Water then
|
|||
|
isHaveEntity1 = true
|
|||
|
elseif typeCfg == XRpgMakerGameConfigs.XRpgMakerGameEntityType.Ice then
|
|||
|
isHaveEntity2 = true
|
|||
|
elseif typeCfg == XRpgMakerGameConfigs.XRpgMakerGameEntityType.Grass then
|
|||
|
isHaveEntity3 = true
|
|||
|
elseif typeCfg == XRpgMakerGameConfigs.XRpgMakerGameEntityType.Steel then
|
|||
|
isHaveEntity4 = true
|
|||
|
end
|
|||
|
|
|||
|
if isHaveEntity1 and isHaveEntity2 and isHaveEntity3 and isHaveEntity4 then
|
|||
|
break
|
|||
|
end
|
|||
|
end
|
|||
|
return isHaveEntity1, isHaveEntity2, isHaveEntity3, isHaveEntity4
|
|||
|
end
|
|||
|
-----------------RpgMakerGameEntity end-------------------
|
|||
|
|
|||
|
-----------------RpgMakerGameTransferPoint 传送点 begin-----------------
|
|||
|
local GetRpgMakerGameTransferPointConfig = function(id)
|
|||
|
local config = RpgMakerGameTransferPointConfigs[id]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XRpgMakerGameConfigs.RpgMakerGameTransferPointConfig", "RpgMakerGameTransferPointConfigs", TABLE_TRANSFER_POINT_PATH, "Id", id)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetMapIdToTransferPointIdList(mapId)
|
|||
|
InitMapIdToTransferPointIdList()
|
|||
|
return MapIdToTransferPointIdList[mapId] or {}
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetTransferPointMapId(id)
|
|||
|
local config = GetRpgMakerGameTransferPointConfig(id)
|
|||
|
return config.MapId
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetTransferPointX(id)
|
|||
|
local config = GetRpgMakerGameTransferPointConfig(id)
|
|||
|
return config.X
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetTransferPointY(id)
|
|||
|
local config = GetRpgMakerGameTransferPointConfig(id)
|
|||
|
return config.Y
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetTransferPointColor(id)
|
|||
|
local config = GetRpgMakerGameTransferPointConfig(id)
|
|||
|
return config.Color
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.GetRpgMakerGameTransferPointId(mapId, x, y)
|
|||
|
local transferPointIdList = XRpgMakerGameConfigs.GetMapIdToTransferPointIdList(mapId)
|
|||
|
local transferPointX
|
|||
|
local transferPointY
|
|||
|
for _, transferPointId in ipairs(transferPointIdList) do
|
|||
|
transferPointX = XRpgMakerGameConfigs.GetTransferPointX(transferPointId)
|
|||
|
transferPointY = XRpgMakerGameConfigs.GetTransferPointY(transferPointId)
|
|||
|
if transferPointX == x and transferPointY == y then
|
|||
|
return transferPointId
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XRpgMakerGameConfigs.IsRpgMakerGameHaveTransferPoint(mapId)
|
|||
|
-- 地图实体:1 水面、2 冰面、3 草圃、4 钢板
|
|||
|
local isHaveTransferPoint1, isHaveTransferPoint2, isHaveTransferPoint3
|
|||
|
local entityIdList = XRpgMakerGameConfigs.GetMapIdToTransferPointIdList(mapId)
|
|||
|
local colorCfg
|
|||
|
for _, transferId in ipairs(entityIdList) do
|
|||
|
colorCfg = XRpgMakerGameConfigs.GetTransferPointColor(transferId)
|
|||
|
if colorCfg == XRpgMakerGameConfigs.XRpgMakerTransferPointColor.Green then
|
|||
|
isHaveTransferPoint1 = true
|
|||
|
elseif colorCfg == XRpgMakerGameConfigs.XRpgMakerTransferPointColor.Yellow then
|
|||
|
isHaveTransferPoint2 = true
|
|||
|
elseif colorCfg == XRpgMakerGameConfigs.XRpgMakerTransferPointColor.Purple then
|
|||
|
isHaveTransferPoint3 = true
|
|||
|
end
|
|||
|
|
|||
|
if isHaveTransferPoint1 and isHaveTransferPoint2 and isHaveTransferPoint3 then
|
|||
|
break
|
|||
|
end
|
|||
|
end
|
|||
|
return isHaveTransferPoint1, isHaveTransferPoint2, isHaveTransferPoint3
|
|||
|
end
|
|||
|
-----------------RpgMakerGameTransferPoint 传送点 end-------------------
|