111
This commit is contained in:
424
Project/Anton/Rindro_Anton.nut
Normal file
424
Project/Anton/Rindro_Anton.nut
Normal file
@@ -0,0 +1,424 @@
|
||||
/*
|
||||
文件名:Rindro_Anton.nut
|
||||
路径:Project/Anton/Rindro_Anton.nut
|
||||
创建日期:2024-08-13 09:30
|
||||
文件用途:安图恩
|
||||
*/
|
||||
|
||||
|
||||
dofile("sqr/Project/Anton/Rindro_Anton_CreateParty.nut");
|
||||
dofile("sqr/Project/Anton/Rindro_Anton_FightSituation.nut");
|
||||
dofile("sqr/Project/Anton/Rindro_Anton_Noti.nut");
|
||||
dofile("sqr/Project/Anton/Rindro_Anton_Party.nut");
|
||||
dofile("sqr/Project/Anton/Rindro_Anton_PartyApplyJoin.nut");
|
||||
dofile("sqr/Project/Anton/Rindro_Anton_PartyFormation.nut");
|
||||
dofile("sqr/Project/Anton/Rindro_Anton_PartyHall.nut");
|
||||
dofile("sqr/Project/Anton/Rindro_Anton_PartyInfo.nut");
|
||||
dofile("sqr/Project/Anton/Rindro_Anton_PartyMemberInfo.nut");
|
||||
dofile("sqr/Project/Anton/Rindro_Anton_PlayerInteractive.nut");
|
||||
dofile("sqr/Project/Anton/Rindro_Anton_Reward.nut");
|
||||
|
||||
|
||||
//安图恩核心数据类
|
||||
class RinDro_Anton extends Rindro_BaseToolClass {
|
||||
//基础配置
|
||||
BaseConfig = null;
|
||||
//攻坚配置
|
||||
FightConfig = null;
|
||||
|
||||
//我的攻坚队状态
|
||||
MyRaidState = null;
|
||||
//我的攻坚队伍
|
||||
MyRaidTeam = null;
|
||||
//我的攻坚队伍ID
|
||||
MyRaidTeamId = null;
|
||||
//我的Cid
|
||||
MyCid = null;
|
||||
//我是否是攻坚队队长
|
||||
IsCaptain = null;
|
||||
//结束时间
|
||||
EndTime = null;
|
||||
//我的攻坚队攻坚阶段
|
||||
RaidStage = 0;
|
||||
//我的攻坚队伍头像存储
|
||||
Portrait = null;
|
||||
|
||||
|
||||
//安图恩我的队伍窗口
|
||||
PartyWindow_Object = null;
|
||||
//攻坚战况表窗口
|
||||
FightSituationWindow_Object = null;
|
||||
//攻坚大厅窗口
|
||||
PartyHallWindow_Object = null;
|
||||
//翻牌奖励窗口
|
||||
RewardWindow_Object = null;
|
||||
//编队窗口
|
||||
PartyFormationWindow_Object = null;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//攻坚开始动画的Flag
|
||||
DrawStartAniMark = false;
|
||||
|
||||
|
||||
//请求基础信息配置
|
||||
function GetFiendwarBase() {
|
||||
local T = {
|
||||
op = 20064501,
|
||||
}
|
||||
SendPackEx(T);
|
||||
}
|
||||
//请求掉线配置信息
|
||||
function GetFiendwarDown() {
|
||||
local T = {
|
||||
op = 20064063,
|
||||
}
|
||||
SendPackEx(T);
|
||||
}
|
||||
|
||||
//基础信息配置
|
||||
function FiendwarBase(Chunk) {
|
||||
BaseConfig = Json.Decode(Chunk);
|
||||
FiendwarChannelTownLogicCallBack();
|
||||
}
|
||||
|
||||
//基础攻坚信息配置
|
||||
function AntonFightBase(Chunk) {
|
||||
FightConfig = Json.Decode(Chunk);
|
||||
}
|
||||
|
||||
//团本专属频道上线城镇移动包
|
||||
function FiendwarChannelTownLogicCallBack() {
|
||||
if (BaseConfig.channel_index.find("18")) {
|
||||
if (L_sq_GetTownIndex() != BaseConfig.town_index) {
|
||||
L_sq_MoveTown(BaseConfig.town_index, 0, 474, 249);
|
||||
}
|
||||
} else {
|
||||
//在安图恩区域的 要转移回普通城镇
|
||||
if (L_sq_GetTownIndex() == BaseConfig.town_index) {
|
||||
L_sq_MoveTown(1, 1, 474, 249);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//获取攻坚队信息回调
|
||||
function GetTeamInfoCallBack(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
local ZlibStr = Jso.ZipS;
|
||||
Jso.ZipS = Json.Decode(L_sq_Dezlib(Jso.ZipS));
|
||||
Jso.team <- Jso.ZipS.team;
|
||||
|
||||
//取的窗口对象
|
||||
local Win = PartyWindow_Object;
|
||||
Win.InfoFlag = true;
|
||||
|
||||
//如果攻坚队伍信息中已经有了角色成员 清空成员对象集合
|
||||
for (local i = 0; i< Win.Childrens.len(); i++) {
|
||||
local Cobj = Win.Childrens[i];
|
||||
if (Cobj instanceof Rindro_AntonPartyInfoMemberC) {
|
||||
Win.Childrens.remove(i);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
//重置成员数组
|
||||
Win.MembersList = [];
|
||||
|
||||
//清空是否为我的队伍状态
|
||||
Win.IsMyTeam = false;
|
||||
//清空是否为队长状态
|
||||
Win.IsCaptain = false;
|
||||
//赋值队伍名称
|
||||
Win.TeamName = Jso.team.TeamName;
|
||||
//赋值队伍ID
|
||||
Win.TeamID = Jso.team.TeamId;
|
||||
|
||||
//还原头像
|
||||
Portrait = {};
|
||||
//遍历Team包 用于构造队伍窗口中的每一位成员
|
||||
foreach(_index, MemberObj in Jso.team.characNum) {
|
||||
// local MemberObj = Jso.team.characNum[0];
|
||||
//说明我在这个攻坚队里
|
||||
if (Jso.cid == MemberObj.CID) {
|
||||
Win.IsMyTeam = true;
|
||||
MyRaidState = Jso.team.State;
|
||||
MyRaidTeam = PartyWindow_Object;
|
||||
//向全局类存入我的攻坚队伍ID
|
||||
MyRaidTeamId = Jso.team.TeamId;
|
||||
//存入我的CID
|
||||
MyCid = Jso.cid;
|
||||
//说明是队长
|
||||
if (Jso.cid == Jso.team.captainCid) {
|
||||
Win.IsCaptain = true;
|
||||
//存入我是攻坚队队长
|
||||
IsCaptain = true;
|
||||
}
|
||||
}
|
||||
//构造CID对应的装备数组方便绘制
|
||||
Portrait.rawset(MemberObj.CID, {
|
||||
EquVos = clone(MemberObj.equVos),
|
||||
Job = MemberObj.PlayerJob,
|
||||
TeamId = MemberObj.characNum,
|
||||
Name = MemberObj.PlayerName,
|
||||
});
|
||||
|
||||
local T = {
|
||||
PartyId = Jso.team.TeamId, //攻坚队ID
|
||||
TeamId = MemberObj.characNum, //小队编号
|
||||
Level = MemberObj.PlayerLevel.tostring(), //等级
|
||||
Name = MemberObj.PlayerName, //名字
|
||||
JobName = MemberObj.PlayerGrowTypeJob, //职业名
|
||||
Job = MemberObj.PlayerJob, //职业编号
|
||||
StkHasFlag = MemberObj.isPrepare, //是否拥有攻坚材料
|
||||
EquVos = MemberObj.equVos, //装备List 用于显示头像
|
||||
Captain = MemberObj.CaptainBool, //是否为攻坚队队长
|
||||
Cid = MemberObj.CID, //Cid
|
||||
OnlineState = MemberObj.onLineStart, //在线状态
|
||||
ExitTime = MemberObj.exitTime, //离队时间
|
||||
PlayerSession = MemberObj.PlayerSession, //玩家在世界中的Session 用于进行原生用户操作
|
||||
ClearanceCount = MemberObj.ClearanceCount, //通关次数
|
||||
ClearanceCountMax = FightConfig.rewardCondition, //总通关次数
|
||||
}
|
||||
//通过类构造并添加队伍成员UI对象
|
||||
local TeamBuf = Rindro_AntonPartyInfoMemberC(T);
|
||||
Win.AddChild(TeamBuf);
|
||||
Win.MembersList.append(TeamBuf);
|
||||
}
|
||||
|
||||
if (("OpenWin" in Jso)) {
|
||||
//开启队伍窗口显示
|
||||
Win.Visible = true;
|
||||
//设置置顶
|
||||
Win.ResetFocus();
|
||||
}
|
||||
}
|
||||
|
||||
//攻坚队攻坚开始回调
|
||||
function RaidStartFightCallBack(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
RaidStage = Jso.state;
|
||||
MyRaidState = Jso.state;
|
||||
|
||||
//在获取一下攻坚队信息
|
||||
local Jso = {
|
||||
op = 20064011
|
||||
}
|
||||
SendPackEx(Jso);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//结束时间
|
||||
EndTime = null;
|
||||
//上次刷新信息包的时间
|
||||
PackCurT = null;
|
||||
|
||||
//攻坚队信息包
|
||||
function RaidFightInfoCallBack(Chunk) {
|
||||
PackCurT = Clock();
|
||||
local Info = Json.Decode(Chunk).fightInfo;
|
||||
EndTime = Info.endTime;
|
||||
|
||||
if (FightSituationWindow_Object) FightSituationWindow_Object.InitInfo(Info);
|
||||
|
||||
//如果存在
|
||||
if (MyRaidTeam && MyRaidTeam.InfoFlag) {
|
||||
for (local i = 0; i< MyRaidTeam.MembersList.len(); i++) {
|
||||
local PInfo = MyRaidTeam.MembersList[i].InfoObj;
|
||||
local CID = PInfo.Cid;
|
||||
|
||||
local Flag = false;
|
||||
foreach(scid in Info.Standby) {
|
||||
if (scid == CID) Flag = true;
|
||||
}
|
||||
if (Flag) {
|
||||
MyRaidTeam.MembersList[i].InfoObj.Standby <- true;
|
||||
} else {
|
||||
MyRaidTeam.MembersList[i].InfoObj.Standby <- false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//收到奖励包
|
||||
function RaidRewardInfoCallBack(Chunk) {
|
||||
local Info = Json.Decode(Chunk);
|
||||
RewardWindow_Object.Init(Info);
|
||||
}
|
||||
|
||||
//收到初始化包
|
||||
function RaidInitCallBack(Chunk) {
|
||||
//我的攻坚队状态
|
||||
MyRaidState = null;
|
||||
//我的攻坚队伍
|
||||
MyRaidTeam = null;
|
||||
//我的攻坚队伍ID
|
||||
MyRaidTeamId = null;
|
||||
//我的Cid
|
||||
MyCid = null;
|
||||
//我是否是攻坚队队长
|
||||
IsCaptain = null;
|
||||
//结束时间
|
||||
EndTime = null;
|
||||
//我的攻坚队攻坚阶段
|
||||
RaidStage = 0;
|
||||
//我的攻坚队伍头像存储
|
||||
Portrait = null;
|
||||
|
||||
//安图恩我的队伍窗口
|
||||
PartyWindow_Object.DestroyWindow();
|
||||
//攻坚战况表窗口
|
||||
FightSituationWindow_Object.DestroyWindow();
|
||||
//攻坚大厅窗口
|
||||
PartyHallWindow_Object.DestroyWindow();
|
||||
//翻牌奖励窗口
|
||||
RewardWindow_Object.DestroyWindow();
|
||||
//编队窗口
|
||||
PartyFormationWindow_Object.DestroyWindow();
|
||||
|
||||
//安图恩我的队伍窗口
|
||||
PartyWindow_Object = null;
|
||||
//攻坚战况表窗口
|
||||
FightSituationWindow_Object = null;
|
||||
//攻坚大厅窗口
|
||||
PartyHallWindow_Object = null;
|
||||
//翻牌奖励窗口
|
||||
RewardWindow_Object = null;
|
||||
//编队窗口
|
||||
PartyFormationWindow_Object = null;
|
||||
|
||||
}
|
||||
|
||||
MonsterFMap = [202210052, 202210053, 202210054, 202210055];
|
||||
//火山怪物投放包
|
||||
function MonsterSendCallBack(Chunk) {
|
||||
local Info = Json.Decode(Chunk);
|
||||
if (sq_GetCurrentModuleType() == 3) {
|
||||
local obj = sq_GetMyMasterCharacter();
|
||||
obj = sq_ObjectToSQRCharacter(obj);
|
||||
obj.sq_SendCreatePassiveObjectPacket(MonsterFMap[Info.id], 0, 120, 1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
constructor() {
|
||||
// DrawStartAniMark = true;
|
||||
// DrawStartAniT = Clock();
|
||||
|
||||
Pack_Control.rawset(20064028, RaidStartFightCallBack.bindenv(this));
|
||||
Pack_Control.rawset(20064016, RaidFightInfoCallBack.bindenv(this));
|
||||
Pack_Control.rawset(20064004, GetTeamInfoCallBack.bindenv(this));
|
||||
Pack_Control.rawset(20064036, AntonFightBase.bindenv(this));
|
||||
//攻坚奖励包
|
||||
Pack_Control.rawset(20064026, RaidRewardInfoCallBack.bindenv(this));
|
||||
//初始化包 退出队伍 或者 被 请出队伍
|
||||
Pack_Control.rawset(20064008, RaidInitCallBack.bindenv(this));
|
||||
//火山怪物投放
|
||||
Pack_Control.rawset(20064050, MonsterSendCallBack.bindenv(this));
|
||||
//绘制动画包
|
||||
Pack_Control.rawset(20064038, RaidPlayAniCallBack.bindenv(this));
|
||||
|
||||
|
||||
//获取基础配置回调包
|
||||
Pack_Control.rawset(20064502, FiendwarBase.bindenv(this));
|
||||
//第一次上线要重新请求一下位置信息
|
||||
GetFiendwarBase();
|
||||
//看看是否有断线重连
|
||||
GetFiendwarDown();
|
||||
}
|
||||
|
||||
|
||||
function Proc(obj) {
|
||||
PartyHallWindow_Object = LenheartNewUI_CreateWindow(Rindro_Anton_PartyHallC, "新安图恩攻坚大厅窗口", ((getroottable().Rindro_Scr_Width - 478)).tointeger(), 40, 478, 434, 18);
|
||||
PartyFormationWindow_Object = LenheartNewUI_CreateWindow(Rindro_AntonPartyFormation, "安图恩我的队伍编队窗口", 375, 190, 294, 192, 18);
|
||||
FightSituationWindow_Object = LenheartNewUI_CreateWindow(Rindro_AntonFightSituationC, "安图恩攻坚战况表", ((getroottable().Rindro_Scr_Width - 800) / 2).tointeger(), 8, 800, 600, 0);
|
||||
PartyWindow_Object = LenheartNewUI_CreateWindow(Rindro_AntonPartyInfoC, "安图恩我的队伍窗口", 6, 15, 354, 566, 18);
|
||||
RewardWindow_Object = LenheartNewUI_CreateWindow(Rindro_Anton_RewardC, "安图恩翻牌奖励窗口", 0, 0, 0, 0, 0);
|
||||
LenheartNewUI_CreateWindow(Rindro_Anton_NotiC, "安图恩攻坚队伍消息分发", 0, 0, 0, 0, 0);
|
||||
|
||||
if (FightSituationWindow_Object) FightSituationWindow_Object.TopDraw(obj);
|
||||
|
||||
//绘制动画
|
||||
DrawPlayAni(obj);
|
||||
}
|
||||
|
||||
|
||||
DrawPlayAniMark = null;
|
||||
DrawPlayAniT = null;
|
||||
|
||||
function RaidPlayAniCallBack(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
DrawPlayAniMark = Jso.type;
|
||||
DrawPlayAniT = Clock();
|
||||
}
|
||||
|
||||
//绘制通关副本动画
|
||||
function DrawPlayAni(obj) {
|
||||
if (!DrawPlayAniMark || !DrawPlayAniT) return;
|
||||
local Ct = Clock() - DrawPlayAniT;
|
||||
switch (DrawPlayAniMark) {
|
||||
case 1: //通关擎天A
|
||||
case 2: //通关擎天B
|
||||
case 13: //通关擎天B
|
||||
local Ani = T_DrawDynamicAni(obj, "common/anton/title/04_clear_back.ani", 0, 180, "安图恩通关擎天A" + DrawPlayAniT);
|
||||
local str = "擎天之柱A";
|
||||
if (DrawPlayAniMark == 2) str = "擎天之柱B"
|
||||
if (DrawPlayAniMark == 13) str = "黑色火山"
|
||||
if (Ct >= 350 && Ct <= 1400) L_sq_DrawCode(str, 236 + 158 - LenheartTextClass.GetStringLength(str) / 2, 244, sq_RGBA(255, 146, 0, 250), 0, 1);
|
||||
break;
|
||||
case 5:
|
||||
T_DrawDynamicAni(obj, "common/anton/title/00_start_back.ani", 430, 210 + 26, "安图恩阻截开始" + DrawPlayAniT);
|
||||
break;
|
||||
case 6:
|
||||
T_DrawDynamicAni(obj, "common/anton/title/02_success_back.ani", 430, 210 + 26, "安图恩阻截成功" + DrawPlayAniT);
|
||||
break;
|
||||
case 7:
|
||||
T_DrawDynamicAni(obj, "common/anton/title/01_fail_back.ani", 430, 210 + 26, "安图恩阻截失败" + DrawPlayAniT);
|
||||
break;
|
||||
case 8:
|
||||
T_DrawDynamicAni(obj, "common/anton/title/00_start_back_1.ani", 430, 210 + 26, "安图恩灭杀开始" + DrawPlayAniT);
|
||||
break;
|
||||
case 9:
|
||||
T_DrawDynamicAni(obj, "common/anton/title/02_success_back_1.ani", 430, 210 + 26, "安图恩灭杀成功" + DrawPlayAniT);
|
||||
break;
|
||||
case 10:
|
||||
T_DrawDynamicAni(obj, "common/anton/title/01_fail_back_1.ani", 430, 210 + 26, "安图恩灭杀失败" + DrawPlayAniT);
|
||||
break;
|
||||
case 11:
|
||||
case 12:
|
||||
T_DrawDynamicAni(obj, "common/anton/title/03_warning_back.ani", 0, 210 + 26, "安图恩火山警告" + DrawPlayAniT);
|
||||
local str = "火山能量即将过载,请立即前往压制!!!";
|
||||
if (DrawPlayAniMark == 12) str = "震颤的大地已经复活,请立即前往压制!!!"
|
||||
if (Ct >= 350 && Ct <= 1600) L_sq_DrawCode(str, 236 + 158 - LenheartTextClass.GetStringLength(str) / 2, 320, sq_RGBA(255, 50, 50, 250), 0, 1);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (Ct >= 3000) {
|
||||
DrawPlayAniMark = null;
|
||||
DrawPlayAniT = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
getroottable().rawdelete("RinDro_Anton_Obj");
|
||||
|
||||
function Lenheart_Rindro_Anton_New(obj) {
|
||||
local RootTab = getroottable();
|
||||
if (!RootTab.rawin("RinDro_Anton_Obj")) {
|
||||
RootTab.rawset("RinDro_Anton_Obj", RinDro_Anton());
|
||||
} else {
|
||||
RootTab["RinDro_Anton_Obj"].Proc(obj);
|
||||
}
|
||||
}
|
||||
|
||||
if (getroottable().rawin("LenheartTopFuncTab")) {
|
||||
getroottable()["LenheartTopFuncTab"].rawset("Lenheart_Rindro_Anton_NewFunc", Lenheart_Rindro_Anton_New);
|
||||
} else {
|
||||
local T = {};
|
||||
T.rawset("Lenheart_Rindro_Anton_NewFunc", Lenheart_Rindro_Anton_New);
|
||||
getroottable().rawset("LenheartTopFuncTab", T);
|
||||
}
|
||||
Reference in New Issue
Block a user