mirror of
https://gitee.com/jisol/jisol-game/
synced 2025-09-27 02:36:14 +00:00
update
This commit is contained in:
@@ -25,6 +25,7 @@ import { TableGRoleAttackEffect } from "../resources/config/ts/TableGRoleAttackE
|
||||
import { TableGRoleSkill } from "../resources/config/ts/TableGRoleSkill";
|
||||
import { TableGRoleSkillEffect } from "../resources/config/ts/TableGRoleSkillEffect";
|
||||
import { TableGMap } from "../resources/config/ts/TableGMap";
|
||||
import Loading from "../../extensions/ngame/assets/ngame/util/Loading";
|
||||
|
||||
let IP = "kyu.jisol.cn";
|
||||
|
||||
@@ -106,6 +107,8 @@ export abstract class JNGSyncProtoBase<T> extends JNSyncFrameProtoComponent<T>{
|
||||
//读写config
|
||||
export class JNGConfig extends SystemBase{
|
||||
|
||||
static loading = "JNGConfig";
|
||||
|
||||
//配置JSON加载
|
||||
jsons:JsonLoad[] = [
|
||||
{name:TableGRole.TableName}, //角色
|
||||
@@ -124,25 +127,40 @@ export class JNGConfig extends SystemBase{
|
||||
});
|
||||
|
||||
async onInit(): Promise<any> {
|
||||
|
||||
app.loading.setCurrent(JNGConfig.loading);
|
||||
|
||||
for (const key in this.jsons) {
|
||||
const load = this.jsons[key];
|
||||
await JsonUtil.load(load);
|
||||
}
|
||||
|
||||
app.loading.ok(JNGConfig.loading);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//角色初始器
|
||||
export class JLoaderRole extends JLoaderSystem{
|
||||
//资源初始器
|
||||
export class JLoaderBattle extends JLoaderSystem{
|
||||
|
||||
static loading = "JLoaderBattle";
|
||||
static loadingInit = "JLoaderBattle_Init";
|
||||
|
||||
skData:{[id:number]:sp.SkeletonData} = {}; //角色Spine
|
||||
bullets:{[id:number]:SpriteFrame} = {};
|
||||
bullets:{[id:number]:SpriteFrame} = {}; //子弹
|
||||
effects:{[id:number]:sp.SkeletonData} = {}; //Spine特效
|
||||
maps:{[id:number]:SpriteFrame[]} = {}; //地图
|
||||
|
||||
async onInit(): Promise<any> {
|
||||
|
||||
app.loading.setCurrent(JLoaderBattle.loading);
|
||||
|
||||
await super.onInit();
|
||||
|
||||
app.loading.ok(JLoaderBattle.loading);
|
||||
|
||||
app.loading.setCurrent(JLoaderBattle.loadingInit);
|
||||
|
||||
//将配置表的角色都读取出来
|
||||
for (const info of Object.values(TableGRole.getAllConfig())) {
|
||||
this.skData[info.id] = await (new Promise(r => {
|
||||
@@ -193,6 +211,8 @@ export class JLoaderRole extends JLoaderSystem{
|
||||
})))
|
||||
|
||||
}
|
||||
|
||||
app.loading.ok(JLoaderBattle.loadingInit);
|
||||
|
||||
}
|
||||
|
||||
@@ -208,6 +228,11 @@ export const app = {
|
||||
baseURL: `http://${IP}:8080`,
|
||||
}), //请求
|
||||
battle : GBattleModeManager.getIns(), //战斗
|
||||
config : new JNGConfig(),
|
||||
battleRes : new JLoaderRole("battle"), //battle包
|
||||
config : new JNGConfig(), //配置文件
|
||||
battleRes : new JLoaderBattle("battle"), //battle包
|
||||
loading: new Loading({
|
||||
[JNGConfig.loading]:{title:"加载配置文件"},
|
||||
[JLoaderBattle.loading]:{title:"加载战斗资源"},
|
||||
[JLoaderBattle.loadingInit]:{title:"初始化战斗资源"},
|
||||
})
|
||||
}
|
@@ -16,6 +16,9 @@ export class Main extends Component {
|
||||
|
||||
async onLoad(){
|
||||
|
||||
// 创建UI
|
||||
director.getScene().addChild(instantiate(this.UIPrefab));
|
||||
|
||||
//加载 APP
|
||||
await JNGame.Init(app,[
|
||||
{path:"proto/GDemo"}
|
||||
@@ -26,10 +29,8 @@ export class Main extends Component {
|
||||
//发生帧同步开始
|
||||
app.socket.Send(JNSyncAction.NSyncFrameStart);
|
||||
|
||||
// 创建UI
|
||||
director.getScene().addChild(instantiate(this.UIPrefab));
|
||||
// 创建世界
|
||||
director.getScene().addChild(instantiate(this.WorldPrefab));
|
||||
// director.getScene().addChild(instantiate(this.WorldPrefab));
|
||||
|
||||
}
|
||||
|
||||
|
@@ -14,8 +14,8 @@ export class UICanvas extends Component {
|
||||
//绑定层级
|
||||
app.layer.bind(this.root);
|
||||
|
||||
//显示Home
|
||||
app.layer.Open(GUI.Home);
|
||||
//显示Loading
|
||||
app.layer.Open(GUI.Loading);
|
||||
|
||||
}
|
||||
|
||||
|
@@ -97,6 +97,9 @@ export default class GOnHookMode extends GBaseMode<{}>{
|
||||
|
||||
fsm:GFSMOnHookMode;
|
||||
|
||||
//是否允许攻击
|
||||
isAllowAttack:boolean = false;
|
||||
|
||||
onSyncInitSuccess():void{
|
||||
|
||||
//初始化战斗
|
||||
@@ -146,8 +149,13 @@ export default class GOnHookMode extends GBaseMode<{}>{
|
||||
onUpdateCamera(dt:number){
|
||||
|
||||
//如果没有敌人相机永远锁定最前面的宠物
|
||||
if(!this.isHaveEnemy()){
|
||||
if(this.isAllowAttack && this.isHaveEnemy()){
|
||||
|
||||
//如果有敌人则移动到战斗位置
|
||||
let cameraWorld = this.camera.node.worldPosition.clone();
|
||||
this.camera.node.worldPosition = cameraWorld.lerp(v3(this.nextFightX,cameraWorld.y,cameraWorld.z),(dt / 1000));
|
||||
|
||||
}else{
|
||||
//获取冲到最前面的宠物
|
||||
let roles = this.getOnesRoleAlive(GOnHookModePlayerEnum.PLAYER);
|
||||
let frontRole = roles.sort((role1,role2) => role2.v2World.x - role1.v2World.x)[0];
|
||||
@@ -156,11 +164,6 @@ export default class GOnHookMode extends GBaseMode<{}>{
|
||||
//设置相机 位置
|
||||
let cameraWorld = this.camera.node.worldPosition.clone();
|
||||
this.camera.node.worldPosition = cameraWorld.lerp(v3(frontRole.v2World.x,cameraWorld.y,cameraWorld.z),(dt / 1000));
|
||||
|
||||
}else{
|
||||
//如果有敌人则移动到战斗位置
|
||||
let cameraWorld = this.camera.node.worldPosition.clone();
|
||||
this.camera.node.worldPosition = cameraWorld.lerp(v3(this.nextFightX,cameraWorld.y,cameraWorld.z),(dt / 1000));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -210,6 +213,8 @@ export default class GOnHookMode extends GBaseMode<{}>{
|
||||
//获取敌人
|
||||
getEnumy(player:GRoleDefault,type:GOnHookModePlayerEnum):GRoleDefault{
|
||||
|
||||
if(!this.isAllowAttack) return null;
|
||||
|
||||
let enumyOnes = GOnHookModePlayerEnum.ENEMY
|
||||
//如果是ENEMY 则 它的敌人是 PLAYER
|
||||
if(type == GOnHookModePlayerEnum.ENEMY) enumyOnes = GOnHookModePlayerEnum.PLAYER
|
||||
@@ -253,6 +258,7 @@ export default class GOnHookMode extends GBaseMode<{}>{
|
||||
|
||||
//是否有怪物
|
||||
isHaveEnemy(){
|
||||
if(!this.isAllowAttack) return [];
|
||||
return this.getOnesRoleAlive(GOnHookModePlayerEnum.ENEMY).filter(role => !!role.get()).length > 0;
|
||||
}
|
||||
|
||||
|
@@ -32,18 +32,18 @@ export default class GFSMOnHookMode extends GFSMBase{
|
||||
title:"生成下一个战斗位置",
|
||||
mode:GFSMProcessMode.Execute,
|
||||
execute: this.onGenNextFightProcess.bind(this),
|
||||
to:[ProcessEnum.LeaveFight]
|
||||
},
|
||||
[ProcessEnum.LeaveFight]:{
|
||||
title:"前往战斗",
|
||||
mode:GFSMProcessMode.WaitExecute,
|
||||
execute: this.onLeaveFightProcess.bind(this),
|
||||
to:[ProcessEnum.GenEnemy]
|
||||
},
|
||||
[ProcessEnum.GenEnemy]:{
|
||||
title:"生成敌人",
|
||||
mode:GFSMProcessMode.Execute,
|
||||
execute: this.onGenEnemyProcess.bind(this),
|
||||
to:[ProcessEnum.LeaveFight]
|
||||
},
|
||||
[ProcessEnum.LeaveFight]:{
|
||||
title:"前往战斗",
|
||||
mode:GFSMProcessMode.WaitExecute,
|
||||
execute: this.onLeaveFightProcess.bind(this),
|
||||
to:[ProcessEnum.Fight]
|
||||
},
|
||||
[ProcessEnum.Fight]:{
|
||||
@@ -69,11 +69,21 @@ export default class GFSMOnHookMode extends GFSMBase{
|
||||
//生成下一个战斗位置
|
||||
onGenNextFightProcess(){
|
||||
|
||||
this.mode.isAllowAttack = false;
|
||||
this.mode.onNextTarget();
|
||||
return ProcessEnum.LeaveFight; //前往战斗位置
|
||||
return ProcessEnum.GenEnemy; //生成敌人
|
||||
|
||||
}
|
||||
|
||||
//生成敌人
|
||||
onGenEnemyProcess(){
|
||||
|
||||
this.mode.onResetGenerateEnemy();
|
||||
return ProcessEnum.LeaveFight; //前往战斗
|
||||
|
||||
}
|
||||
|
||||
|
||||
//前往战斗
|
||||
onLeaveFightProcess(){
|
||||
|
||||
@@ -90,22 +100,15 @@ export default class GFSMOnHookMode extends GFSMBase{
|
||||
}
|
||||
|
||||
//到达位置生成敌人
|
||||
return ProcessEnum.GenEnemy;
|
||||
|
||||
}
|
||||
|
||||
//生成敌人
|
||||
onGenEnemyProcess(){
|
||||
|
||||
this.mode.onResetGenerateEnemy();
|
||||
return ProcessEnum.Fight;
|
||||
|
||||
}
|
||||
|
||||
|
||||
//战斗
|
||||
onFightProcess(){
|
||||
|
||||
|
||||
this.mode.isAllowAttack = true;
|
||||
//等待敌人击杀完
|
||||
if(!(this.mode.isHaveEnemy())){
|
||||
return ProcessEnum.SeekEnemy; //击杀完寻找敌人
|
||||
|
9
JisolGameCocos/assets/script/ui/Loading.meta
Normal file
9
JisolGameCocos/assets/script/ui/Loading.meta
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "1.2.0",
|
||||
"importer": "directory",
|
||||
"imported": true,
|
||||
"uuid": "65c8ddaf-bdfa-4c52-bcef-f952bf687165",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
39
JisolGameCocos/assets/script/ui/Loading/LoadingView.ts
Normal file
39
JisolGameCocos/assets/script/ui/Loading/LoadingView.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
import { ProgressBar } from "cc";
|
||||
import { _decorator } from "cc";
|
||||
import { JNGLayerBase, app } from "../../App";
|
||||
import { Label } from "cc";
|
||||
import { GUI } from "../UIConfig";
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
@ccclass('LoadingView')
|
||||
export default class LoadingView extends JNGLayerBase {
|
||||
|
||||
@property(ProgressBar)
|
||||
progress:ProgressBar;
|
||||
|
||||
@property(Label)
|
||||
label:Label;
|
||||
|
||||
//是否加载成功
|
||||
isOk:boolean = false;
|
||||
|
||||
update(dt:number){
|
||||
if(app.loading.getCurrentInfo())
|
||||
this.label.string = app.loading.getCurrentInfo().title;
|
||||
this.progress.progress = app.loading.progress();
|
||||
if(!this.isOk && app.loading.isAllSuccess()){
|
||||
this.isOk = true;
|
||||
this.onSuccess();
|
||||
}
|
||||
}
|
||||
|
||||
async onSuccess(){
|
||||
|
||||
//打开主页
|
||||
await app.layer.Open(GUI.Home);
|
||||
//关闭加载页
|
||||
app.layer.Close(GUI.Loading);
|
||||
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "4.0.23",
|
||||
"importer": "typescript",
|
||||
"imported": true,
|
||||
"uuid": "7b00aff8-c844-4bfc-b808-e19a1bc4f02c",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
@@ -1,14 +1,33 @@
|
||||
import { JNLayerInfo } from "../../../extensions/ngame/assets/ngame/ui/JNLayer";
|
||||
import { v3 } from "cc";
|
||||
import { JNLayerAnim, JNLayerInfo } from "../../../extensions/ngame/assets/ngame/ui/JNLayer";
|
||||
|
||||
export enum GLayer{
|
||||
View = "View",
|
||||
}
|
||||
|
||||
export enum GUI{
|
||||
Loading = "Loading",
|
||||
Home = "Home",
|
||||
}
|
||||
|
||||
export const UIConfig:{ [key: string]: JNLayerInfo; } = {
|
||||
[GUI.Home]:{ layer:GLayer.View, uri: "prefab/ui/Home/HomeView"}
|
||||
[GUI.Loading]:{
|
||||
layer:GLayer.View,
|
||||
uri: "prefab/ui/Loading/LoadingView",
|
||||
anims:{
|
||||
back:JNLayerAnim.Smaller,
|
||||
backInfo:{key:"position",start:v3(0,0,0),end:v3(-720,0,0)}
|
||||
},
|
||||
},
|
||||
[GUI.Home]:{
|
||||
layer:GLayer.View,
|
||||
uri: "prefab/ui/Home/HomeView",
|
||||
anims:{
|
||||
front:JNLayerAnim.Enlarge,
|
||||
back:JNLayerAnim.Smaller,
|
||||
frontInfo:{key:"position",start:v3(720,0,0),end:v3(0,0,0)},
|
||||
backInfo:{key:"position",start:v3(0,0,0),end:v3(-720,0,0)}
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user