579 lines
19 KiB
Plaintext
579 lines
19 KiB
Plaintext
|
|
/*
|
||
|
|
文件名:SkinHub.nut
|
||
|
|
路径:Project/SkinHub/SkinHub.nut
|
||
|
|
创建日期:2024-09-27 22:44
|
||
|
|
文件用途:皮肤仓库
|
||
|
|
*/
|
||
|
|
|
||
|
|
class DamageFontObjectC {
|
||
|
|
X = 0;
|
||
|
|
Y = 0;
|
||
|
|
IDX = null;
|
||
|
|
UIdx = null;
|
||
|
|
gName = null;
|
||
|
|
gImgPath = null;
|
||
|
|
gMaxNumArr = null;
|
||
|
|
ID = null;
|
||
|
|
Parent = null;
|
||
|
|
ItemId = null;
|
||
|
|
|
||
|
|
constructor(ItemId, gName, gImgPath, gMaxNumArr, gId, Parent) {
|
||
|
|
this.gName = gName;
|
||
|
|
this.gImgPath = gImgPath;
|
||
|
|
this.gMaxNumArr = gMaxNumArr;
|
||
|
|
this.gMaxNumArr = gMaxNumArr;
|
||
|
|
this.ID = gId;
|
||
|
|
this.Parent = Parent;
|
||
|
|
this.ItemId = ItemId;
|
||
|
|
}
|
||
|
|
|
||
|
|
//绘制
|
||
|
|
function Show(obj, x, y) {
|
||
|
|
X = x;
|
||
|
|
Y = y;
|
||
|
|
|
||
|
|
//绘制底
|
||
|
|
L_sq_DrawImg("interface2/skinstorage/slots.img", 0, x, y);
|
||
|
|
L_Sq_DrawItem(X + 22, Y + 23, ID, 1, 0, 0, 0);
|
||
|
|
//绘制盖子
|
||
|
|
L_sq_DrawImg("interface2/skinstorage/slots.img", 2, x, y);
|
||
|
|
//
|
||
|
|
L_sq_DrawCode(gName, X + 84, Y + 23, sq_RGBA(178, 155, 113, 250), 0, 1);
|
||
|
|
L_sq_DrawCode("Yosin皮肤字体", X + 84, Y + 40, sq_RGBA(255, 177, 0, 250), 0, 1);
|
||
|
|
L_sq_DrawCode("无限制使用", X + 84, Y + 55, sq_RGBA(255, 85, 0, 250), 0, 1);
|
||
|
|
|
||
|
|
//绘制选中效果
|
||
|
|
if (Parent.FocusPrintIdx == ItemId) L_sq_DrawImg("interface2/skinstorage/slots.img", 4, x, y);
|
||
|
|
//绘制应用中
|
||
|
|
if (Parent.NowDamageSkinIndex == ItemId) L_sq_DrawImg("interface2/skinstorage/slots.img", 23, x + 290, y + 3);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
class SkinHubC extends LenheartNewUI_Windows {
|
||
|
|
//调试模式
|
||
|
|
// DeBugMode = true;
|
||
|
|
|
||
|
|
//不是窗口
|
||
|
|
// NoWindow = true;
|
||
|
|
|
||
|
|
//是否可见
|
||
|
|
Visible = false;
|
||
|
|
|
||
|
|
|
||
|
|
//当前字体皮肤编号
|
||
|
|
NowDamageSkinIndex = null;
|
||
|
|
//拥有的字体列表
|
||
|
|
HasDamageSkinList = null;
|
||
|
|
//字体皮肤数据
|
||
|
|
DamageSkinList = null;
|
||
|
|
//数字伤害类型
|
||
|
|
RealType = null;
|
||
|
|
//当前页面
|
||
|
|
NowPage = 0;
|
||
|
|
|
||
|
|
//最大伤害数字
|
||
|
|
MaxDamageNumber = 99999999;
|
||
|
|
|
||
|
|
//显示对象
|
||
|
|
FocusPrintIdx = 561320400;
|
||
|
|
FocusPrintType = 0;
|
||
|
|
//Nut白字倍率
|
||
|
|
NutWRate = 0;
|
||
|
|
|
||
|
|
FontIdx = 0;
|
||
|
|
MapBaseXPos = 0;
|
||
|
|
MapBaseYPos = 0;
|
||
|
|
DamageFontArray = null;
|
||
|
|
|
||
|
|
//获取字体列表信息
|
||
|
|
function GetFontList() {
|
||
|
|
local T = {
|
||
|
|
op = 20076005,
|
||
|
|
}
|
||
|
|
SendPack(T);
|
||
|
|
}
|
||
|
|
|
||
|
|
//获取字体列表信息回调
|
||
|
|
function GetFontListCallBack(Chunk) {
|
||
|
|
local Jso = Json.Decode(Chunk);
|
||
|
|
NowDamageSkinIndex = Jso.damagefontCurrent;
|
||
|
|
InitDamageFont(NowDamageSkinIndex);
|
||
|
|
FocusPrintIdx = Jso.damagefontCurrent;
|
||
|
|
foreach(value in Jso.damagefont) {
|
||
|
|
DamageSkinList[value].IsHave = true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//基础信息包回调
|
||
|
|
function GetBaseInfoCallBack(Chunk) {
|
||
|
|
DamageSkinList = {};
|
||
|
|
local Jso = Json.Decode(Chunk);
|
||
|
|
local Info = Jso.ZipS;
|
||
|
|
Info = Json.Decode(L_sq_Dezlib(Info)).info;
|
||
|
|
foreach(Idx, value in Info) {
|
||
|
|
value.IsHave <- false;
|
||
|
|
DamageSkinList.rawset(Idx.tointeger(), value);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//初始化伤害字体
|
||
|
|
function InitDamageFont(Idx) {
|
||
|
|
if (Idx == null) {
|
||
|
|
for (local i = 0; i< 7; i++) {
|
||
|
|
L_sq_IntiNumberDraw("common/etc/damagefontskin/damagefont00.img", 0 + (i * 10), i);
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
for (local i = 0; i< 7; i++) {
|
||
|
|
L_sq_IntiNumberDraw(DamageSkinList[Idx].gImgPath, 0 + (i * 10), i);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//初始化数字伤害类型
|
||
|
|
function InitRealType() {
|
||
|
|
RealType = [0, 5, 1, 5, 2, 5, 1, 2, 3, 5, 4, 5, 3, 5, 4, 5, 0, 5, 4, 5, 2, 5, 4];
|
||
|
|
}
|
||
|
|
|
||
|
|
//设置NUT白字
|
||
|
|
function SetNutRate() {
|
||
|
|
// local allRate = 1.0;
|
||
|
|
// for (local i = 1; i < 41; i++) {
|
||
|
|
// allRate = allRate * (sq_GetIntData(obj, 169, i) / 100).tofloat();
|
||
|
|
// }
|
||
|
|
// for (local w = 1; w < 21; w++) {
|
||
|
|
// allRate = allRate * (sq_GetIntData(obj, 174, w) / 100).tofloat();
|
||
|
|
// }
|
||
|
|
NutWRate = 1.0;
|
||
|
|
}
|
||
|
|
|
||
|
|
//设置地图原点
|
||
|
|
function SetMapBasePos(obj) {
|
||
|
|
local objectManager = obj.getObjectManager();
|
||
|
|
if (!objectManager) return;
|
||
|
|
MapBaseXPos = objectManager.getFieldXPos(0, ENUM_DRAWLAYER_NORMAL);
|
||
|
|
MapBaseYPos = objectManager.getFieldYPos(0, 0, ENUM_DRAWLAYER_NORMAL);
|
||
|
|
}
|
||
|
|
|
||
|
|
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||
|
|
Childrens = [];
|
||
|
|
|
||
|
|
DamageFontArray = {};
|
||
|
|
DamageSkinList = {};
|
||
|
|
HasDamageSkinList = [];
|
||
|
|
|
||
|
|
local T = {
|
||
|
|
gIdx = 0, //伤害字体排列编号
|
||
|
|
gName = "默认伤害字体", //伤害字体名称
|
||
|
|
gImgPath = "common/etc/damagefontskin/damagefont00.img", //Img路径
|
||
|
|
gMaxNumArr = [73, 72], //普通999帧数数组
|
||
|
|
gKeyMaxNumArr = [71, 70], //暴击999帧数数组
|
||
|
|
itemId = 561320400, //道具ID
|
||
|
|
IsHave = true
|
||
|
|
}
|
||
|
|
DamageSkinList.rawset(561320400, T);
|
||
|
|
|
||
|
|
//注册控件
|
||
|
|
RegisterWidget();
|
||
|
|
|
||
|
|
|
||
|
|
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||
|
|
|
||
|
|
Pack_Control.rawset(20076006, GetFontListCallBack.bindenv(this));
|
||
|
|
Pack_Control.rawset(20076010, GetBaseInfoCallBack.bindenv(this));
|
||
|
|
PushDamageFontDataFuncTab.rawset("SkinHub", PushDamageFontArray.bindenv(this));
|
||
|
|
|
||
|
|
//初始化伤害类型
|
||
|
|
InitRealType();
|
||
|
|
//初始化伤害字体
|
||
|
|
InitDamageFont(NowDamageSkinIndex);
|
||
|
|
}
|
||
|
|
|
||
|
|
function RegisterWidget() {
|
||
|
|
//关闭按钮
|
||
|
|
local CloseButton = LenheartNewUI_BaseButton(765, 2, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||
|
|
CloseButton.OnClick = function() {
|
||
|
|
this.Visible = false;
|
||
|
|
}.bindenv(this);
|
||
|
|
Childrens.append(CloseButton);
|
||
|
|
|
||
|
|
|
||
|
|
for (local i = 0; i< 5; i++) {
|
||
|
|
//激活按钮
|
||
|
|
local ActiveButton = LenheartNewUI_ButtonText(700, 140 + (i * 85), 15, "应 用");
|
||
|
|
ActiveButton.Data = i;
|
||
|
|
ActiveButton.SetFrame(null, 172);
|
||
|
|
ActiveButton.SetTextOffset(-3, 1);
|
||
|
|
ActiveButton.OnClickEx = function(Button) {
|
||
|
|
local T = {
|
||
|
|
op = 20076007,
|
||
|
|
itemId = HasDamageSkinList[Button.Data],
|
||
|
|
type = 0
|
||
|
|
}
|
||
|
|
SendPackEx(T);
|
||
|
|
NowDamageSkinIndex = HasDamageSkinList[Button.Data];
|
||
|
|
FocusPrintIdx = HasDamageSkinList[Button.Data];
|
||
|
|
InitDamageFont(HasDamageSkinList[Button.Data]);
|
||
|
|
}.bindenv(this);
|
||
|
|
ActiveButton.SetCallBackFunc(function(Button) {
|
||
|
|
if (Button.Data >= (HasDamageSkinList.len())) {
|
||
|
|
Button.Visible = false;
|
||
|
|
} else {
|
||
|
|
Button.Visible = true;
|
||
|
|
}
|
||
|
|
}.bindenv(this))
|
||
|
|
AddChild(ActiveButton);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
//测试伤害按钮
|
||
|
|
local TestButton = LenheartNewUI_ButtonText(10, 536, 15, "测试字体");
|
||
|
|
TestButton.SetFrame(null, 172);
|
||
|
|
TestButton.SetTextOffset(-7, 1);
|
||
|
|
TestButton.OnClickEx = function(Button) {
|
||
|
|
PushDamageFontArray(0x1AB7CDC, 400, 300, 0, Clock(), FocusPrintType, 0, 0);
|
||
|
|
}.bindenv(this);
|
||
|
|
TestButton.SetCallBackFunc(function(Button) {
|
||
|
|
if (Button.isInRect) {
|
||
|
|
L_sq_DrawWindow(X + 10, Y + 500, 160, 12, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||
|
|
L_sq_DrawCode("按下[空格键]以测试伤害数字。", X + 18, Y + 512, sq_RGBA(178, 155, 113, 250), 0, 1);
|
||
|
|
}
|
||
|
|
}.bindenv(this))
|
||
|
|
|
||
|
|
AddChild(TestButton);
|
||
|
|
}
|
||
|
|
|
||
|
|
//绘制主界面
|
||
|
|
function DrawMain(obj) {
|
||
|
|
//绘制窗口
|
||
|
|
L_sq_DrawImg("interface2/skinstorage/skinstorage.img", 0, X, Y);
|
||
|
|
|
||
|
|
//绘制字体排列窗口
|
||
|
|
L_sq_DrawImg("interface2/skinstorage/skinstorage.img", 5, X + 421 - 9, Y + 108 - 67);
|
||
|
|
//总览
|
||
|
|
L_sq_DrawImg("interface2/skinstorage/tab/tab_summary.img", 3, X + 421 - 8, Y + 46 - 8);
|
||
|
|
//边框
|
||
|
|
L_sq_DrawImg("interface2/skinstorage/tab/tab_partyframe.img", 3, X + 487 - 8, Y + 46 - 8);
|
||
|
|
//伤害字体
|
||
|
|
L_sq_DrawImg("interface2/skinstorage/tab/tab_damagefonts.img", 2, X + 533 + 4, Y + 42 - 3);
|
||
|
|
//觉醒插图
|
||
|
|
L_sq_DrawImg("interface2/skinstorage/tab/tab_cutscene.img", 3, X + 609 - 7, Y + 52 - 14);
|
||
|
|
//表情
|
||
|
|
L_sq_DrawImg("interface2/skinstorage/tab/tab_instantemoticon.img", 3, X + 674 - 16, Y + 49 - 11);
|
||
|
|
//表情
|
||
|
|
L_sq_DrawImg("interface2/skinstorage/tab/tab_weaponlook.img", 3, X + 722 - 7, Y + 55 - 17);
|
||
|
|
|
||
|
|
|
||
|
|
L_sq_DrawCode("伤害字体类型: " + FocusPrintType, X + 84, Y + 542, sq_RGBA(178, 155, 113, 250), 0, 1);
|
||
|
|
|
||
|
|
local RealDrawPos = 0;
|
||
|
|
HasDamageSkinList = [];
|
||
|
|
foreach(Pos, v in DamageSkinList) {
|
||
|
|
//如果拥有字体
|
||
|
|
if (v.IsHave) {
|
||
|
|
HasDamageSkinList.append(v.itemId);
|
||
|
|
local Yoffset = ((RealDrawPos + NowPage) * 85);
|
||
|
|
RealDrawPos++;
|
||
|
|
if (Yoffset > 400 || Yoffset< 0) continue;
|
||
|
|
local Dobj = DamageFontObjectC(v.itemId, v.gName, v.gImgPath, v.gMaxNumArr, v.itemId, this);
|
||
|
|
Dobj.Show(obj, X + 425, Y + 114 + Yoffset);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//绘制页数
|
||
|
|
local Page = (abs(NowPage) + 1) + " / " + (abs(HasDamageSkinList.len() - 5) + 1);
|
||
|
|
L_sq_DrawCode(Page, X + 586 + LenheartTextClass.GetStringLength(Page) / 2, Y + 537, sq_RGBA(150, 255, 30, 250), 0, 1);
|
||
|
|
|
||
|
|
local chr = sq_GetCNRDObjectToSQRCharacter(obj);
|
||
|
|
local charAni = chr.sq_GetStayAni();
|
||
|
|
sq_AnimationProc(charAni);
|
||
|
|
sq_drawCurrentFrame(charAni, X + 210, Y + 364, false);
|
||
|
|
|
||
|
|
local MonsterAni = T_DrawDynamicAni_Fx(obj, "monster/goblin/animation_goblin2/down.ani", X + 360, Y + 364, "伤害字体哥布林倒地");
|
||
|
|
local NeArray = TryGetArry(1);
|
||
|
|
if (sq_GetCurrentTime(MonsterAni) >= 1000 && NeArray.len() == 0) {
|
||
|
|
local Timer = Clock();
|
||
|
|
local T = {
|
||
|
|
gIdx = "演示字体" + FontIdx,
|
||
|
|
XPos = X + 166,
|
||
|
|
YPos = Y + 230,
|
||
|
|
DamageNum = 999999999,
|
||
|
|
Type = 5,
|
||
|
|
TimeObj = Timer,
|
||
|
|
isKeyHit = false,
|
||
|
|
}
|
||
|
|
NeArray.append(T);
|
||
|
|
DamageFontArray.rawset(1, NeArray);
|
||
|
|
sq_Rewind(MonsterAni);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function TryGetArry(Type) {
|
||
|
|
if (DamageFontArray.rawin(Type)) return DamageFontArray[Type];
|
||
|
|
else return [];
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
//将伤害字体数据Push进数组
|
||
|
|
function PushDamageFontArray(ObjAddress, X, Y, Z, Value, Type, A1, A2) {
|
||
|
|
local Timer = Clock();
|
||
|
|
local gRealType;
|
||
|
|
if (Type <= 7) gRealType = RealType[Type];
|
||
|
|
else gRealType = RealType[((Type - 7) % 16) + 7];
|
||
|
|
//暴击
|
||
|
|
local KeyHit = false;
|
||
|
|
if (Type == 17) KeyHit = true;
|
||
|
|
//是扣血还是回血
|
||
|
|
if (Type == 7) {
|
||
|
|
if (Value< 0) gRealType = 4;
|
||
|
|
}
|
||
|
|
if (Type == 4) {
|
||
|
|
if (Value< 0) gRealType = 0;
|
||
|
|
}
|
||
|
|
if (Type == 1 || Type == 17) {
|
||
|
|
//记录总伤害
|
||
|
|
local oldDamageNum = Value;
|
||
|
|
//计算我的真是伤害
|
||
|
|
Value = (Value / NutWRate).tointeger();
|
||
|
|
//减去真实伤害 就是nut伤害
|
||
|
|
local newDamageNum = oldDamageNum - Value;
|
||
|
|
//如果有Nut伤害存在
|
||
|
|
if (newDamageNum > 0) {
|
||
|
|
local NeArray = TryGetArry(Type);
|
||
|
|
local Timer = Clock();
|
||
|
|
local T = {
|
||
|
|
gIdx = ObjAddress + FontIdx,
|
||
|
|
XPos = X,
|
||
|
|
YPos = Y - Z - (NeArray.len() * 16),
|
||
|
|
DamageNum = Value,
|
||
|
|
Type = 0,
|
||
|
|
TimeObj = Timer,
|
||
|
|
isKeyHit = KeyHit,
|
||
|
|
}
|
||
|
|
NeArray.append(T);
|
||
|
|
DamageFontArray.rawset(Type, NeArray);
|
||
|
|
++FontIdx;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
local NeArray = TryGetArry(Type);
|
||
|
|
local T = {
|
||
|
|
gIdx = ObjAddress + FontIdx,
|
||
|
|
XPos = X + sq_getRandom(-15, 15),
|
||
|
|
YPos = Y - Z + sq_getRandom(-20, 20),
|
||
|
|
DamageNum = Value,
|
||
|
|
Type = gRealType,
|
||
|
|
TimeObj = Timer,
|
||
|
|
isKeyHit = KeyHit,
|
||
|
|
}
|
||
|
|
NeArray.append(T);
|
||
|
|
DamageFontArray.rawset(Type, NeArray);
|
||
|
|
++FontIdx;
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
|
||
|
|
function DrawFontImg(X, Y, Type, DamageNum, Time, isKeyHit) {
|
||
|
|
local rate = sq_GetUniformVelocity(60, 100, Time, 100);
|
||
|
|
rate = rate.tofloat() / 100.0;
|
||
|
|
//如果暴击
|
||
|
|
if (isKeyHit) {
|
||
|
|
rate *= 1.3;
|
||
|
|
Type = 4;
|
||
|
|
}
|
||
|
|
//白字
|
||
|
|
if (Type == 0) {
|
||
|
|
rate *= 0.7;
|
||
|
|
Y += 60;
|
||
|
|
}
|
||
|
|
local UpOffset = 0;
|
||
|
|
local Alpha = 0;
|
||
|
|
//超过0.3秒开始飘
|
||
|
|
if (Time >= 300) {
|
||
|
|
UpOffset = sq_GetUniformVelocity(0, 15, Time - 300, 500);
|
||
|
|
}
|
||
|
|
//超过0.3秒开始飘
|
||
|
|
if (Time >= 800) {
|
||
|
|
UpOffset = sq_GetAccel(15, 100, Time - 800, 500, true);
|
||
|
|
Alpha = sq_GetUniformVelocity(0, 250, Time - 800, 500);
|
||
|
|
}
|
||
|
|
if (DamageNum > MaxDamageNumber) {
|
||
|
|
if (isKeyHit) {
|
||
|
|
foreach(imgpos in DamageSkinList[FocusPrintIdx].gKeyMaxNumArr) {
|
||
|
|
L_sq_DrawImg(DamageSkinList[FocusPrintIdx].gImgPath, imgpos, X + ((30 * (MaxDamageNumber.tostring().len())) - ((20 * (MaxDamageNumber.tostring().len())) * rate)), Y + (20 - (20 * rate)) - UpOffset, 0, sq_RGBA(255, 255, 255, 255 - Alpha), rate, rate);
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
foreach(imgpos in DamageSkinList[FocusPrintIdx].gMaxNumArr) {
|
||
|
|
L_sq_DrawImg(DamageSkinList[FocusPrintIdx].gImgPath, imgpos, X + ((30 * (MaxDamageNumber.tostring().len())) - ((20 * (MaxDamageNumber.tostring().len())) * rate)), Y + (20 - (20 * rate)) - UpOffset, 0, sq_RGBA(255, 255, 255, 255 - Alpha), rate, rate);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
// L_sq_DrawNumber(X + ((30 * (DamageNum.tostring().len())) - ((20 * (DamageNum.tostring().len())) * rate)), Y + (20 - (20 * rate)) - UpOffset, sq_RGBA(255, 255, 255, 255 - Alpha), rate, rate, Type, 18 * rate, 6, sq_Abs(DamageNum));
|
||
|
|
L_sq_DrawNumber(X, Y - UpOffset, sq_RGBA(255, 255, 255, 255 - Alpha), rate, rate, Type, sq_Abs(DamageNum));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//伤害字体绘制
|
||
|
|
function DrawFont(obj) {
|
||
|
|
foreach(Type, FontArrayObject in DamageFontArray) {
|
||
|
|
if (Type == 0) continue;
|
||
|
|
for (local i = 0; i< FontArrayObject.len(); i++) {
|
||
|
|
local FontObject = FontArrayObject[i];
|
||
|
|
if (FontObject) {
|
||
|
|
local Timer = FontObject.TimeObj;
|
||
|
|
if (Timer) {
|
||
|
|
local Time = Clock() - Timer;
|
||
|
|
if (Time >= 1300) {
|
||
|
|
FontObject.TimeObj = null;
|
||
|
|
FontArrayObject.remove(i);
|
||
|
|
continue;
|
||
|
|
} else {
|
||
|
|
DrawFontImg(FontObject.XPos - MapBaseXPos, FontObject.YPos - MapBaseYPos, FontObject.Type, FontObject.DamageNum, Time, FontObject.isKeyHit);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
//白字
|
||
|
|
foreach(Type, FontArrayObject in DamageFontArray) {
|
||
|
|
if (Type != 0) break;
|
||
|
|
for (local i = 0; i< FontArrayObject.len(); i++) {
|
||
|
|
local FontObject = FontArrayObject[i];
|
||
|
|
if (FontObject) {
|
||
|
|
local Timer = FontObject.TimeObj;
|
||
|
|
if (Timer) {
|
||
|
|
local Time = Clock() - Timer;
|
||
|
|
if (Time >= 1100) {
|
||
|
|
FontObject.TimeObj = null;
|
||
|
|
FontArrayObject.remove(i);
|
||
|
|
continue;
|
||
|
|
} else {
|
||
|
|
DrawFontImg(FontObject.XPos - MapBaseXPos, FontObject.YPos - MapBaseYPos, FontObject.Type, FontObject.DamageNum, Time, FontObject.isKeyHit);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
function T_DrawDynamicAni_Fx(obj, aniFileName, x, y, aniname) {
|
||
|
|
local ani = obj.getVar().GetAnimationMap(aniname, aniFileName);
|
||
|
|
ani.setImageRateFromOriginal(-1.0, 1.0);
|
||
|
|
sq_AnimationProc(ani);
|
||
|
|
sq_drawCurrentFrame(ani, x, y, true);
|
||
|
|
return ani;
|
||
|
|
}
|
||
|
|
|
||
|
|
function Show(obj) {
|
||
|
|
DrawMain(obj);
|
||
|
|
LenheartNewUI_Windows.Show(obj);
|
||
|
|
}
|
||
|
|
|
||
|
|
function TopShow(obj) {
|
||
|
|
//绘制字体
|
||
|
|
DrawFont(obj);
|
||
|
|
|
||
|
|
|
||
|
|
if (MousePosFlag == 1) {
|
||
|
|
L_sq_DrawWindow(X + 60, Y + 500, 160, 12, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||
|
|
L_sq_DrawCode("使用鼠标滚轮以改变字体类型。", X + 68, Y + 512, sq_RGBA(178, 155, 113, 250), 0, 1);
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
MousePosFlag = 0;
|
||
|
|
//override
|
||
|
|
//鼠标滚轮事件回调
|
||
|
|
function OnMouseWheel(Flag, MousePos_X, MousePos_Y) {
|
||
|
|
MousePos_X -= X;
|
||
|
|
MousePos_Y -= Y;
|
||
|
|
|
||
|
|
|
||
|
|
//鼠标在滚动字体类型区域
|
||
|
|
if (MousePosFlag == 1) {
|
||
|
|
if (Flag) {
|
||
|
|
if (FocusPrintType< 17) FocusPrintType++;
|
||
|
|
} else {
|
||
|
|
if (FocusPrintType > 0) FocusPrintType--;
|
||
|
|
}
|
||
|
|
} else if (MousePosFlag == 2) {
|
||
|
|
if (Flag) {
|
||
|
|
if (NowPage< 0) NowPage++;
|
||
|
|
} else {
|
||
|
|
if ((HasDamageSkinList.len()) > abs(NowPage - 5)) NowPage--;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//调用原生方法
|
||
|
|
LenheartNewUI_Windows.OnMouseWheel(Flag, MousePos_X, MousePos_Y);
|
||
|
|
}
|
||
|
|
|
||
|
|
//override
|
||
|
|
function OnMouseProc(Flag, MousePos_X, MousePos_Y) {
|
||
|
|
//调用原生方法
|
||
|
|
LenheartNewUI_Windows.OnMouseProc(Flag, MousePos_X, MousePos_Y);
|
||
|
|
|
||
|
|
MousePos_X -= X;
|
||
|
|
MousePos_Y -= Y;
|
||
|
|
|
||
|
|
|
||
|
|
//鼠标在滚动字体类型区域
|
||
|
|
if (MousePos_X >= 82 && MousePos_Y >= 538 && MousePos_X <= 188 && MousePos_Y <= 558) {
|
||
|
|
MousePosFlag = 1;
|
||
|
|
} else if (MousePos_X >= 420 && MousePos_Y >= 110 && MousePos_X <= 782 && MousePos_Y <= 564) {
|
||
|
|
MousePosFlag = 2;
|
||
|
|
} else {
|
||
|
|
MousePosFlag = 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
//逻辑入口
|
||
|
|
function Proc(obj) {
|
||
|
|
LenheartNewUI_Windows.SyncPos(X, Y);
|
||
|
|
|
||
|
|
//绘制字体
|
||
|
|
if (sq_GetCurrentModuleType() == 3) DrawFont(obj);
|
||
|
|
//回到城镇清空字体数组
|
||
|
|
else if (Visible == false) {
|
||
|
|
DamageFontArray = null;
|
||
|
|
DamageFontArray = {};
|
||
|
|
MapBaseXPos = 0;
|
||
|
|
MapBaseYPos = 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
//设置地图原点
|
||
|
|
SetMapBasePos(obj);
|
||
|
|
//设置NUT白字
|
||
|
|
SetNutRate();
|
||
|
|
|
||
|
|
|
||
|
|
if (KeyPressNB.isKeyPress(7, "damage") && this.Visible && sq_GetCurrentModuleType() != 3) {
|
||
|
|
PushDamageFontArray(0x1AB7CDC, 400, 300, 0, Clock(), FocusPrintType, 0, 0);
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
function OpenCallBack() {
|
||
|
|
this.Visible = true;
|
||
|
|
ResetFocus();
|
||
|
|
GetFontList();
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
function Lenheart_SkinHub_Fun(obj) {
|
||
|
|
local RootTab = getroottable();
|
||
|
|
if (!RootTab.rawin("SkinHub_Obj")) {
|
||
|
|
local Winobj = LenheartNewUI_CreateWindow(SkinHubC, "皮肤仓库窗口", ((getroottable().Rindro_Scr_Width - 788) / 2).tointeger(), 12, 788, 576, 26);
|
||
|
|
|
||
|
|
EventList_Obj.AddEvent("皮肤仓库", 670, Winobj, "interface2/hud/information_button/information_button_cn.img");
|
||
|
|
RootTab.rawset("SkinHub_Obj", Winobj);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
getroottable()["LenheartFuncTab"].rawset("SkinHubFuncN", Lenheart_SkinHub_Fun);
|