mirror of
https://gitee.com/jisol/jisol-game/
synced 2025-09-26 18:26:23 +00:00
更新主页内容
This commit is contained in:
@@ -100,33 +100,6 @@ class JNGSyncFrame extends JNSyncFrame{
|
||||
|
||||
}
|
||||
|
||||
//重写UI Base
|
||||
export class JNGLayerBase extends JNLayerBase{
|
||||
public close():void {
|
||||
console.log("close");
|
||||
app.layer.CloseNode(this.node);
|
||||
}
|
||||
}
|
||||
|
||||
//重写Sync Base
|
||||
export class JNGSyncBase<T> extends JNSyncFrameComponent<T>{
|
||||
onSyncLoad() { }
|
||||
onSyncUpdate(dt: number,frame:JNFrameInfo, input?: T) { }
|
||||
protected getSync(): JNSyncFrame {
|
||||
return app.sync
|
||||
}
|
||||
|
||||
}
|
||||
//重写Sync Proto Base
|
||||
export abstract class JNGSyncProtoBase<T> extends JNSyncFrameProtoComponent<T>{
|
||||
|
||||
onSyncLoad() { }
|
||||
onSyncUpdate(dt: number,frame:JNFrameInfo, input?: T) { }
|
||||
protected getSync(): JNSyncFrame {
|
||||
return app.sync
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export var TD:Tables = null;
|
||||
//读写config
|
||||
|
@@ -21,11 +21,11 @@ export class Main extends Component {
|
||||
//加载 APP
|
||||
await JNGame.Init(app);
|
||||
|
||||
// //发生帧同步开始
|
||||
// app.socket.Send(JNSyncAction.NSyncFrameStart);
|
||||
//发生帧同步开始
|
||||
app.socket.Send(JNSyncAction.NSyncFrameStart);
|
||||
|
||||
// // 创建世界
|
||||
// director.getScene().addChild(instantiate(this.WorldPrefab));
|
||||
// 创建世界
|
||||
director.getScene().addChild(instantiate(this.WorldPrefab));
|
||||
|
||||
}
|
||||
|
||||
|
@@ -1,9 +1,6 @@
|
||||
import { _decorator, Component, instantiate, Node, Prefab } from 'cc';
|
||||
import { JNFrameInfo, JNSyncFrameEvent } from '../../extensions/ngame/assets/ngame/sync/frame/JNSyncFrame';
|
||||
import { app } from './App';
|
||||
import { JNSyncAction } from '../../extensions/ngame/assets/ngame/sync/JNSyncAction';
|
||||
import { _decorator, Component, Node, Prefab } from 'cc';
|
||||
import { Camera } from 'cc';
|
||||
import GBaseMode from './battle/GBaseMode';
|
||||
import GBattleModeManager from './battle/GBattleModeManager';
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
@ccclass('WorldCanvas')
|
||||
@@ -15,7 +12,7 @@ export class WorldCanvas extends Component {
|
||||
camera:Camera = null;
|
||||
|
||||
@property([Prefab])
|
||||
prefabs:Prefab[] = [];
|
||||
modes:Prefab[] = [];
|
||||
|
||||
index:number = 1;
|
||||
|
||||
@@ -24,40 +21,19 @@ export class WorldCanvas extends Component {
|
||||
//重置相机位置
|
||||
this.camera.node.setWorldPosition(0,0,1000);
|
||||
|
||||
//监听帧同步
|
||||
app.event.on(JNSyncFrameEvent.CLEAR,this.clear,this);
|
||||
app.event.on(JNSyncFrameEvent.CREATE,this.create,this);
|
||||
|
||||
//监听帧回调
|
||||
app.socket.on(JNSyncAction.NSyncFrameBack,this.onFrameBack,this,"JNFrameInfo");
|
||||
|
||||
app.sync.onReset();
|
||||
app.sync.onStart();
|
||||
|
||||
}
|
||||
|
||||
//清除世界
|
||||
clear(){
|
||||
this.root.removeAllChildren();
|
||||
}
|
||||
|
||||
//创建世界
|
||||
create(){
|
||||
let world = instantiate(this.prefabs[this.index]);
|
||||
world.getComponent(GBaseMode).camera = this.camera;
|
||||
this.root.addChild(world)
|
||||
this.scheduleOnce(() => {
|
||||
app.sync.onStart();
|
||||
//初始化游戏模式管理器
|
||||
GBattleModeManager.getIns().onInit({
|
||||
modes:this.modes, //模式
|
||||
camera:this.camera, //相机
|
||||
root:this.root, //场景
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
update(deltaTime: number) {
|
||||
app.sync.update(deltaTime);
|
||||
GBattleModeManager.getIns().onUpdate(deltaTime);
|
||||
}
|
||||
|
||||
onFrameBack(info:JNFrameInfo){
|
||||
app.sync.addFrame(info,true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@@ -1,14 +1,137 @@
|
||||
import { Prefab } from "cc";
|
||||
import Singleton from "../../../extensions/ngame/assets/ngame/util/Singleton";
|
||||
import { Camera } from "cc";
|
||||
import GBaseMode from "./GBaseMode";
|
||||
import { Node } from "cc";
|
||||
import { instantiate } from "cc";
|
||||
import { app } from "../App";
|
||||
import { JNFrameInfo, JNSyncFrameEvent } from "../../../extensions/ngame/assets/ngame/sync/frame/JNSyncFrame";
|
||||
|
||||
export enum BattleMode{
|
||||
//无尽模式
|
||||
OnHook = 0,
|
||||
//PVP 模式
|
||||
PVP,
|
||||
PVP = 1,
|
||||
}
|
||||
|
||||
export interface GBattleModeInfo{
|
||||
modes:Prefab[], //模式预制体
|
||||
camera:Camera, //场景相机
|
||||
root:Node, //世界场景Root
|
||||
}
|
||||
|
||||
//全局战斗模式管理器
|
||||
export default class GBattleModeManager extends Singleton {
|
||||
|
||||
//模式预制体
|
||||
modes:Prefab[] = [];
|
||||
//场景相机
|
||||
camera:Camera;
|
||||
//世界场景Root
|
||||
root:Node;
|
||||
|
||||
//是否初始化
|
||||
isInit:boolean = false;
|
||||
|
||||
//当前模式
|
||||
current:BattleMode = null;
|
||||
|
||||
//是否自动退帧
|
||||
isAuto:boolean = false;
|
||||
|
||||
//自动推帧间隔
|
||||
autoTime:number = 0;
|
||||
|
||||
//初始化管理器
|
||||
async onInit(info:GBattleModeInfo){
|
||||
|
||||
this.modes = info.modes || [];
|
||||
this.camera = info.camera;
|
||||
this.root = info.root;
|
||||
|
||||
//监听帧同步 世界创建逻辑
|
||||
app.event.on(JNSyncFrameEvent.CLEAR,this.clear,this);
|
||||
app.event.on(JNSyncFrameEvent.CREATE,this.create,this);
|
||||
|
||||
this.isInit = true;
|
||||
|
||||
}
|
||||
|
||||
//打开指定模式
|
||||
async Open(mode:BattleMode,isAuto:boolean = false){
|
||||
|
||||
await this.Close();
|
||||
|
||||
this.current = mode;
|
||||
this.setAuto(isAuto);
|
||||
|
||||
app.sync.onReset();
|
||||
app.sync.onStart();
|
||||
|
||||
}
|
||||
|
||||
//关闭当前模式
|
||||
async Close(){
|
||||
|
||||
//主动调用场景销毁
|
||||
app.sync.onReset();
|
||||
this.clear();
|
||||
this.current = null;
|
||||
|
||||
}
|
||||
|
||||
//设置自动推帧 ( 帧不由addFrame控制 管理器自动推帧)
|
||||
setAuto(is:boolean){
|
||||
this.isAuto = is;
|
||||
this.autoTime = 0;
|
||||
}
|
||||
|
||||
//清除当前模式
|
||||
private clear(){
|
||||
if(!this.isInit) return;
|
||||
this.root.destroyAllChildren();
|
||||
}
|
||||
|
||||
//创建当前模式
|
||||
private create(){
|
||||
if(!this.isInit || this.current == null) return;
|
||||
let mode = instantiate(this.modes[this.current]);
|
||||
mode.getComponent(GBaseMode).camera = this.camera;
|
||||
this.root.addChild(mode)
|
||||
|
||||
}
|
||||
|
||||
//向场景推帧
|
||||
addFrame(info:JNFrameInfo){
|
||||
if(this.isAuto) return; //如果是自动推帧则返回
|
||||
app.sync.addFrame(info,true);
|
||||
}
|
||||
|
||||
//管理器更新
|
||||
onUpdate(dt:number){
|
||||
//更新帧同步
|
||||
app.sync.update(dt);
|
||||
//自动推帧
|
||||
this.onAutoFrame(dt);
|
||||
}
|
||||
|
||||
//自动推帧
|
||||
private onAutoFrame(dt:number){
|
||||
|
||||
if(!this.isAuto) return;
|
||||
|
||||
this.autoTime += dt * 1000;
|
||||
|
||||
//获取当前帧同步的帧数推空帧
|
||||
if(app.sync.nSyncTime < this.autoTime){
|
||||
//如果事件够则推帧
|
||||
this.autoTime -= app.sync.nSyncTime;
|
||||
app.sync.addFrame({
|
||||
index:app.sync.nLocalFrame + 1
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
import { Vec2 } from "cc";
|
||||
import { JNGSyncProtoBase } from "../../App";
|
||||
import GBaseMode from "../GBaseMode";
|
||||
import { v2 } from "cc";
|
||||
import { JNGSyncProtoBase } from "../../components/JNComponent";
|
||||
|
||||
export enum GTowards{
|
||||
RIGHT,LEFT
|
||||
|
@@ -1,11 +1,11 @@
|
||||
import { _decorator, Component, Node } from 'cc';
|
||||
import { app, JNGSyncBase } from '../../../../App';
|
||||
import { SpriteFrame } from 'cc';
|
||||
import { Sprite } from 'cc';
|
||||
import { UITransform } from 'cc';
|
||||
import { v3 } from 'cc';
|
||||
import { size } from 'cc';
|
||||
import GNode from '../GNode';
|
||||
import { JNGSyncBase } from '../../../../components/JNComponent';
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
/**
|
||||
|
@@ -106,16 +106,19 @@ export default class GOnHookMode extends GBaseMode<{}>{
|
||||
|
||||
//调整相机
|
||||
let camreaPos = this.camera.node.worldPosition;
|
||||
this.camera.node.worldPosition = v3(0,100,camreaPos.z)
|
||||
this.camera.node.worldPosition = v3(0,800,camreaPos.z)
|
||||
|
||||
//初始化状态机
|
||||
this.fsm = new GFSMOnHookMode(this);
|
||||
|
||||
//初始化地图
|
||||
this.mapInfo = TD.TbGMap.get(60001);
|
||||
this.map1.init(app.battleRes.maps[60001][0],1);
|
||||
this.map2.init(app.battleRes.maps[60001][1],1);
|
||||
this.map3.init(app.battleRes.maps[60001][2],1,app.battleRes.maps[60001][1].width,app.battleRes.maps[60001][1].height);
|
||||
|
||||
let scale = this.mapInfo.scale;
|
||||
|
||||
this.map1.init(app.battleRes.maps[60001][0],1,app.battleRes.maps[60001][0].width * scale,app.battleRes.maps[60001][0].height * scale);
|
||||
this.map2.init(app.battleRes.maps[60001][1],1,app.battleRes.maps[60001][1].width * scale,app.battleRes.maps[60001][1].height * scale);
|
||||
this.map3.init(app.battleRes.maps[60001][2],1,app.battleRes.maps[60001][1].width * scale,1048 * scale);
|
||||
this.onUpdateMap(0);
|
||||
|
||||
this.playerInfo = { tactical: GTactical.getTactical().setOffset(this.playerPos), roles: GRoleUtil.getGRoles([10004,10004,10004,10004,10003,10003]) };
|
||||
|
9
JisolGameCocos/assets/script/components.meta
Normal file
9
JisolGameCocos/assets/script/components.meta
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "1.2.0",
|
||||
"importer": "directory",
|
||||
"imported": true,
|
||||
"uuid": "2deea119-e5ca-4136-a47a-7c1e4f58421f",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
33
JisolGameCocos/assets/script/components/JNComponent.ts
Normal file
33
JisolGameCocos/assets/script/components/JNComponent.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import JNSyncFrame, { JNFrameInfo } from "../../../extensions/ngame/assets/ngame/sync/frame/JNSyncFrame";
|
||||
import JNSyncFrameComponent from "../../../extensions/ngame/assets/ngame/sync/frame/game/JNSyncFrameComponent";
|
||||
import JNSyncFrameProtoComponent from "../../../extensions/ngame/assets/ngame/sync/frame/game/JNSyncFrameProtoComponent";
|
||||
import JNLayerBase from "../../../extensions/ngame/assets/ngame/ui/base/JNLayerBase";
|
||||
import { app } from "../App";
|
||||
|
||||
//重写UI Base
|
||||
export class JNGLayerBase extends JNLayerBase{
|
||||
public close():void {
|
||||
console.log("close");
|
||||
app.layer.CloseNode(this.node);
|
||||
}
|
||||
}
|
||||
|
||||
//重写Sync Base
|
||||
export class JNGSyncBase<T> extends JNSyncFrameComponent<T>{
|
||||
onSyncLoad() { }
|
||||
onSyncUpdate(dt: number,frame:JNFrameInfo, input?: T) { }
|
||||
protected getSync(): JNSyncFrame {
|
||||
return app.sync
|
||||
}
|
||||
|
||||
}
|
||||
//重写Sync Proto Base
|
||||
export abstract class JNGSyncProtoBase<T> extends JNSyncFrameProtoComponent<T>{
|
||||
|
||||
onSyncLoad() { }
|
||||
onSyncUpdate(dt: number,frame:JNFrameInfo, input?: T) { }
|
||||
protected getSync(): JNSyncFrame {
|
||||
return app.sync
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "4.0.23",
|
||||
"importer": "typescript",
|
||||
"imported": true,
|
||||
"uuid": "1dcad6c8-dd7e-4d30-ad3d-2d98e1e9f48d",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
@@ -1,5 +1,4 @@
|
||||
import { _decorator, Component, Node } from 'cc';
|
||||
import { app, JNGLayerBase } from '../../../App';
|
||||
import { Prefab } from 'cc';
|
||||
import ChatData from '../../../data/ChatData';
|
||||
import { instantiate } from 'cc';
|
||||
@@ -9,6 +8,8 @@ import { GUI } from '../../UIConfig';
|
||||
import { GUIChatMessage } from '../../../consts/GActionType';
|
||||
import { Widget } from 'cc';
|
||||
import JScrollExceedHide from '../../../../../extensions/ngame/assets/ngame/util/components/JScrollExceedHide';
|
||||
import { JNGLayerBase } from '../../../components/JNComponent';
|
||||
import { app } from '../../../App';
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
@ccclass('MainChatView')
|
||||
|
@@ -1,5 +1,4 @@
|
||||
import { _decorator, Component, Label, Node } from 'cc';
|
||||
import { app, JNGLayerBase } from '../../App';
|
||||
import { Toggle } from 'cc';
|
||||
import { JNSyncAction } from '../../../../extensions/ngame/assets/ngame/sync/JNSyncAction';
|
||||
import { director } from 'cc';
|
||||
@@ -7,6 +6,8 @@ import { WorldCanvas } from '../../WorldCanvas';
|
||||
import { StorageData, StorageEnum } from '../../consts/GData';
|
||||
import { GUI } from '../UIConfig';
|
||||
import { API } from '../../consts/API';
|
||||
import { JNGLayerBase } from '../../components/JNComponent';
|
||||
import { app } from '../../App';
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
@ccclass('HomeView')
|
||||
|
@@ -1,21 +1,39 @@
|
||||
import { _decorator, Component, Label, Node } from 'cc';
|
||||
import { app, JNGLayerBase } from '../../App';
|
||||
import { GUI } from '../UIConfig';
|
||||
import ChatData from '../../data/ChatData';
|
||||
import PlayerData from '../../data/PlayerData';
|
||||
import GBattleModeManager, { BattleMode } from '../../battle/GBattleModeManager';
|
||||
import { JNGLayerBase } from '../../components/JNComponent';
|
||||
import { app } from '../../App';
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
@ccclass('MainView')
|
||||
export class MainView extends JNGLayerBase {
|
||||
|
||||
@property(Label)
|
||||
playerNameLabel:Label; //玩家名称
|
||||
|
||||
onJNLoad(data?: any): void {
|
||||
|
||||
//默认无限模式
|
||||
GBattleModeManager.getIns().Open(BattleMode.OnHook,true);
|
||||
|
||||
//发送消息
|
||||
ChatData.getIns().onSend({
|
||||
message:`${PlayerData.getIns().data.playerId} 加入游戏`
|
||||
});
|
||||
|
||||
this.onUpdateView();
|
||||
}
|
||||
|
||||
//更新UI界面
|
||||
onUpdateView(){
|
||||
this.playerNameLabel.string = PlayerData.getIns().getInfo().playerName;
|
||||
}
|
||||
|
||||
//打开Demo页面
|
||||
onOpenDemo(){
|
||||
app.layer.Open(GUI.Home);
|
||||
}
|
||||
|
||||
//打开聊天页面
|
||||
@@ -23,6 +41,11 @@ export class MainView extends JNGLayerBase {
|
||||
app.layer.Open(GUI.MainChat);
|
||||
}
|
||||
|
||||
//点击打开无限模式
|
||||
onOpenOnHook(){
|
||||
GBattleModeManager.getIns().Open(BattleMode.OnHook,true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@@ -1,9 +1,10 @@
|
||||
import { ProgressBar } from "cc";
|
||||
import { _decorator } from "cc";
|
||||
import { JNGLayerBase, app } from "../../App";
|
||||
import { Label } from "cc";
|
||||
import { GUI } from "../UIConfig";
|
||||
import NoviceManager from "../../manager/NoviceManager";
|
||||
import { JNGLayerBase } from "../../components/JNComponent";
|
||||
import { app } from "../../App";
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
@ccclass('LoadingView')
|
||||
|
@@ -1,7 +1,8 @@
|
||||
import { _decorator, Component, Node } from 'cc';
|
||||
import { app, JNGLayerBase } from '../../App';
|
||||
import { EditBox } from 'cc';
|
||||
import { API } from '../../consts/API';
|
||||
import { JNGLayerBase } from '../../components/JNComponent';
|
||||
import { app } from '../../App';
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
@ccclass('NoviceNamingView')
|
||||
|
@@ -1,13 +1,13 @@
|
||||
import { JNGLayerBase, TD, app } from '../../App';
|
||||
import { TbGGlobalEnum } from '../../../resources/config/TbGGlobalEnum';
|
||||
import { _decorator,Node } from 'cc';
|
||||
import { sp } from 'cc';
|
||||
import { UIPetAnim } from '../../consts/GData';
|
||||
import { Sprite } from 'cc';
|
||||
import { Color } from 'cc';
|
||||
import { API } from '../../consts/API';
|
||||
import { GUI } from '../UIConfig';
|
||||
import PlayerPetData from '../../data/PlayerPetData';
|
||||
import { JNGLayerBase } from '../../components/JNComponent';
|
||||
import { app, TD } from '../../App';
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user