[egret+pomelo]實時遊戲雜記(4)

瞭解了先後端的通訊,下面就能夠開始本身的業務邏輯了,首先玩家輸入名稱,選擇角色後進入遊戲世界。前端

服務端的demo中已經提供了一些簡單的角色信息和屬性,數據地址位於 game-server/config/data 文件夾下的三個json文件 裝備(treasure)、角色(role)、場景(area)數據庫

首先修改一下role裏面的數據內容:json

[
    [
        "id",
        "名字",
        "英文名",
        "怪物級別",
        "初始血量",
        "初始魔法",
        "初始攻",
        "初始防",
        "命中率",
        "閃避率",
        "攻擊速度",
        "行走速度",
        "升級係數",
        "基礎經驗值",
        ""
    ],
    [
        "id",
        "name",
        "englishName",
        "level",
        "hp",
        "mp",
        "attackValue",
        "defenceValue",
        "hitRate",
        "dodgeRate",
        "attackSpeed",
        "walkSpeed",
        "upgradeParam",
        "baseExp",
        ""
    ],
    [
        210,
        "戰士",
        "warrior",
        "1",
        220,
        20,
        23,
        "9",
        90,
        13,
        "1.2",
        240,
        0.3,
        20,
        ""
    ],
    [
        211,
        "道士",
        "rabbi",
        "1",
        180,
        60,
        18,
        12,
        95,
        10,
        "1.2",
        240,
        0.3,
        20,
        ""
    ],
    [
        201,
        "法師",
        "enchanter",
        "1",
        180,
        40,
        25,
        "8",
        90,
        15,
        "1",
        260,
        0.25,
        20,
        ""
    ]
]
View Code

相似數據庫表格,只不過是以json形式的存儲,對於不須要大變化、數量不大的數據,存儲在文件中要比存儲在數據庫中省力一些。後端

首先咱們 應該獲取角色的列表信息session

新建 roleHandler用來處理服務端的請求app

var logger = require('pomelo-logger').getLogger('bearcat-treasures', 'RoleHandler');
var bearcat = require('bearcat');
var fs = require('fs');

var RoleHandler = function (app) {
    this.app = app;
    this.consts = null;
    this.areaService = null;
};

/**
 * 獲取全部角色信息
 */
RoleHandler.prototype.list = function (msg, session, next) {
    //隨機得到角色
    var role = this.dataApiUtil.role();

    //返回玩家角色信息
    var r = {
        code: this.consts.MESSAGE.RES,
        data: {
            role: role.data
        }
    }
    next(null, r);
}

module.exports = function (app) {
    return bearcat.getBean({
        id: "roleHandler",
        func: RoleHandler,
        args: [{
            name: "app",
            value: app
        }],
        props: [{
            name: "areaService",
            ref: "areaService"
        }, {
            name: "dataApiUtil",
            ref: "dataApiUtil"
        }, {
            name: "consts",
            ref: "consts"
        }]
    });
};

服務端作好後,客戶端訪問(egret代碼)ide

network.GameSocket.getInstance().request("area.roleHandler.list", { }, (respose) => {
                        
                    });

下面是egret中response接收到的返回值:ui

經過對respose.data.role的操做,能夠很輕易的獲取到全部role信息並在前端進行展現。this

 

Egret代碼下載spa

服務端代碼

相關文章
相關標籤/搜索