0
0
mirror of https://gitlab.com/YuukiPS/GC-Resources.git synced 2025-04-28 09:05:26 +00:00
GC-Resources/Resources/Scripts/Common/V2_6/PhotographActivity.lua
KingRainbow44 8dd3a721e5
Revert "The Great De-Local'ifying of defs and base_info"
This reverts commit 0989747b
2023-08-30 21:15:50 -04:00

190 lines
7.9 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--[[======================================
|| filename: PhotographActivity
|| owner: luyao.huang
|| description: 2.6拍照活动
|| LogName: PhotographActivity
|| Protection:
=======================================]]--
------
--local defs = {
-- worktop_id = 10001,
-- gallery_id = 18001,
-- region_id = 20001,
-- client_judge_id = 1
--}
local local_defs = {
worktop_option = 190,
region_out_reminder = 600106,
}
local Tri = {
[1] = { name = "group_load", config_id = 40000000, event = EventType.EVENT_GROUP_LOAD, source = "", condition = "", action = "action_group_load", trigger_count = 0},
[3] = { name = "select_option", config_id = 40000002, event = EventType.EVENT_SELECT_OPTION, source = "", condition = "", action = "action_select_option", trigger_count = 0},
[4] = { name = "photo_finish", config_id = 40000003, event = EventType.EVENT_PHOTO_FINISH, source = "", condition = "", action = "action_photo_finish", trigger_count = 0},
[5] = { name = "leave_region", config_id = 40000004, event = EventType.EVENT_LEAVE_REGION, source = "", condition = "", action = "action_leave_region", trigger_count = 0},
[6] = { name = "group_will_unload", config_id = 40000005, event = EventType.EVENT_GROUP_WILL_UNLOAD, source = "", condition = "", action = "action_group_will_unload", trigger_count = 0},
[7] = { name = "gallery_stop", config_id = 40000006, event = EventType.EVENT_GALLERY_STOP, source = "", condition = "", action = "action_gallery_stop", trigger_count = 0},
}
function Initialize()
for k,v in pairs(Tri) do
table.insert(triggers, v)
table.insert(suites[1].triggers, v.name)
end
table.insert(variables,{ config_id=50000001,name = "has_succeeded", value = 0, no_refresh = true})
end
------------------------------------------------------------------
--group load后根据当前玩法状态恢复物件表现
function action_group_load(context,evt)
ScriptLib.PrintContextLog(context,"## [PhotographActivity] action_group_loadgroup加载恢复玩法状态")
--group load时做一次校验如果之前成功后group未被正确反注册则在group_load时手动完成一次玩法
--if (not LF_Has_Succeeded(context)) then
LF_Init_Play(context)
--else
-- LF_Stop_Play(context,true)
--end
return 0
end
--玩家与选项交互,开启挑战
function action_select_option(context,evt)
ScriptLib.PrintContextLog(context,"## [PhotographActivity] action_select_option: 玩家与选项交互,开启玩法")
LF_Start_Play(context)
return 0
end
--挑战成功处理
--拍照成功以成功结束gallery并流转group状态
function action_photo_finish(context,evt)
ScriptLib.PrintContextLog(context,"## [PhotographActivity] action_photo_finish: 收到推送的拍照成功消息")
ScriptLib.PrintContextLog(context,"## [PhotographActivity] action_photo_finish: gallery id为"..evt.param1)
ScriptLib.PrintContextLog(context,"## [PhotographActivity] action_photo_finish: 客户端逻辑id为"..evt.param2)
--对客户端推送的拍照成功消息做一次校验
if (evt.param1 == defs.gallery_id and evt.param2 == defs.client_judge_id) then
ScriptLib.PrintContextLog(context,"## [PhotographActivity] action_photo_finish: 拍照成功")
LF_Stop_Play(context,true)
end
return 0
end
--挑战失败处理
--失败情况1玩家出圈
function action_leave_region(context,evt)
ScriptLib.PrintContextLog(context,"## [PhotographActivity] action_leave_region: 玩家出圈")
--校验当前玩法状态只有未完成状态的group才能回滚到初始状态
--if (evt.param1 == defs.region_id and not LF_Has_Succeeded(context) and ScriptLib.IsGalleryStart(context,defs.gallery_id)) then
if (evt.param1 == defs.region_id and ScriptLib.IsGalleryStart(context,defs.gallery_id)) then
ScriptLib.PrintContextLog(context,"## [PhotographActivity] action_leave_region: 挑战失败并回滚group状态")
ScriptLib.ShowReminder(context, local_defs.region_out_reminder)
LF_Stop_Play(context,false)
end
return 0
end
--失败情况2group即将卸载
function action_group_will_unload(context,evt)
ScriptLib.PrintContextLog(context,"## [PhotographActivity] action_group_will_unload: group即将卸载")
--校验当前玩法状态只有未完成状态的group才能回滚到初始状态
--if (not LF_Has_Succeeded(context) and ScriptLib.IsGalleryStart(context,defs.gallery_id)) then
if (ScriptLib.IsGalleryStart(context,defs.gallery_id)) then
ScriptLib.PrintContextLog(context,"## [PhotographActivity] action_group_will_unload: 回退至初始状态作为保护")
LF_Stop_Play(context,false)
end
return 0
end
--失败情况3灭队
function action_gallery_stop(context,evt)
if (evt.param3 == 0) then
ScriptLib.PrintContextLog(context,"## [PhotographActivity] action_gallery_stop: 灭队")
LF_Stop_Play(context,false)
end
return 0
end
------------------------------------------------------------------
------------------------流程相关----------------------------------
--初始化玩法
--加载操作台并上选项
function LF_Init_Play(context)
--操作台激活
LF_Set_Worktop(context,true)
--卸载打点suite
LF_Set_Photo_Point_Suite(context,false)
end
--开启玩法
function LF_Start_Play(context)
--先尝试启动gallery如果未成功则直接返回
if (ScriptLib.SetPlayerStartGallery(context, defs.gallery_id, {ScriptLib.GetSceneOwnerUid(context)}) ~= 0) then
return
end
--操作台转为未激活
LF_Set_Worktop(context,false)
--加载打点suite
LF_Set_Photo_Point_Suite(context,true)
--显示黄圈
ScriptLib.ActivateGroupLinkBundle(context, base_info.group_id)
end
function LF_Stop_Play(context, is_success)
--卸载打点suite
--LF_Set_Photo_Point_Suite(context,false)
--关闭黄圈
ScriptLib.DeactivateGroupLinkBundle(context, base_info.group_id)
if (is_success) then
--关闭操作台
--LF_Set_Worktop(context,false)
ScriptLib.StopGallery(context,defs.gallery_id,false)
--ScriptLib.SetGroupVariableValue(context,"has_succeeded",1)
--ScriptLib.FinishGroupLinkBundle(context, base_info.group_id)
else
--lua里处理的都是出界StopGallery所以Reason直接都给5
ScriptLib.StopGalleryByReason(context,defs.gallery_id,5)
end
--重新做一次初始化的流程
LF_Init_Play(context)
end
------------------------group元素操作相关----------------------------------
--设置操作台状态包括设置gadgetState和上下选项
function LF_Set_Worktop(context, is_active)
if (is_active) then
ScriptLib.SetGroupGadgetStateByConfigId(context, base_info.group_id, defs.worktop_id, 0)
ScriptLib.SetWorktopOptionsByGroupId(context, base_info.group_id, defs.worktop_id, {local_defs.worktop_option})
else
ScriptLib.SetGroupGadgetStateByConfigId(context, base_info.group_id, defs.worktop_id, 201)
ScriptLib.DelWorktopOptionByGroupId(context, base_info.group_id, defs.worktop_id, local_defs.worktop_option)
end
end
--加载/卸载打点用suite
function LF_Set_Photo_Point_Suite(context,is_active)
if (is_active) then
if #suites>=2 then
--如果有配置打点用物件,将其加载出来
ScriptLib.AddExtraGroupSuite(context,base_info.group_id,2)
end
else
if #suites>=2 then
--如果有配置打点用物件,清理加载出来的打点用物件
ScriptLib.RemoveExtraGroupSuite(context,base_info.group_id,2)
end
end
end
--返回当前group的玩法是否已经成功了
--如果已经成功group load时不能再重新开启玩法
function LF_Has_Succeeded(context)
return ScriptLib.GetGroupVariableValue(context,"has_succeeded") == 1
end
------------------------------------------------------------------
Initialize()