Compare commits
	
		
			No commits in common. "4a2f6f3cafb77418e3ad88cfa3ed872866719f53" and "978818789ae813f587a73b68caf911558306871e" have entirely different histories.
		
	
	
		
			4a2f6f3caf
			...
			978818789a
		
	
		|  | @ -163,29 +163,17 @@ class Yosin_EmeStretch extends Yosin_CommonUi { | ||||||
|         if (Direction) { |         if (Direction) { | ||||||
|             local ScaleW = (W - SpriteList[0].GetSize().w - SpriteList[2].GetSize().w); |             local ScaleW = (W - SpriteList[0].GetSize().w - SpriteList[2].GetSize().w); | ||||||
|             local ScaleRate = ScaleW / SpriteList[1].GetSize().w; |             local ScaleRate = ScaleW / SpriteList[1].GetSize().w; | ||||||
|             local ScaleRateH = H / SpriteList[1].GetSize().h; |  | ||||||
| 
 |  | ||||||
|             SpriteList[1].SetPosition(SpriteList[0].GetSize().w, 0); |             SpriteList[1].SetPosition(SpriteList[0].GetSize().w, 0); | ||||||
|             SpriteList[1].SetScale(ScaleRate, ScaleRateH); |             SpriteList[1].SetScale(ScaleRate, 1.0); | ||||||
|             SpriteList[2].SetPosition(SpriteList[0].GetSize().w + ScaleW, 0); |             SpriteList[2].SetPosition(SpriteList[0].GetSize().w + ScaleW, 0); | ||||||
|             if (H !=  SpriteList[1].GetSize().h) { |  | ||||||
|                 SpriteList[0].SetScale(1, ScaleRateH); |  | ||||||
|                 SpriteList[2].SetScale(1, ScaleRateH); |  | ||||||
|             } |  | ||||||
|         } |         } | ||||||
|         //纵向 |         //纵向 | ||||||
|         else { |         else { | ||||||
|             local ScaleH = (H - SpriteList[0].GetSize().h - SpriteList[2].GetSize().h); |             local ScaleH = (H - SpriteList[0].GetSize().h - SpriteList[2].GetSize().h); | ||||||
|             local ScaleRate = ScaleH / SpriteList[1].GetSize().h; |             local ScaleRate = ScaleH / SpriteList[1].GetSize().h; | ||||||
|             local ScaleRateW = H / SpriteList[1].GetSize().w; |  | ||||||
| 
 |  | ||||||
|             SpriteList[1].SetPosition(0, SpriteList[0].GetSize().h); |             SpriteList[1].SetPosition(0, SpriteList[0].GetSize().h); | ||||||
|             SpriteList[1].SetScale(ScaleRateW, ScaleRate); |             SpriteList[1].SetScale(1.0, ScaleRate); | ||||||
|             SpriteList[2].SetPosition(0, SpriteList[0].GetSize().h + ScaleH); |             SpriteList[2].SetPosition(0, SpriteList[0].GetSize().h + ScaleH); | ||||||
|             if (W !=  SpriteList[1].GetSize().w) { |  | ||||||
|                 SpriteList[0].SetScale(ScaleRateW, ScaleRateH); |  | ||||||
|                 SpriteList[2].SetScale(ScaleRateW, ScaleRateH); |  | ||||||
|             } |  | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         foreach(Child in SpriteList) { |         foreach(Child in SpriteList) { | ||||||
|  |  | ||||||
|  | @ -67,7 +67,6 @@ sqr/User/UI/Widget/Text_Button.nut | ||||||
| 
 | 
 | ||||||
| sqr/User/UI/Window/0_Login.nut | sqr/User/UI/Window/0_Login.nut | ||||||
| sqr/User/UI/Window/1_Select_Character.nut | sqr/User/UI/Window/1_Select_Character.nut | ||||||
| sqr/User/UI/Window/2_create_Character.nut |  | ||||||
| sqr/User/UI/Window/233_HUD_Message.nut | sqr/User/UI/Window/233_HUD_Message.nut | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,677 +0,0 @@ | ||||||
| /* |  | ||||||
| 文件名:2_create_Character.nut |  | ||||||
| 路径:User/UI/Window/2_create_Character.nut |  | ||||||
| 创建日期:2024-12-15	17:40 |  | ||||||
| 文件用途: 创建角色 |  | ||||||
| */ |  | ||||||
| 
 |  | ||||||
| // 底部光动画类型 |  | ||||||
| enum BottomLightAniType { |  | ||||||
|     light |  | ||||||
|     firedust |  | ||||||
|     dust |  | ||||||
|     aura |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // 获取职业信息 |  | ||||||
| function getJobInfo( job ) { |  | ||||||
|     local T = {}; |  | ||||||
|     switch (job) { |  | ||||||
|         case CHARACTERJOB.SWORDMAN: // 男鬼剑士 d |  | ||||||
|             T = { |  | ||||||
|                 index = 0, // 索引 |  | ||||||
|                 nameIndex = 0, // 名称索引 |  | ||||||
|                 ani = BottomLightAniType.dust, |  | ||||||
|                 name = "鬼剑士", |  | ||||||
|                 info = "借助凝聚在左手上鬼神之力压制敌人的鬼剑士。", // 介绍 |  | ||||||
|                 changJob = "剑魂 / 鬼泣 / 狂战士 / 阿修罗" // 转职 |  | ||||||
|             }; |  | ||||||
|             break; |  | ||||||
|         case CHARACTERJOB.FIGHTER: // 女格斗家 d |  | ||||||
|             T = { |  | ||||||
|                 index = 1, // 索引 |  | ||||||
|                 nameIndex = 1, // 名称索引 |  | ||||||
|                 ani = BottomLightAniType.dust, |  | ||||||
|                 name = "格斗家", |  | ||||||
|                 info = "注重身体各不为的锻炼,并熟练运用它们攻击敌人的武道家。", // 介绍 |  | ||||||
|                 changJob = "气功师 / 散打 / 街霸 / 柔道家" // 转职 |  | ||||||
|             }; |  | ||||||
|             break; |  | ||||||
|         case CHARACTERJOB.GUNNER: // 男神枪手 d |  | ||||||
|             T = { |  | ||||||
|                 index = 2, // 索引 |  | ||||||
|                 nameIndex = 2, // 名称索引 |  | ||||||
|                 ani = BottomLightAniType.dust, |  | ||||||
|                 name = "神枪手", |  | ||||||
|                 info = "生活在天界的神枪手,是善于利用枪械压制敌人的战士。", // 介绍 |  | ||||||
|                 changJob = "漫游枪手 / 枪炮师 / 机械师 / 弹药专家 / 合金战士" // 转职 |  | ||||||
|             }; |  | ||||||
|             break; |  | ||||||
|         case CHARACTERJOB.MAGE: // 女魔法师 l |  | ||||||
|             T = { |  | ||||||
|                 index = 3, // 索引 |  | ||||||
|                 nameIndex = 3, // 名称索引 |  | ||||||
|                 ani = BottomLightAniType.light, |  | ||||||
|                 name = "魔法师", |  | ||||||
|                 info = "善用魔法力量攻击敌人的魔族。", // 介绍 |  | ||||||
|                 changJob = "元素师 / 召唤师 / 战斗法师 / 魔道学者 / 小魔女" // 转职 |  | ||||||
|             }; |  | ||||||
|             break; |  | ||||||
|         case CHARACTERJOB.PRIEST: // 男圣职者 l |  | ||||||
|             T = { |  | ||||||
|                 index = 4, // 索引 |  | ||||||
|                 nameIndex = 4 // 名称索引 |  | ||||||
|                 ani = BottomLightAniType.light, |  | ||||||
|                 name = "光职者", |  | ||||||
|                 info = "心怀正义,为惩恶扬善甘愿接收严苛训练的勇士。", // 介绍 |  | ||||||
|                 changJob = "光明骑士 / 蓝拳使者 / 驱魔师 / 惩戒者" // 转职 |  | ||||||
|             }; |  | ||||||
|             break; |  | ||||||
|         case CHARACTERJOB.AT_GUNNER: // 女神枪手 f |  | ||||||
|             T = { |  | ||||||
|                 index = 5, // 索引 |  | ||||||
|                 nameIndex = 2, // 名称索引 |  | ||||||
|                 ani = BottomLightAniType.firedust, |  | ||||||
|                 name = "神枪手", |  | ||||||
|                 info = "生活在天界的神枪手,是善于利用枪械压制敌人的战士。", // 介绍 |  | ||||||
|                 changJob = "漫游枪手 / 枪炮师 / 机械师 / 弹药专家" // 转职 |  | ||||||
|             }; |  | ||||||
|             break; |  | ||||||
|         case CHARACTERJOB.THIEF: // 暗夜使者 a |  | ||||||
|             T = { |  | ||||||
|                 index = 6, // 索引 |  | ||||||
|                 nameIndex = 5, // 名称索引 |  | ||||||
|                 ani = BottomLightAniType.aura, |  | ||||||
|                 name = "暗夜使者", |  | ||||||
|                 info = "用敏捷身手执行特别人物的暗精灵成员。", // 介绍 |  | ||||||
|                 changJob = "暗星 / 黑夜术士 / 忍者 / 影武者" // 转职 |  | ||||||
|             }; |  | ||||||
|             break; |  | ||||||
|         case CHARACTERJOB.AT_FIGHTER: // 男格斗家 f |  | ||||||
|             T = { |  | ||||||
|                 index = 7, // 索引 |  | ||||||
|                 nameIndex = 1, // 名称索引 |  | ||||||
|                 ani = BottomLightAniType.firedust, |  | ||||||
|                 name = "格斗家", |  | ||||||
|                 info = "注重身体各不为的锻炼,并熟练运用它们攻击敌人的武道家。", // 介绍 |  | ||||||
|                 changJob = "气功师 / 散打 / 街霸 / 柔道家" // 转职 |  | ||||||
|             }; |  | ||||||
|             break; |  | ||||||
|         case CHARACTERJOB.AT_MAGE: // 男魔法师 a |  | ||||||
|             T = { |  | ||||||
|                 index = 8, // 索引 |  | ||||||
|                 nameIndex = 3, // 名称索引 |  | ||||||
|                 ani = BottomLightAniType.aura, |  | ||||||
|                 name = "魔法师", |  | ||||||
|                 info = "善用魔法力量攻击敌人的魔族。", // 介绍 |  | ||||||
|                 changJob = "元素爆破师 / 冰洁师 / 猩红法师 / 逐风者 / 次元行者" // 转职 |  | ||||||
|             }; |  | ||||||
|             break; |  | ||||||
|         case CHARACTERJOB.DEMONIC_SWORDMAN: // 黑暗武士 a |  | ||||||
|             T = { |  | ||||||
|                 index = 9, // 索引 |  | ||||||
|                 nameIndex = 10, // 名称索引 |  | ||||||
|                 ani = BottomLightAniType.aura, |  | ||||||
|                 name = " 黑暗武士", |  | ||||||
|                 info = "跨越时空之门,超越界限之力的剑士。", // 介绍 |  | ||||||
|                 changJob = "黑暗武士" // 转职 |  | ||||||
|             }; |  | ||||||
|             break; |  | ||||||
|         case CHARACTERJOB.CREATOR_MAGE: // 缔造者 l |  | ||||||
|             T = { |  | ||||||
|                 index = 10, // 索引 |  | ||||||
|                 nameIndex = 11, // 名称索引 |  | ||||||
|                 ani = BottomLightAniType.light, |  | ||||||
|                 name = " 缔造者", |  | ||||||
|                 info = "从异次元裂缝中获得强大力量的魔法师。", // 介绍 |  | ||||||
|                 changJob = "缔造者" // 转职 |  | ||||||
|             }; |  | ||||||
|             break; |  | ||||||
|         case CHARACTERJOB.AT_SWORDMAN: // 女鬼剑士 d |  | ||||||
|             T = { |  | ||||||
|                 index = 11, // 索引 |  | ||||||
|                 nameIndex = 0, // 名称索引 |  | ||||||
|                 ani = BottomLightAniType.dust, |  | ||||||
|                 name = "鬼剑士", |  | ||||||
|                 info = "同样拥有鬼手,却能实战不同的魔力。", // 介绍 |  | ||||||
|                 changJob = "驭剑士 / 暗殿骑士 / 契魔者 / 流浪武士 / 刃影" // 转职 |  | ||||||
|             }; |  | ||||||
|             break; |  | ||||||
|         case CHARACTERJOB.KNIGHT: // 守护者 l |  | ||||||
|             T = { |  | ||||||
|                 index = 12, // 索引 |  | ||||||
|                 nameIndex = 6, // 名称索引 |  | ||||||
|                 ani = BottomLightAniType.light, |  | ||||||
|                 name = "守护者", |  | ||||||
|                 info = "穿越各个次元,在战场上驰骋的少女。", // 介绍 |  | ||||||
|                 changJob = "精灵骑士 / 混沌魔灵 / 帕拉丁 / 龙骑士" // 转职 |  | ||||||
|             }; |  | ||||||
|             break; |  | ||||||
|         case CHARACTERJOB.DEMONIC_LANCER: // 魔枪士 d |  | ||||||
|             T = { |  | ||||||
|                 index = 13, // 索引 |  | ||||||
|                 nameIndex = 7, // 名称索引 |  | ||||||
|                 ani = BottomLightAniType.dust, |  | ||||||
|                 name = "魔枪士", |  | ||||||
|                 info = "使用蕴含魔力的长枪,专研枪术的战士。", // 介绍 |  | ||||||
|                 changJob = "征战者 / 决战者 / 狩猎者 / 暗枪士" // 转职 |  | ||||||
|             }; |  | ||||||
|             break; |  | ||||||
|         case CHARACTERJOB.AT_PRIEST: // 女圣职者 l |  | ||||||
|             T = { |  | ||||||
|                 index = 14, // 索引 |  | ||||||
|                 nameIndex = 4, // 名称索引 |  | ||||||
|                 ani = BottomLightAniType.light, |  | ||||||
|                 name = "光职者", |  | ||||||
|                 info = "心怀正义,为惩恶扬善甘愿接收严苛训练的勇士。", // 介绍 |  | ||||||
|                 changJob = "光明骑士 / 正义审判者 / 驱魔师 / 除恶者" // 转职 |  | ||||||
|             }; |  | ||||||
|             break; |  | ||||||
|         case CHARACTERJOB.GUN_BLADER: // 枪剑士 d |  | ||||||
|             T = { |  | ||||||
|                 index = 15, // 索引 |  | ||||||
|                 nameIndex = 8, // 名称索引 |  | ||||||
|                 ani = BottomLightAniType.dust, |  | ||||||
|                 name = "枪剑士", |  | ||||||
|                 info = "执着枪与剑的浪漫的天界人。", // 介绍 |  | ||||||
|                 changJob = "暗刃 / 特工 / 战线佣兵 / 源能专家" // 转职 |  | ||||||
|             }; |  | ||||||
|             break; |  | ||||||
|         case CHARACTERJOB.ARCHER: // 弓箭手 l |  | ||||||
|             T = { |  | ||||||
|                 index = 16, // 索引 |  | ||||||
|                 nameIndex = 9, // 名称索引 |  | ||||||
|                 ani = BottomLightAniType.light, |  | ||||||
|                 name = "弓箭手", |  | ||||||
|                 info = "为了守护家园,携弓箭走上冒险之旅的神界人。", // 介绍 |  | ||||||
|                 changJob = "缪斯 / 旅人 / 猎人 / 妖护使" // 转职 |  | ||||||
|             }; |  | ||||||
|             break; |  | ||||||
|         default: |  | ||||||
|             break; |  | ||||||
|     } |  | ||||||
|     return T; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 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 ]; |  | ||||||
|     return jobList[index]; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| //创建角色 |  | ||||||
| class _CreateCharacter extends Yosin_Window { |  | ||||||
|     //调试模式 |  | ||||||
|     // DeBugMode = true; |  | ||||||
| 
 |  | ||||||
|     //不是窗口 |  | ||||||
|     // NoWindow = true; |  | ||||||
| 
 |  | ||||||
|     //是否可见 |  | ||||||
|     // Visible = false; |  | ||||||
| 
 |  | ||||||
|     BackGround = null; |  | ||||||
|     headList = null; |  | ||||||
|     jobImg = null; |  | ||||||
|     nextJobImg = null; |  | ||||||
| 
 |  | ||||||
|     infoWidget = null; |  | ||||||
| 
 |  | ||||||
|     topLightObj = null; |  | ||||||
|     lightAni = null; |  | ||||||
|     dustAni = null; |  | ||||||
|     firedustAni = null; |  | ||||||
|     auraAni = null; |  | ||||||
| 
 |  | ||||||
|     changJobAniClock = null; |  | ||||||
| 
 |  | ||||||
|     nextJobIndex = null; |  | ||||||
| 
 |  | ||||||
|     constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { |  | ||||||
|         base.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH); |  | ||||||
| 
 |  | ||||||
|         //注册绘制 |  | ||||||
|         RegisterDraw(); |  | ||||||
|         //注册控件 |  | ||||||
|         RegisterWidget(); |  | ||||||
| 
 |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     function PlayBackgroundMusic() { |  | ||||||
| 
 |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     function RegisterWidget() { |  | ||||||
|         //头像 |  | ||||||
|         headList = _CreateCharacter_SelectBaseHeadList(135, 40); |  | ||||||
|         AddUIChild(headList); |  | ||||||
|         headList.OnClick = changJob.bindenv(this); |  | ||||||
| 
 |  | ||||||
|         // 职业介绍 |  | ||||||
|         infoWidget = _CreateCharacter_SelectBaseInfo(140,  400); |  | ||||||
|         AddUIChild(infoWidget); |  | ||||||
|         infoWidget.SetJob(getJobInfo(CHARACTERJOB.SWORDMAN)); |  | ||||||
| 
 |  | ||||||
|         // 创建职业 |  | ||||||
|         infoWidget.OnClick = function () { |  | ||||||
| 
 |  | ||||||
|         }.bindenv(this); |  | ||||||
| 
 |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     // 切换职业 |  | ||||||
|     function changJob(index) { |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|         local jobEnum = getJobEnum(index); |  | ||||||
| 
 |  | ||||||
|         nextJobIndex = index; |  | ||||||
|         // 切换背景 |  | ||||||
|         BackGround.SetFrame(CL_SpriteFrameObject("sprite/interface2/charactercreatever2/characterbackground.img", jobEnum)); |  | ||||||
|         nextJobImg.SetFrame(CL_SpriteFrameObject("sprite/interface2/charactercreatever2/basecharctertitle.img", jobEnum)); |  | ||||||
| 
 |  | ||||||
|         local info = getJobInfo(jobEnum); |  | ||||||
|         //  切换介绍 |  | ||||||
|         infoWidget.SetJob(getJobInfo(jobEnum)); |  | ||||||
|         // 切换底部光动画 |  | ||||||
| 
 |  | ||||||
|         lightAni.SetVisible(false); |  | ||||||
|         firedustAni.SetVisible(false); |  | ||||||
|         dustAni.SetVisible(false); |  | ||||||
|         auraAni.SetVisible(false); |  | ||||||
| 
 |  | ||||||
|         switch (info.ani){ |  | ||||||
|             case BottomLightAniType.light: |  | ||||||
|                 lightAni.SetVisible(true); |  | ||||||
|                 break; |  | ||||||
|             case BottomLightAniType.firedust: |  | ||||||
|                 firedustAni.SetVisible(true); |  | ||||||
|             case BottomLightAniType.dust: |  | ||||||
|                 dustAni.SetVisible(true); |  | ||||||
|                 break; |  | ||||||
|             case BottomLightAniType.aura: |  | ||||||
|                 auraAni.SetVisible(true); |  | ||||||
|                 break; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|         //  开始切换动画 |  | ||||||
|         changJobAniClock = clock(); |  | ||||||
|         // 切换动画中不响应点击 |  | ||||||
|         headList.clickOff = true; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     /// 切换职业动画 |  | ||||||
|     function changJobAni() { |  | ||||||
|         if (changJobAniClock == null) return; |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|         // 动画的前90%,快,后10%,慢 |  | ||||||
|         local ani_progress = Math.sq_GetAccel(0, 100, clock() - changJobAniClock, 0.3, false); |  | ||||||
|         if (ani_progress >= 90){ |  | ||||||
|             ani_progress = Math.sq_GetAccel(0, 10, clock() - changJobAniClock, 0.7, false) + 90 ; |  | ||||||
|         } |  | ||||||
|         local x = ani_progress * 5.0; |  | ||||||
|         jobImg.SetPosition( 0 - x, 0); |  | ||||||
|         nextJobImg.SetPosition(500 - x, 0); |  | ||||||
|         jobImg.SetOpacity( (100.0 - ani_progress.tofloat()) / 100.0 ); |  | ||||||
| 
 |  | ||||||
|         // 动画的前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 ); |  | ||||||
| 
 |  | ||||||
|         if (ani_progress >=  100){ |  | ||||||
|             changJobAniClock = null; |  | ||||||
| 
 |  | ||||||
|             local jobEnum = getJobEnum(nextJobIndex); |  | ||||||
|             jobImg.SetFrame(CL_SpriteFrameObject("sprite/interface2/charactercreatever2/basecharctertitle.img", jobEnum )); |  | ||||||
|             jobImg.SetOpacity(1); |  | ||||||
|             jobImg.SetPosition(0, 0); |  | ||||||
|             if (nextJobIndex < 16) { |  | ||||||
|                 nextJobImg.SetFrame(CL_SpriteFrameObject("sprite/interface2/charactercreatever2/basecharctertitle.img", getJobEnum(nextJobIndex + 1))); |  | ||||||
|                 nextJobImg.SetOpacity(0); |  | ||||||
|                 nextJobImg.SetPosition(500, 0); |  | ||||||
|             } |  | ||||||
|             headList.clickOff = false; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     function RegisterDraw() { |  | ||||||
|         //大背景 |  | ||||||
|         BackGround = CL_SpriteObject("sprite/interface2/charactercreatever2/characterbackground.img", 0); |  | ||||||
|         Addchild(BackGround); |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|         // 人物图片 |  | ||||||
|         jobImg = CL_SpriteObject("sprite/interface2/charactercreatever2/basecharctertitle.img", 0); |  | ||||||
|         jobImg.SetPosition(0, 0); |  | ||||||
|         Addchild(jobImg); |  | ||||||
| 
 |  | ||||||
|         // 下一个人物图片 |  | ||||||
|         nextJobImg = CL_SpriteObject("sprite/interface2/charactercreatever2/basecharctertitle.img", 11); |  | ||||||
|         nextJobImg.SetPosition(500, 0); |  | ||||||
|         nextJobImg.SetOpacity(0); |  | ||||||
|         Addchild(nextJobImg); |  | ||||||
| 
 |  | ||||||
|         // 光动画 ui/charactercreate/topdodge.ani |  | ||||||
|         topLightObj = Animation("ui/charactercreate/topdodge.ani"); |  | ||||||
|         topLightObj.SetPosition(0, 0); |  | ||||||
|         Addchild(topLightObj); |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|         // 底部光动画 |  | ||||||
|         lightAni = Animation("ui/charactercreate/dust.ani"); |  | ||||||
|         lightAni.SetPosition(0, 0); |  | ||||||
|         // lightAni.SetVisible(false); |  | ||||||
|         Addchild(lightAni); |  | ||||||
| 
 |  | ||||||
|         firedustAni = Animation("ui/charactercreate/firedust.ani"); |  | ||||||
|         firedustAni.SetPosition(0, 0); |  | ||||||
|         firedustAni.SetVisible(false); |  | ||||||
|         Addchild(firedustAni); |  | ||||||
| 
 |  | ||||||
|         dustAni = Animation("ui/charactercreate/dust.ani"); |  | ||||||
|         dustAni.SetPosition(0, 0); |  | ||||||
|         dustAni.SetVisible(false); |  | ||||||
|         Addchild(dustAni); |  | ||||||
| 
 |  | ||||||
|         auraAni = Animation("ui/charactercreate/aura.ani"); |  | ||||||
|         auraAni.SetPosition(0, 0); |  | ||||||
|         auraAni.SetVisible(false); |  | ||||||
|         Addchild(auraAni); |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     //逻辑入口 |  | ||||||
|     function Proc(Dt) { |  | ||||||
| 
 |  | ||||||
|         SyncPos(X, Y); |  | ||||||
|         base.Proc(Dt); |  | ||||||
| 
 |  | ||||||
|         changJobAni(); |  | ||||||
| 
 |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| //选择创建基础介绍 |  | ||||||
| class _CreateCharacter_SelectBaseInfo extends Yosin_Window { |  | ||||||
| 
 |  | ||||||
|     //是否为独立窗口 |  | ||||||
|     IsIndependent = false; |  | ||||||
| 
 |  | ||||||
|     icon = null; |  | ||||||
|     name = null; |  | ||||||
|     jobInfo = null; |  | ||||||
|     jobChangeText = null; |  | ||||||
| 
 |  | ||||||
|     OnClick = null; |  | ||||||
| 
 |  | ||||||
|     constructor(gX, gY ) { |  | ||||||
|         base.constructor("创建角色职业介绍信息", gX, gY, 278, 600, 0); |  | ||||||
| 
 |  | ||||||
|         // 职业图标 |  | ||||||
|         icon = CL_SpriteObject("sprite/interface2/charactercreatever2/charactermark.img", 0); |  | ||||||
|         icon.SetPosition(0, 0); |  | ||||||
|         Addchild(icon); |  | ||||||
| 
 |  | ||||||
|         //职业名称 |  | ||||||
|         name = CL_SpriteObject("sprite/interface2/charactercreatever2/charctertitle.img", 0); |  | ||||||
|         name.SetPosition(55, 10); |  | ||||||
|         Addchild(name); |  | ||||||
| 
 |  | ||||||
|         // 职业介绍 |  | ||||||
|         jobInfo = FontAssetManager.GenerateNormal("职业介绍", false, { |  | ||||||
|             color = sq_RGBA(194, 160, 53, 255) |  | ||||||
|         }); |  | ||||||
|         jobInfo.SetPosition(0, 52); |  | ||||||
|         Addchild(jobInfo); |  | ||||||
| 
 |  | ||||||
|         local jobChangeTextY = 52 + jobInfo.GetSize().h + 5; |  | ||||||
|         // 转职 |  | ||||||
|         jobChangeText = FontAssetManager.GenerateNormal("■ 转职:转职名 / 转职名", true, { |  | ||||||
|             color = sq_RGBA(194, 160, 53, 255) |  | ||||||
|         }); |  | ||||||
|         jobChangeText.SetPosition(0, jobChangeTextY); |  | ||||||
|         Addchild(jobChangeText); |  | ||||||
| 
 |  | ||||||
|         //创建角色按钮 |  | ||||||
|         local createButton = Yosin_EmeStretch(59, jobChangeTextY + 30, 160, 36, "sprite/interface/lenheartwindowcommon.img", 172); |  | ||||||
|         //点击事件回调 |  | ||||||
|         createButton.OnClick = function(Button) { |  | ||||||
|             if (OnClick) OnClick(); |  | ||||||
|         }.bindenv(this); |  | ||||||
|         // 按钮文本 |  | ||||||
|         local createText = CL_SpriteObject("sprite/interface2/charactercreatever2/charctertitle.img", 12); |  | ||||||
|         createText.SetPosition(42.5, 8); |  | ||||||
|         createButton.Addchild(createText); |  | ||||||
|         AddUIChild(createButton); |  | ||||||
| 
 |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     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)); |  | ||||||
|         jobInfo.SetText(jobInfoMap.info); |  | ||||||
|         jobChangeText.SetText("■ 转职:" + jobInfoMap.changJob); |  | ||||||
| 
 |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| //选择创建基础角色头像列表 |  | ||||||
| class _CreateCharacter_SelectBaseHeadList extends Yosin_Window { |  | ||||||
| 
 |  | ||||||
|     //是否为独立窗口 |  | ||||||
|     IsIndependent = false; |  | ||||||
| 
 |  | ||||||
|     // 点击关闭 |  | ||||||
|     clickOff = false; |  | ||||||
| 
 |  | ||||||
|     OnClick = null; |  | ||||||
| 
 |  | ||||||
|     buttonList = []; |  | ||||||
| 
 |  | ||||||
|     constructor(gX, gY) { |  | ||||||
|         base.constructor("所有的职业头像", gX, gY, 278, 350, 0); |  | ||||||
| 
 |  | ||||||
|         local headX = 0; |  | ||||||
|         local headY = 0; |  | ||||||
| 
 |  | ||||||
|         for (local i =  0; i < 17; i++) { |  | ||||||
|             local jobEnum = getJobEnum(i); |  | ||||||
|             local headButton = HeadButton(headX, headY, jobEnum, getJobInfo(jobEnum).name); |  | ||||||
|             headButton.tag = i; |  | ||||||
|             AddUIChild(headButton); |  | ||||||
| 
 |  | ||||||
|             buttonList.push(headButton); |  | ||||||
|             headX = headX + 67; |  | ||||||
|             if (i % 4 == 3) { |  | ||||||
|                 headX = 0; |  | ||||||
|                 headY = headY + 67; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         // 点击事件回调 |  | ||||||
|         for (local i =  0; i < buttonList.len(); i++) { |  | ||||||
| 
 |  | ||||||
|             local headButton = buttonList[i]; |  | ||||||
| 
 |  | ||||||
|             headButton.OnClick = function (b) { |  | ||||||
|                 if (clickOff) return; |  | ||||||
| 
 |  | ||||||
|                 for (local t = 0; t < buttonList.len(); t++) { |  | ||||||
|                     local button = buttonList[t]; |  | ||||||
|                     button.state = 0; |  | ||||||
|                     button.ChangeFrame(); |  | ||||||
|                 } |  | ||||||
|                 headButton.state = 2; |  | ||||||
|                 headButton.ChangeFrame(); |  | ||||||
| 
 |  | ||||||
|                 if (OnClick) OnClick(headButton.tag); |  | ||||||
| 
 |  | ||||||
|             }.bindenv(this); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         local button = buttonList[0]; |  | ||||||
|         button.state = 2; |  | ||||||
|         button.ChangeFrame(); |  | ||||||
| 
 |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| //头像按钮 |  | ||||||
| class HeadButton extends Yosin_CommonUi { |  | ||||||
| 
 |  | ||||||
|     DeBugMode = true; |  | ||||||
| 
 |  | ||||||
|     // 角色名称 |  | ||||||
|     name = ""; |  | ||||||
| 
 |  | ||||||
|     // 图像id |  | ||||||
|     imageId = 0; |  | ||||||
| 
 |  | ||||||
|     // 状态 0:普通 1:悬停 2:按下 3:不可用 |  | ||||||
|     state = 0; |  | ||||||
|     spriteState = 0; |  | ||||||
| 
 |  | ||||||
|     tag = 0; |  | ||||||
| 
 |  | ||||||
|     // 角色头像 |  | ||||||
|     Character = null; |  | ||||||
|     jobNameText = null; |  | ||||||
| 
 |  | ||||||
|     // 角色头像覆盖 |  | ||||||
|     CharacterCover = null; |  | ||||||
| 
 |  | ||||||
|     yellowBox = null; |  | ||||||
| 
 |  | ||||||
|     blueBox = null; |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     constructor(X, Y, jobEnum, name, state = 0) { |  | ||||||
| 
 |  | ||||||
|         this.name = name; |  | ||||||
|         this.state = state; |  | ||||||
| 
 |  | ||||||
|         // 计算图像id |  | ||||||
|         this.imageId = jobEnum * 2 + 3; |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|         base.constructor(X, Y, 62, 62); |  | ||||||
| 
 |  | ||||||
|         // 角色头像 |  | ||||||
|         Character = CL_SpriteObject( "sprite/interface2/charactercreatever2/characterbtn.img", imageId) |  | ||||||
|         Character.SetPosition(0, 0); |  | ||||||
|         Addchild(Character); |  | ||||||
| 
 |  | ||||||
|         // 转职 |  | ||||||
|         jobNameText = FontAssetManager.GenerateNormal(name, true, { |  | ||||||
|             color = sq_RGBA(194, 160, 53, 255) |  | ||||||
|         }); |  | ||||||
|         jobNameText.SetPosition( 31 - jobNameText.GetSize().w / 2 , 45); |  | ||||||
|         Addchild(jobNameText); |  | ||||||
| 
 |  | ||||||
|         CharacterCover = CL_SpriteObject( "sprite/interface2/charactercreatever2/characterbtn.img", 0) |  | ||||||
|         CharacterCover.SetPosition(0, 0); |  | ||||||
|         Addchild(CharacterCover); |  | ||||||
| 
 |  | ||||||
|         yellowBox = CL_SpriteObject("sprite/interface2/charactercreatever2/characterbtn.img", 2); |  | ||||||
|         yellowBox.SetPosition(0, 0); |  | ||||||
|         yellowBox.SetVisible(false); |  | ||||||
|         Addchild(yellowBox); |  | ||||||
| 
 |  | ||||||
|         blueBox = CL_SpriteObject("sprite/interface2/charactercreatever2/characterbtn.img", 1); |  | ||||||
|         blueBox.SetPosition(0, 0); |  | ||||||
|         blueBox.SetVisible(false); |  | ||||||
|         Addchild(blueBox); |  | ||||||
| 
 |  | ||||||
|         ChangeFrame(); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     function ChangeFrame() { |  | ||||||
|         if (spriteState == state) return; |  | ||||||
|         spriteState = state; |  | ||||||
| 
 |  | ||||||
|         //不可用 |  | ||||||
|         if (state == 3) { |  | ||||||
|             Character.SetFrame(CL_SpriteFrameObject( "sprite/interface2/charactercreatever2/characterbtn.img", imageId + 1)); |  | ||||||
|             CharacterCover.SetVisible(false); |  | ||||||
|             yellowBox.SetVisible(false); |  | ||||||
|             blueBox.SetVisible(false); |  | ||||||
|         } else if (state == 2) { |  | ||||||
|             CharacterCover.SetVisible(false); |  | ||||||
|             yellowBox.SetVisible(true); |  | ||||||
|             blueBox.SetVisible(false); |  | ||||||
|         } else if (state == 1) { |  | ||||||
|             CharacterCover.SetVisible(false); |  | ||||||
|             yellowBox.SetVisible(false); |  | ||||||
|             blueBox.SetVisible(true); |  | ||||||
|         }else{ |  | ||||||
|             CharacterCover.SetVisible(true); |  | ||||||
|             yellowBox.SetVisible(false); |  | ||||||
|             blueBox.SetVisible(false); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     function Proc(Dt) { |  | ||||||
|         //不可用 |  | ||||||
|         if (state == 3) { |  | ||||||
|             return; |  | ||||||
|         } else { |  | ||||||
|             //按下 |  | ||||||
|             if (isLBDown) { |  | ||||||
|                 // state = 2; |  | ||||||
|             } |  | ||||||
|             //悬停 |  | ||||||
|             else if (isInRect) { |  | ||||||
|                 if (state == 2) return; |  | ||||||
|                 state = 1; |  | ||||||
|             } |  | ||||||
|             //普通 |  | ||||||
|             else { |  | ||||||
|                 if (state == 2) return; |  | ||||||
|                 state = 0; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         ChangeFrame(); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|  | @ -7,24 +7,24 @@ | ||||||
| */ | */ | ||||||
| //职业枚举表 | //职业枚举表 | ||||||
| enum CHARACTERJOB { | enum CHARACTERJOB { | ||||||
|     SWORDMAN // 男鬼剑士 |     SWORDMAN | ||||||
|     FIGHTER // 女格斗家 |     FIGHTER | ||||||
|     GUNNER // 男神枪手 |     GUNNER | ||||||
|     MAGE // 女魔法师 |     MAGE | ||||||
|     PRIEST // 男圣职者 |     PRIEST | ||||||
|     AT_GUNNER // 女神枪手 |     AT_GUNNER | ||||||
|     THIEF // 暗夜使者 |     THIEF | ||||||
|     AT_FIGHTER // 男格斗家 |     AT_FIGHTER | ||||||
|     AT_MAGE // 男魔法师 |     AT_MAGE | ||||||
|     DEMONIC_SWORDMAN // 黑暗武士 |     DEMONIC_SWORDMAN | ||||||
|     CREATOR_MAGE // 缔造者 |     CREATOR_MAGE | ||||||
|     AT_SWORDMAN // 女鬼剑士 |     AT_SWORDMAN | ||||||
|     KNIGHT // 守护者 |     KNIGHT | ||||||
|     DEMONIC_LANCER // 魔枪士 |     DEMONIC_LANCER | ||||||
|     AT_PRIEST // 女圣职者 |     AT_PRIEST | ||||||
|     GUN_BLADER // 枪剑士 |     GUN_BLADER | ||||||
|     ARCHER // 弓箭手 |     ARCHER | ||||||
|     MAX // 无 |     MAX | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| //时装枚举类 | //时装枚举类 | ||||||
|  |  | ||||||
|  | @ -178,9 +178,5 @@ | ||||||
|     }, |     }, | ||||||
|     "User/UI/Widget/Text_Button.nut": { |     "User/UI/Widget/Text_Button.nut": { | ||||||
|         "description": "文本按钮" |         "description": "文本按钮" | ||||||
|     }, |  | ||||||
|     "User/UI/Window/2_Create_Character.nut": { |  | ||||||
|         "description": "创建角色" |  | ||||||
|     } |     } | ||||||
|      |  | ||||||
| } | } | ||||||
		Loading…
	
		Reference in New Issue