diff --git a/sqr/User/Asset/Character/Animation.nut b/sqr/User/Asset/Character/Animation.nut index 779fc24..fe1846c 100644 --- a/sqr/User/Asset/Character/Animation.nut +++ b/sqr/User/Asset/Character/Animation.nut @@ -369,11 +369,10 @@ class Character_Animation extends Actor { //初始化名字 function InitName() { //创建名字对象 - Name = FontAssetManager.GenerateNormal("", false, { + Name = FontAssetManager.GenerateNormal("", true, { color = sq_RGBA(209, 185, 148, 255), - alignment = TextAlign.Center }); - Name.SetPosition(ENUM_RINDRO_JOB_TITLE_HEIGHT[Parent.Job]); + Name.SetPosition(ENUM_RINDRO_JOB_TITLE_HEIGHT[Parent.Job].x, ENUM_RINDRO_JOB_TITLE_HEIGHT[Parent.Job].y); Name.SetZOrder(80000); Addchild(Name); } diff --git a/sqr/User/UI/Window/1_Select_Character.nut b/sqr/User/UI/Window/1_Select_Character.nut index 53d9520..2c1a892 100644 --- a/sqr/User/UI/Window/1_Select_Character.nut +++ b/sqr/User/UI/Window/1_Select_Character.nut @@ -213,8 +213,8 @@ class _Select_Character_Chr extends Yosin_CommonUi { local Charc = GameObject.CreateCharacter(Info.job, Info.equip); Charc.SetAnimation("RestAni"); Charc.SetPosition(64, 156, 0); - Charc.SetName(Info.lv + "级 " + Info.name); - Charc.AnimationManager.Name.MoveBy(0, 180); + Charc.SetName(Info.lv + " 级 " + Info.name); + Charc.AnimationManager.Name.MoveBy(21 - Charc.AnimationManager.Name.GetSize().w / 2, 180); Addchild(Charc); } diff --git a/sqr/User/UI/Window/2_Create_Character.nut b/sqr/User/UI/Window/2_Create_Character.nut index 827f873..b2dff4d 100644 --- a/sqr/User/UI/Window/2_Create_Character.nut +++ b/sqr/User/UI/Window/2_Create_Character.nut @@ -14,7 +14,7 @@ enum BottomLightAniType { } // 获取职业信息 -function getJobInfo( job ) { +function getJobInfo(job) { local T = {}; switch (job) { case CHARACTERJOB.SWORDMAN: // 男鬼剑士 d @@ -200,7 +200,7 @@ function getJobInfo( job ) { function getJobEnum(index) { - local jobList = [CHARACTERJOB.SWORDMAN, CHARACTERJOB.AT_SWORDMAN, CHARACTERJOB.AT_FIGHTER, CHARACTERJOB.FIGHTER, CHARACTERJOB.GUNNER, CHARACTERJOB.AT_GUNNER, CHARACTERJOB.AT_MAGE, CHARACTERJOB.MAGE, CHARACTERJOB.PRIEST, CHARACTERJOB.AT_PRIEST, CHARACTERJOB.THIEF, CHARACTERJOB.KNIGHT, CHARACTERJOB.DEMONIC_LANCER, CHARACTERJOB.GUN_BLADER, CHARACTERJOB.ARCHER, CHARACTERJOB.DEMONIC_SWORDMAN,CHARACTERJOB.CREATOR_MAGE ]; + local jobList = [CHARACTERJOB.SWORDMAN, CHARACTERJOB.AT_SWORDMAN, CHARACTERJOB.AT_FIGHTER, CHARACTERJOB.FIGHTER, CHARACTERJOB.GUNNER, CHARACTERJOB.AT_GUNNER, CHARACTERJOB.AT_MAGE, CHARACTERJOB.MAGE, CHARACTERJOB.PRIEST, CHARACTERJOB.AT_PRIEST, CHARACTERJOB.THIEF, CHARACTERJOB.KNIGHT, CHARACTERJOB.DEMONIC_LANCER, CHARACTERJOB.GUN_BLADER, CHARACTERJOB.ARCHER, CHARACTERJOB.DEMONIC_SWORDMAN, CHARACTERJOB.CREATOR_MAGE]; return jobList[index]; } @@ -249,12 +249,12 @@ class _CreateCharacter extends Yosin_Window { // 创建角色回包 MySocket.RegisterHandler(4, function(Jso) { if (NoticeBox) NoticeBox.CloseWindow(); - if (Jso.type == 0){ + if (Jso.type == 0) { // 创建成功. //关闭创建界面 NoticeBox.DestroyWindow(); DestroyWindow(); - }else{ + } else { // 创建失败. NoticeBox = _Yosin_MessageBox("创建失败."); } @@ -319,12 +319,12 @@ class _CreateCharacter extends Yosin_Window { headList.OnClick = changJob.bindenv(this); // 职业介绍 - infoWidget = _CreateCharacter_SelectBaseInfo(140, 400); + infoWidget = _CreateCharacter_SelectBaseInfo(140, 400); AddUIChild(infoWidget); infoWidget.SetJob(getJobInfo(CHARACTERJOB.SWORDMAN)); // 创建职业 - infoWidget.OnClick = function () { + infoWidget.OnClick = function() { enter.SetVisible(true); }.bindenv(this); @@ -359,7 +359,7 @@ class _CreateCharacter extends Yosin_Window { AddUIChild(enter); // 确定 - enter.OnClick = function (enterName) { + enter.OnClick = function(enterName) { local jobEnum = getJobEnum(jobIndex); MySocket.Send(7, { name = enterName, @@ -391,7 +391,7 @@ class _CreateCharacter extends Yosin_Window { dustAni.SetVisible(false); auraAni.SetVisible(false); - switch (info.ani){ + switch (info.ani) { case BottomLightAniType.light: lightAni.SetVisible(true); break; @@ -407,7 +407,7 @@ class _CreateCharacter extends Yosin_Window { // 开始切换动画 - if (changJobAniClock == null) { + if (changJobAniClock == null) { changJobAniClock = clock(); } changNextJobAniClock = clock(); @@ -422,7 +422,7 @@ class _CreateCharacter extends Yosin_Window { return; } - }else { + } else { if (changJobAniClock == null) { print("NUll"); return; @@ -431,14 +431,14 @@ class _CreateCharacter extends Yosin_Window { // 动画的前90%,快,后10%,慢 local ani_progress = Math.sq_GetAccel(0, 100, clock() - (next ? changNextJobAniClock : changJobAniClock), 0.3, false); - if (ani_progress >= 90){ - ani_progress = Math.sq_GetAccel(0, 10, clock() - (next ? changNextJobAniClock : changJobAniClock), 0.7, false) + 90 ; + if (ani_progress >= 90) { + ani_progress = Math.sq_GetAccel(0, 10, clock() - (next ? changNextJobAniClock : changJobAniClock), 0.7, false) + 90; } local x = ani_progress * 5.0; if (progressBlock != null) progressBlock(ani_progress); - if (ani_progress >= 100){ + if (ani_progress >= 100) { if (doneBlock != null) doneBlock(); } } @@ -449,11 +449,11 @@ class _CreateCharacter extends Yosin_Window { changJobAniController(function(ani_progress) { local x = ani_progress * 5.0; - jobImg.SetPosition( 0 - x, 0); - jobImg.SetOpacity( (100.0 - ani_progress.tofloat()) / 100.0 ); - }.bindenv(this), function () { + jobImg.SetPosition(0 - x, 0); + jobImg.SetOpacity((100.0 - ani_progress.tofloat()) / 100.0); + }.bindenv(this), function() { changJobAniClock = null; - }.bindenv(this),false ); + }.bindenv(this), false); } // 切换职业动画 @@ -469,23 +469,23 @@ class _CreateCharacter extends Yosin_Window { // 动画的前90%,透明度进度为50%,后10%,透明度进度为剩下的50% local opacity = ani_progress.tofloat() / 180.0; if (opacity > 0.5) opacity = (ani_progress.tofloat() - 90.0) / 20.0 + 0.5; - nextJobImg.SetOpacity( opacity ); + nextJobImg.SetOpacity(opacity); - }.bindenv(this), function () { + }.bindenv(this), function() { changNextJobAniClock = null; local jobEnum = getJobEnum(jobIndex); - jobImg.SetFrame(CL_SpriteFrameObject("sprite/interface2/charactercreatever2/basecharctertitle.img", jobEnum )); + jobImg.SetFrame(CL_SpriteFrameObject("sprite/interface2/charactercreatever2/basecharctertitle.img", jobEnum)); jobImg.SetOpacity(1); jobImg.SetPosition(0, 0); - if (jobIndex < 16) { + if (jobIndex< 16) { nextJobImg.SetFrame(CL_SpriteFrameObject("sprite/interface2/charactercreatever2/basecharctertitle.img", getJobEnum(jobIndex + 1))); nextJobImg.SetOpacity(0); nextJobImg.SetPosition(500, 0); } - }.bindenv(this) ); + }.bindenv(this)); } @@ -521,7 +521,7 @@ class _CreateCharacter_SelectBaseInfo extends Yosin_Window { OnClick = null; - constructor(gX, gY ) { + constructor(gX, gY) { base.constructor("创建角色职业介绍信息", gX, gY, 278, 600, 0); // 职业图标 @@ -565,8 +565,8 @@ class _CreateCharacter_SelectBaseInfo extends Yosin_Window { } function SetJob(jobInfoMap) { - icon.SetFrame(CL_SpriteFrameObject( "sprite/interface2/charactercreatever2/charactermark.img", jobInfoMap.index)); - name.SetFrame(CL_SpriteFrameObject( "sprite/interface2/charactercreatever2/charctertitle.img", jobInfoMap.nameIndex)); + icon.SetFrame(CL_SpriteFrameObject("sprite/interface2/charactercreatever2/charactermark.img", jobInfoMap.index)); + name.SetFrame(CL_SpriteFrameObject("sprite/interface2/charactercreatever2/charctertitle.img", jobInfoMap.nameIndex)); jobInfo.SetText(jobInfoMap.info); jobChangeText.SetText("■ 转职:" + jobInfoMap.changJob); @@ -596,7 +596,7 @@ class _CreateCharacter_SelectBaseHeadList extends Yosin_Window { local headX = 0; local headY = 0; - for (local i = 0; i < 17; i++) { + for (local i = 0; i< 17; i++) { local jobEnum = getJobEnum(i); local headButton = HeadButton(headX, headY, jobEnum, getJobInfo(jobEnum).name); headButton.tag = i; @@ -611,14 +611,14 @@ class _CreateCharacter_SelectBaseHeadList extends Yosin_Window { } // 点击事件回调 - for (local i = 0; i < buttonList.len(); i++) { + for (local i = 0; i< buttonList.len(); i++) { local headButton = buttonList[i]; - headButton.OnClick = function (b) { + headButton.OnClick = function(b) { if (clickOff) return; - for (local t = 0; t < buttonList.len(); t++) { + for (local t = 0; t< buttonList.len(); t++) { local button = buttonList[t]; button.state = 0; button.ChangeFrame(); @@ -681,7 +681,7 @@ class HeadButton extends Yosin_CommonUi { base.constructor(X, Y, 62, 62); // 角色头像 - Character = CL_SpriteObject( "sprite/interface2/charactercreatever2/characterbtn.img", imageId) + Character = CL_SpriteObject("sprite/interface2/charactercreatever2/characterbtn.img", imageId) Character.SetPosition(0, 0); Addchild(Character); @@ -689,10 +689,10 @@ class HeadButton extends Yosin_CommonUi { jobNameText = FontAssetManager.GenerateNormal(name, true, { color = sq_RGBA(194, 160, 53, 255) }); - jobNameText.SetPosition( 31 - jobNameText.GetSize().w / 2 , 45); + jobNameText.SetPosition(31 - jobNameText.GetSize().w / 2, 45); Addchild(jobNameText); - CharacterCover = CL_SpriteObject( "sprite/interface2/charactercreatever2/characterbtn.img", 0) + CharacterCover = CL_SpriteObject("sprite/interface2/charactercreatever2/characterbtn.img", 0) CharacterCover.SetPosition(0, 0); Addchild(CharacterCover); @@ -715,7 +715,7 @@ class HeadButton extends Yosin_CommonUi { //不可用 if (state == 3) { - Character.SetFrame(CL_SpriteFrameObject( "sprite/interface2/charactercreatever2/characterbtn.img", imageId + 1)); + Character.SetFrame(CL_SpriteFrameObject("sprite/interface2/charactercreatever2/characterbtn.img", imageId + 1)); CharacterCover.SetVisible(false); yellowBox.SetVisible(false); blueBox.SetVisible(false); @@ -727,7 +727,7 @@ class HeadButton extends Yosin_CommonUi { CharacterCover.SetVisible(false); yellowBox.SetVisible(false); blueBox.SetVisible(true); - }else{ + } else { CharacterCover.SetVisible(true); yellowBox.SetVisible(false); blueBox.SetVisible(false); @@ -806,7 +806,7 @@ class _create_Character_enterName extends Yosin_Window { checkButton.SetUpdateFunc(function(button, Dt) { if (button.Parent.name.len() > 0) { button.State = 0; - }else{ + } else { button.State = 3; } }) @@ -840,17 +840,17 @@ class _create_Character_enterName extends Yosin_Window { affirmButton = Yosin_BaseButton(473, 338, 46, 24 "sprite/interface/lenheartwindowcommon.img", 400); affirmButton.State = 3; affirmButton.SetUpdateFunc(function(button, Dt) { - if (button.Parent.name != button.Parent.checkName && button.State != 3) { + if (button.Parent.name != button.Parent.checkName && button.State != 3) { button.State = 3; } }) //点击事件回调 affirmButton.OnClick = function(Button) { - if (OnClick != null) OnClick(Button.Parent.checkName); + if (OnClick != null) OnClick(Button.Parent.checkName); }.bindenv(this); //按钮文本 local affirmTextActor = FontAssetManager.GenerateNormal("确认", true, { - color = sq_RGBA(153,128,71, 255) + color = sq_RGBA(153, 128, 71, 255) }); affirmTextActor.SetPosition(11, 4); affirmButton.Addchild(affirmTextActor); @@ -866,7 +866,7 @@ class _create_Character_enterName extends Yosin_Window { }.bindenv(this); //按钮文本 local cancelTextActor = FontAssetManager.GenerateNormal("取消", true, { - color = sq_RGBA(153,128,71, 255) + color = sq_RGBA(153, 128, 71, 255) }); cancelTextActor.SetPosition(11, 4); cancelButton.Addchild(cancelTextActor); @@ -878,12 +878,12 @@ class _create_Character_enterName extends Yosin_Window { // 昵称重复检查回包 MySocket.RegisterHandler(3, function(Jso) { if (Parent.NoticeBox) Parent.NoticeBox.CloseWindow(); - if (Jso.type == 0){ + if (Jso.type == 0) { // 可以使用的ID 确认按钮可以使用. Parent.NoticeBox = _Yosin_MessageBox("可以使用的ID."); checkName = name; affirmButton.State = 0; - }else{ + } else { // 名称重复. Parent.NoticeBox = _Yosin_MessageBox("名称重复."); } @@ -899,14 +899,4 @@ class _create_Character_enterName extends Yosin_Window { } -} - - - - - - - - - - +} \ No newline at end of file diff --git a/sqr/User/UI/Window/3_Top_tool.nut b/sqr/User/UI/Window/3_Top_tool.nut index c72b0ff..6d59fb8 100644 --- a/sqr/User/UI/Window/3_Top_tool.nut +++ b/sqr/User/UI/Window/3_Top_tool.nut @@ -7,11 +7,19 @@ class _Top_tool extends Yosin_Window { - //是否为独立窗口 - IsIndependent = false; - timeTextActor = null; + //是否可见 + // Visible = false; + + //是否为顶层窗口 + // IsTop = true; + + //窗口位置 + WindowPos = null; + WindowMoveFlag = false; + BaseCursorWPos = null; + constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { base.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH); @@ -19,6 +27,8 @@ class _Top_tool extends Yosin_Window { RegisterDraw(); //注册控件 RegisterWidget(); + + WindowPos = Sq_GetWindowRect(); } function RegisterWidget() { @@ -43,12 +53,21 @@ class _Top_tool extends Yosin_Window { // 最小化 local minButton = _Top_tool_Button(576, 1, 22, 16 "sprite/interface/lenheartwindowcommon.img", 618); + minButton.OnClick = function(Button) { + Sq_ShowWindow(6); + }.bindenv(this); AddUIChild(minButton); // 最大化 local maxButton = _Top_tool_Button(598, 1, 22, 16 "sprite/interface/lenheartwindowcommon.img", 628); + maxButton.OnClick = function(Button) { + Sq_ShowWindow(3); + }.bindenv(this); AddUIChild(maxButton); // 关闭 local closeButton = _Top_tool_Button(620, 1, 22, 16 "sprite/interface/lenheartwindowcommon.img", 624); + closeButton.OnClick = function(Button) { + Sq_CloseWindow(); + }.bindenv(this); AddUIChild(closeButton); } @@ -63,7 +82,7 @@ class _Top_tool extends Yosin_Window { local timeStr = ""; if (date.hour >= 12) { timeStr = "PM " + (date.hour - 12).tostring() + ":" + date.min.tostring(); - }else{ + } else { timeStr = "AM " + date.hour.tostring() + ":" + date.min.tostring(); } return timeStr; @@ -75,12 +94,70 @@ class _Top_tool extends Yosin_Window { SyncPos(X, Y); base.Proc(Dt); - if (time() % 60 == 0){ + if (time() % 60 == 0) { timeTextActor.SetText(getTimeString()); } + + //如果事件在窗口内 + if (Math.IsIntersectRect(Yosin_Cursor.X, Yosin_Cursor.Y, 1, 1, X, Y, Width, Height)) { + if (!Visible) ResetFocus(); + } else { + Visible = false; + } } + //override + //鼠标事件回调 + function OnMouseProc(MousePos_X, MousePos_Y) { + base.OnMouseProc(MousePos_X, MousePos_Y); + + //设定拖动逻辑 + if (WindowMoveFlag) { + local pos = Sq_GetCursorPos(); + + local WX = pos.x - M_Xpos; + local WY = pos.y - M_Ypos; + + M_Xpos = pos.x; + M_Ypos = pos.y; + + WindowPos.left += WX; + WindowPos.top += WY; + Sq_SetCursorPos(WindowPos.left + BaseCursorWPos.x, WindowPos.top + BaseCursorWPos.y); + Sq_SetWindowPos(WindowPos.left, WindowPos.top); + } + } + + //override + //鼠标左键单击回调 + function OnMouseLbDown(MousePos_X, MousePos_Y) { + base.OnMouseLbDown(MousePos_X, MousePos_Y); + //如果点击事件在窗口内 + if (Math.IsIntersectRect(Yosin_Cursor.X, Yosin_Cursor.Y, 1, 1, X, Y, Width, Height)) { + WindowMoveFlag = true; + local pos = Sq_GetCursorPos(); + M_Xpos = pos.x; //原始鼠标位置数据 + M_Ypos = pos.y; + BaseCursorWPos = { + x = MousePos_X, + y = MousePos_Y + }; + } + } + + //override + //鼠标左键弹起回调 + function OnMouseLbUp(MousePos_X, MousePos_Y) { + //调用原生方法 + base.OnMouseLbUp(MousePos_X, MousePos_Y); + if (WindowMoveFlag) { + WindowMoveFlag = false; + M_Xpos = null; + M_Ypos = null; + BaseCursorWPos = null; + } + } } @@ -102,7 +179,4 @@ class _Top_tool_Button extends Yosin_BaseButton { border.SetVisible(isLBDown); } -} - - - +} \ No newline at end of file