整体渲染大改
This commit is contained in:
parent
0ce2de0b59
commit
3e8159c100
BIN
Yosin_Engine.exe
BIN
Yosin_Engine.exe
Binary file not shown.
|
|
@ -4,7 +4,7 @@
|
||||||
创建日期:2024-05-07 23:25
|
创建日期:2024-05-07 23:25
|
||||||
文件用途:动画类
|
文件用途:动画类
|
||||||
*/
|
*/
|
||||||
class Animation extends Actor {
|
class Animation extends CL_SpriteObject {
|
||||||
|
|
||||||
//Ani是否可用
|
//Ani是否可用
|
||||||
IsUsability = true;
|
IsUsability = true;
|
||||||
|
|
@ -34,6 +34,15 @@ class Animation extends Actor {
|
||||||
//Ani路径
|
//Ani路径
|
||||||
AniPath = null;
|
AniPath = null;
|
||||||
|
|
||||||
|
//是否描边
|
||||||
|
IsOutline = false;
|
||||||
|
//描边颜色
|
||||||
|
OutlineColor = null;
|
||||||
|
//描边对象List
|
||||||
|
OutlineList = null;
|
||||||
|
//当前描边对象
|
||||||
|
CurrentOutline = null;
|
||||||
|
|
||||||
//附加选项
|
//附加选项
|
||||||
AdditionalOptions = null;
|
AdditionalOptions = null;
|
||||||
|
|
||||||
|
|
@ -48,6 +57,8 @@ class Animation extends Actor {
|
||||||
SpriteArr = [];
|
SpriteArr = [];
|
||||||
//帧数组
|
//帧数组
|
||||||
FrameArr = [];
|
FrameArr = [];
|
||||||
|
//描边对象List
|
||||||
|
OutlineList = [];
|
||||||
|
|
||||||
//判断是否有特殊处理
|
//判断是否有特殊处理
|
||||||
if (vargv.len() > 1) {
|
if (vargv.len() > 1) {
|
||||||
|
|
@ -110,27 +121,22 @@ class Animation extends Actor {
|
||||||
AnimationFlag = Buf.Flag;
|
AnimationFlag = Buf.Flag;
|
||||||
FrameArr = Buf.Frame;
|
FrameArr = Buf.Frame;
|
||||||
foreach(FrameObj in FrameArr) {
|
foreach(FrameObj in FrameArr) {
|
||||||
local Spritebuf;
|
local SpriteFramebuf;
|
||||||
//img路径判空
|
//img路径判空
|
||||||
if (FrameObj.Img_Path) {
|
if (FrameObj.Img_Path) {
|
||||||
//如果有附加处理 格式化
|
//如果有附加处理 格式化
|
||||||
if (AdditionalOptions && AdditionalOptions.rawin("ImgFormat")) FrameObj.Img_Path = AdditionalOptions["ImgFormat"](FrameObj.Img_Path);
|
if (AdditionalOptions && AdditionalOptions.rawin("ImgFormat")) FrameObj.Img_Path = AdditionalOptions["ImgFormat"](FrameObj.Img_Path);
|
||||||
|
|
||||||
Spritebuf = CL_SpriteObject("sprite/" + FrameObj.Img_Path, FrameObj.Img_Index);
|
SpriteFramebuf = CL_SpriteFrameObject("sprite/" + FrameObj.Img_Path, FrameObj.Img_Index);
|
||||||
|
|
||||||
//线性减淡
|
|
||||||
if ("GRAPHIC_EFFECT_LINEARDODGE" in FrameObj.Flag) {
|
|
||||||
Spritebuf.SetMode(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
//坐标
|
//坐标
|
||||||
Spritebuf.SetPosition(FrameObj.Pos);
|
SpriteFramebuf.SetPosition(FrameObj.Pos);
|
||||||
} else {
|
} else {
|
||||||
Spritebuf = CL_SpriteObject();
|
SpriteFramebuf = CL_SpriteFrameObject("sprite/interface/base.img", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SpriteArr.append(Spritebuf);
|
SpriteArr.append(SpriteFramebuf);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
error("创建Ani失败,找不到Ani数据");
|
error("创建Ani失败,找不到Ani数据");
|
||||||
|
|
@ -166,19 +172,51 @@ class Animation extends Actor {
|
||||||
|
|
||||||
//设置描边
|
//设置描边
|
||||||
function SetOutline(Flag, Color = 0xffffffff) {
|
function SetOutline(Flag, Color = 0xffffffff) {
|
||||||
foreach(Index, Sprite in SpriteArr) {
|
IsOutline = Flag;
|
||||||
Sprite.SetOutline(Flag, Color);
|
//如果是开启
|
||||||
|
if (Flag) {
|
||||||
|
//如果没有创建过描边对象就创建
|
||||||
|
if (OutlineList.len() == 0) {
|
||||||
|
foreach(FrameSf in SpriteArr) {
|
||||||
|
local OutlineCanvasObj = FrameSf.CreateOutLine(Color);
|
||||||
|
// OutlineCanvasObj.SetZOrder(-1);
|
||||||
|
// OutlineCanvasObj.SetPosition(-1, -1);
|
||||||
|
// OutlineCanvasObj.SetPosition(-FrameSf.GetSize().w / 2, -FrameSf.GetSize().h);
|
||||||
|
OutlineList.push(OutlineCanvasObj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//先把当前帧的描边对象设置上
|
||||||
|
AddOutlineChild();
|
||||||
|
} else {
|
||||||
|
//移除当前描边对象
|
||||||
|
if (CurrentOutline) {
|
||||||
|
Removechild(CurrentOutline);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//添加描边子对象
|
||||||
|
function AddOutlineChild() {
|
||||||
|
//如果有上一个描边对象先移除
|
||||||
|
if (CurrentOutline) {
|
||||||
|
Removechild(CurrentOutline);
|
||||||
|
}
|
||||||
|
//如果没有添加为子对象则添加
|
||||||
|
local OutlineCanvasObj = OutlineList[CurrentFrameIndex];
|
||||||
|
if (OutlineCanvasObj.Parent == null) {
|
||||||
|
CurrentOutline = OutlineCanvasObj;
|
||||||
|
Addchild(CurrentOutline);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function FlushFrame(Index) {
|
function FlushFrame(Index) {
|
||||||
//同步当前帧
|
//同步当前帧
|
||||||
CurrentFrameIndex = Index;
|
CurrentFrameIndex = Index;
|
||||||
//移除上一帧
|
|
||||||
if (CurrentFrame) Removechild(CurrentFrame);
|
|
||||||
//当前帧更换为本帧
|
//当前帧更换为本帧
|
||||||
CurrentFrame = SpriteArr[CurrentFrameIndex];
|
CurrentFrame = SpriteArr[CurrentFrameIndex];
|
||||||
Addchild(SpriteArr[CurrentFrameIndex]);
|
SetFrame(CurrentFrame);
|
||||||
|
|
||||||
local FrameInfo = FrameArr[CurrentFrameIndex];
|
local FrameInfo = FrameArr[CurrentFrameIndex];
|
||||||
local FlagBuf = FrameInfo.Flag;
|
local FlagBuf = FrameInfo.Flag;
|
||||||
|
|
@ -195,6 +233,12 @@ class Animation extends Actor {
|
||||||
if ("IMAGE_RATE" in FlagBuf) {
|
if ("IMAGE_RATE" in FlagBuf) {
|
||||||
SetScale(FlagBuf.IMAGE_RATE.x, FlagBuf.IMAGE_RATE.y);
|
SetScale(FlagBuf.IMAGE_RATE.x, FlagBuf.IMAGE_RATE.y);
|
||||||
}
|
}
|
||||||
|
//线性减淡
|
||||||
|
if ("GRAPHIC_EFFECT_LINEARDODGE" in FrameInfo.Flag) {
|
||||||
|
SetMode(0);
|
||||||
|
}
|
||||||
|
//如果有描边
|
||||||
|
if (IsOutline) AddOutlineChild();
|
||||||
|
|
||||||
//Ani对象的大小同步为精灵帧对象的大小
|
//Ani对象的大小同步为精灵帧对象的大小
|
||||||
if (CurrentFrame) SetSize(CurrentFrame.GetSize());
|
if (CurrentFrame) SetSize(CurrentFrame.GetSize());
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,10 @@ class CL_SpriteFrameObject extends CL_BaseObject {
|
||||||
ImgPath = null;
|
ImgPath = null;
|
||||||
ImgIndex = null;
|
ImgIndex = null;
|
||||||
|
|
||||||
|
function _typeof() {
|
||||||
|
return "SpriteFrame";
|
||||||
|
}
|
||||||
|
|
||||||
constructor(...) {
|
constructor(...) {
|
||||||
if (vargv.len() == 2) {
|
if (vargv.len() == 2) {
|
||||||
ImgPath = vargv[0];
|
ImgPath = vargv[0];
|
||||||
|
|
@ -20,4 +24,26 @@ class CL_SpriteFrameObject extends CL_BaseObject {
|
||||||
// base.constructor(C_Object);
|
// base.constructor(C_Object);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//重写获取大小
|
||||||
|
function GetSize() {
|
||||||
|
return SpriteFrame_GetSize(this.C_Object);
|
||||||
|
}
|
||||||
|
|
||||||
|
//重写设置坐标
|
||||||
|
function SetPosition(Value, ...) {
|
||||||
|
if (vargv.len() == 0) {
|
||||||
|
X = Value.x;
|
||||||
|
Y = Value.y;
|
||||||
|
SpriteFrame_SetPosition(this.C_Object, Value);
|
||||||
|
} else if (vargv.len() == 1) {
|
||||||
|
X = Value;
|
||||||
|
Y = vargv[0];
|
||||||
|
SpriteFrame_SetPosition(this.C_Object, Value, vargv[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//返回一个画布精灵
|
||||||
|
function CreateOutLine(Color) {
|
||||||
|
return CL_SpriteObject(SpriteFrame_CreateOutLine(this.C_Object, Color));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
//游戏逻辑函数Map
|
//游戏逻辑函数Map
|
||||||
_Game_Logic_Func_ <- {};
|
_Game_Logic_Func_ <- {};
|
||||||
|
|
||||||
function _Yosin_Game_Logic_(Dt, GameLister) {
|
function _Yosin_Game_Logic_(Dt, GameListener) {
|
||||||
//Socket连接嗅探处理包
|
//Socket连接嗅探处理包
|
||||||
foreach(SocketObj in _Socket_Map_) {
|
foreach(SocketObj in _Socket_Map_) {
|
||||||
SocketObj.DispatchPacket();
|
SocketObj.DispatchPacket();
|
||||||
|
|
@ -15,6 +15,6 @@ function _Yosin_Game_Logic_(Dt, GameLister) {
|
||||||
|
|
||||||
//游戏逻辑函数
|
//游戏逻辑函数
|
||||||
foreach(Key, Func in _Game_Logic_Func_) {
|
foreach(Key, Func in _Game_Logic_Func_) {
|
||||||
Func(Dt, GameLister);
|
Func(Dt, GameListener);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -4,9 +4,9 @@
|
||||||
创建日期:2024-12-18 13:41
|
创建日期:2024-12-18 13:41
|
||||||
文件用途:
|
文件用途:
|
||||||
*/
|
*/
|
||||||
class _Yosin_Cursor extends Actor {
|
class _Yosin_Cursor extends CL_SpriteObject {
|
||||||
|
|
||||||
Object = null;
|
CurrentFrame = null;
|
||||||
|
|
||||||
_Mouse_Click_Flag = null;
|
_Mouse_Click_Flag = null;
|
||||||
|
|
||||||
|
|
@ -26,11 +26,8 @@ class _Yosin_Cursor extends Actor {
|
||||||
|
|
||||||
//更换鼠标指针
|
//更换鼠标指针
|
||||||
function Change(Frame) {
|
function Change(Frame) {
|
||||||
if (Object) {
|
CurrentFrame = Frame;
|
||||||
Removechild(Object);
|
SetFrame(Frame);
|
||||||
}
|
|
||||||
Object = Frame;
|
|
||||||
Addchild(Frame);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//事件
|
//事件
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,6 @@ class GameObject.NPC extends GameObject.BaseClass {
|
||||||
return NameObj;
|
return NameObj;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function OnMouseLogic(MouseState, Wheel, MousePos_X, MousePos_Y) {
|
function OnMouseLogic(MouseState, Wheel, MousePos_X, MousePos_Y) {
|
||||||
|
|
@ -71,7 +70,7 @@ class GameObject.NPC extends GameObject.BaseClass {
|
||||||
//设置Ani描边
|
//设置Ani描边
|
||||||
Ani.SetOutline(true, sq_RGBA(155, 255, 0, 250));
|
Ani.SetOutline(true, sq_RGBA(155, 255, 0, 250));
|
||||||
//设置鼠标
|
//设置鼠标
|
||||||
Yosin_Cursor.Change(120);
|
Yosin_Cursor.ChangeActive(120, 4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -85,4 +84,5 @@ class GameObject.NPC extends GameObject.BaseClass {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -10,8 +10,8 @@ function InitGame() {
|
||||||
// MySocket("127.0.0.1", 19666);
|
// MySocket("127.0.0.1", 19666);
|
||||||
|
|
||||||
//设定全局默认音量
|
//设定全局默认音量
|
||||||
_Globa_Audio_Volume_ = 0.1;
|
_Globa_Audio_Volume_ = 0.03;
|
||||||
_Globa_Sound_Volume_ = 0.3;
|
_Globa_Sound_Volume_ = 0.03;
|
||||||
|
|
||||||
Script();
|
Script();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ function TestStage() {
|
||||||
T.Enter();
|
T.Enter();
|
||||||
|
|
||||||
|
|
||||||
// local Window = Sq_CreateWindow(_Login_Window, "登录界面窗口", 0, 0, 1066, 600, 0);
|
local Window = Sq_CreateWindow(_Login_Window, "登录界面窗口", 0, 0, 1066, 600, 0);
|
||||||
|
|
||||||
|
|
||||||
// //大背景
|
// //大背景
|
||||||
|
|
@ -25,10 +25,10 @@ function TestStage() {
|
||||||
// NPCobj.SetPosition(400, 400, 0);
|
// NPCobj.SetPosition(400, 400, 0);
|
||||||
// T.Addchild(NPCobj);
|
// T.Addchild(NPCobj);
|
||||||
|
|
||||||
local TownObj = Town(1);
|
// local TownObj = Town(1);
|
||||||
local Charc = GameObject.CreateCharacter(0, [101590007, 27675, 601500060, 601550060, 601560058, 601570053, 601520052, 601500060, 601510059, 601530051, 601540060, 601580023]);
|
// local Charc = GameObject.CreateCharacter(0, [101590007, 27675, 601500060, 601550060, 601560058, 601570053, 601520052, 601500060, 601510059, 601530051, 601540060, 601580023]);
|
||||||
TownObj.AddObject(Charc, true);
|
// TownObj.AddObject(Charc, true);
|
||||||
ClientCharacter = Charc;
|
// ClientCharacter = Charc;
|
||||||
|
|
||||||
|
|
||||||
// local Window = Sq_CreateWindow(_Select_Character_Window, "选择角色界面窗口", 0, 0, 1066, 600, 0);
|
// local Window = Sq_CreateWindow(_Select_Character_Window, "选择角色界面窗口", 0, 0, 1066, 600, 0);
|
||||||
|
|
|
||||||
|
|
@ -7,9 +7,16 @@
|
||||||
class _IMouse_ extends _Yosin_Cursor {
|
class _IMouse_ extends _Yosin_Cursor {
|
||||||
|
|
||||||
NormalC = null;
|
NormalC = null;
|
||||||
//普通状态0
|
//普通状态0 //动态状态1
|
||||||
State = 0;
|
State = 0;
|
||||||
|
//当前帧数编号
|
||||||
Idx = 0;
|
Idx = 0;
|
||||||
|
//动态帧 当前帧数
|
||||||
|
ActiveCurrentFrame = 0;
|
||||||
|
//动态帧 总帧数
|
||||||
|
ActiveFrameCount = 0;
|
||||||
|
//动态帧 Timer
|
||||||
|
ActiveFrameTimer = 0;
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
NormalC = [];
|
NormalC = [];
|
||||||
|
|
@ -26,12 +33,15 @@ class _IMouse_ extends _Yosin_Cursor {
|
||||||
|
|
||||||
//更换为0号指针
|
//更换为0号指针
|
||||||
Change(0);
|
Change(0);
|
||||||
|
|
||||||
|
//注册Proc
|
||||||
|
_Game_Logic_Func_._IMouse_Proc <- Proc.bindenv(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
//初始化普通鼠标指针
|
//初始化普通鼠标指针
|
||||||
function InitSprite() {
|
function InitSprite() {
|
||||||
for (local i = 0; i< 254; i++) {
|
for (local i = 0; i< 254; i++) {
|
||||||
local Sp = CL_SpriteObject("sprite/interface/newstyle/windows/cursor.img", i);
|
local Sp = CL_SpriteFrameObject("sprite/interface/newstyle/windows/cursor.img", i);
|
||||||
NormalC.push(Sp);
|
NormalC.push(Sp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -43,6 +53,14 @@ class _IMouse_ extends _Yosin_Cursor {
|
||||||
base.Change(Sp);
|
base.Change(Sp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//更换动态鼠标指针
|
||||||
|
function ChangeActive(Idx, Count) {
|
||||||
|
State = 1;
|
||||||
|
this.Idx = Idx;
|
||||||
|
this.ActiveFrameCount = Count;
|
||||||
|
this.ActiveCurrentFrame = 0;
|
||||||
|
}
|
||||||
|
|
||||||
function OnMouseProc(MousePos_X, MousePos_Y) {
|
function OnMouseProc(MousePos_X, MousePos_Y) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -62,4 +80,18 @@ class _IMouse_ extends _Yosin_Cursor {
|
||||||
Change(0);
|
Change(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function Proc(Dt, Listener) {
|
||||||
|
if (State == 1) {
|
||||||
|
ActiveFrameTimer += Dt;
|
||||||
|
if (ActiveFrameTimer >= 160) {
|
||||||
|
ActiveFrameTimer = 0;
|
||||||
|
ActiveCurrentFrame += 1;
|
||||||
|
if (ActiveCurrentFrame >= ActiveFrameCount) ActiveCurrentFrame = 0;
|
||||||
|
local Sp = NormalC[Idx + ActiveCurrentFrame];
|
||||||
|
base.Change(Sp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -486,7 +486,10 @@ class _Select_Character_Window extends Yosin_Window {
|
||||||
BackGroundMusic.Pause();
|
BackGroundMusic.Pause();
|
||||||
}
|
}
|
||||||
SetVisible(false);
|
SetVisible(false);
|
||||||
//TODO 发送进入游戏请求
|
//发送进入游戏请求
|
||||||
|
MySocket.Send(PACKET_ID.SELECT_CHARACTER, {
|
||||||
|
cid = UpCharacterList[CurrentSelectCharacterIdx].Info.cid
|
||||||
|
})
|
||||||
}.bindenv(this);
|
}.bindenv(this);
|
||||||
AddUIChild(StartButton);
|
AddUIChild(StartButton);
|
||||||
}
|
}
|
||||||
|
|
@ -522,8 +525,6 @@ class _Select_Character_Window extends Yosin_Window {
|
||||||
LockBox.SetPosition(54 + (i * 142), 10);
|
LockBox.SetPosition(54 + (i * 142), 10);
|
||||||
CharacterMaskBox.Addchild(LockBox);
|
CharacterMaskBox.Addchild(LockBox);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -254,6 +254,7 @@ class _CreateCharacter extends Yosin_Window {
|
||||||
//关闭创建界面
|
//关闭创建界面
|
||||||
NoticeBox.DestroyWindow();
|
NoticeBox.DestroyWindow();
|
||||||
DestroyWindow();
|
DestroyWindow();
|
||||||
|
MySocket.Send(PACKET_ID.QUERY_CHARACTER_LIST, null);
|
||||||
} else {
|
} else {
|
||||||
// 创建失败.
|
// 创建失败.
|
||||||
NoticeBox = _Yosin_MessageBox("创建失败.");
|
NoticeBox = _Yosin_MessageBox("创建失败.");
|
||||||
|
|
@ -363,7 +364,7 @@ class _CreateCharacter extends Yosin_Window {
|
||||||
local jobEnum = getJobEnum(jobIndex);
|
local jobEnum = getJobEnum(jobIndex);
|
||||||
MySocket.Send(7, {
|
MySocket.Send(7, {
|
||||||
name = enterName,
|
name = enterName,
|
||||||
gkb = jobEnum,
|
job = jobEnum,
|
||||||
})
|
})
|
||||||
}.bindenv(this);
|
}.bindenv(this);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,9 @@ enum PACKET_ID {
|
||||||
CHANGE_PASSWORD = 5
|
CHANGE_PASSWORD = 5
|
||||||
//查询账号中的角色列表
|
//查询账号中的角色列表
|
||||||
QUERY_CHARACTER_LIST = 9
|
QUERY_CHARACTER_LIST = 9
|
||||||
|
//选择角色
|
||||||
|
SELECT_CHARACTER = 11
|
||||||
//更换角色位置
|
//更换角色位置
|
||||||
CHANGE_CHARACTER_POSITION = 13
|
CHANGE_CHARACTER_POSITION = 10
|
||||||
|
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue