123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- import Player from "../game/data/udata/Player";
- import Main from "../main/Main";
- import { GameViewType } from "../main/ViewManage";
- import ViewObject from "../main/ViewObject";
- import PlotHome from "../plot/PlotHome";
- import PlotView from "../plot/PlotView";
- import CHttp, { HttpStateType, ReveData } from "../util/CHttp";
- import CMath from "../util/CMath";
- import HistoryArea from "./HistoryArea";
- import Tap_set_Ann from "./Tap_set_Ann";
- /**
- * 游戏分区
- */
- export interface Zone {
- id: number,
- hardwareId: number,
- name: string,
- rec: boolean,//是否推荐
- inew: boolean,//是否新区
- }
- /**
- * 历史角色数据
- */
- export interface History_Role {
- zoneId: number,
- name: string,
- level: number,
- time: number,//最后登陆的时间
- }
- /**
- * 选择分区界面
- */
- const { ccclass, property } = cc._decorator;
- @ccclass
- export default class Area extends ViewObject {
- @property(cc.Label)
- mZoneName: cc.Label = null;//服务器名字
- public zones: Array<Zone> = null;
- public roles: Array<History_Role> = null;
- public gameServer: string = null;
- onLoad() {
- this.loadZone();
- }
- start(){
- this.opentap_set_Ann()
- }
- public loadZone() {
- let http = this.main.loginHttp;
- let msg = {
- channel: this.main.profile.mChannel.toString(),
- userId: this.main.userData.id.toString()
- }
- this.main.startLoad();
- http.sendForm('/getZone', msg, (state, reve: any) => {
- this.main.stopLoad();
- if (state == HttpStateType.SUCCESS) {
- this.zones = reve.zones;
- this.roles = reve.roles;
- this.gameServer = reve.gameServer;
- this.init();
- } else {
- this.main.showTips('网络异常');
- }
- })
- }
- public onclickBack() {
- this.exitDistroy();
- }
- public init() {
- let optZone = this.getOptZone();
- this.setOptZone(optZone);
- }
- public setOptZone(optZone) {
- this.main.userData.zone = optZone;
- this.mZoneName.string = optZone.name
- }
- public getZoneById(id: number) {
- if (this.zones == null) {
- return null;
- }
- for (let i = 0; i < this.zones.length; i++) {
- const element = this.zones[i];
- if (element.id == id) {
- return element;
- }
- }
- return null;
- }
- /**
- * 获取最优化分区
- */
- public getOptZone(): Zone {
- let latelyZone = null;
- //最近玩过的分区
- latelyZone = this.getLatelyZone();
- if (latelyZone) {
- return latelyZone;
- }
- //推荐分区
- latelyZone = this.getRecZone();
- if (latelyZone) {
- return latelyZone;
- }
- //随机一个区
- return this.zones[CMath.getRandom(0, this.zones.length - 1)];;
- }
- /**
- * 获取最近玩过的区
- */
- private getLatelyZone(): Zone {
- if (this.roles == null) {
- return null;
- }
- let latelyRole: History_Role = null;
- for (let i = 0; i < this.roles.length; i++) {
- const element = this.roles[i];
- if (latelyRole == null) {
- latelyRole = element;
- } else {
- if (element.time > latelyRole.time) {
- latelyRole = element;
- }
- }
- }
- return this.getZoneById(latelyRole.zoneId);
- }
- /**
- * 获取推荐分区
- */
- private getRecZone(): Zone {
- if (this.zones == null) {
- return null;
- }
- let recs = [];
- for (let i = 0; i < this.zones.length; i++) {
- const element = this.zones[i];
- if (element.rec) {
- recs.push(element);
- }
- }
- if (recs.length <= 0) {
- return null;
- }
- return recs[CMath.getRandom(0, recs.length - 1)];
- }
- /**
- * 打开历史登陆的分区
- */
- public openHistoryArea() {
- this.main.startLoad();
- this.main.viewManage.loadFunc(GameViewType.historyArea, (viewObject: ViewObject) => {
- let historyArea = viewObject as HistoryArea;
- historyArea.area = this;
- viewObject.show();
- this.main.stopLoad();
- });
- }
- /**
- * 进入游戏
- */
- public onclickOK() {
- let userData = this.main.userData;
- let optZone = this.main.userData.zone
- let http: CHttp = new CHttp(this.gameServer + '/H' + optZone.hardwareId + '/');
- let msg = {
- channel: this.main.profile.mChannel,
- channelAttr: '测试',
- id: userData.id,
- token: userData.token,
- zoneId: optZone.id
- }
- this.main.startLoad();
- http.token = '08f0656590e33d39021d41714994383d';
- http.sendJson('login', msg, (state, reve: ReveData) => {
- this.main.stopLoad();
- if (state == HttpStateType.SUCCESS) {
- if (reve.retCode == 0) {
- this.main.player = new Player(reve.data);
- http.token = this.main.player.role.token;
- http.id = this.main.player.role.id;
- http.userId = this.main.userData.id;
- this.main.gameHttp = http;
- this.main.gameHttp.unshiftEvent(this.main.player);
- if (reve.data.isNew) {
- // if(true){
- this.openPlot()
- } else {
- this.openHome(this.main);
- }
- } else {
- this.main.showTips(reve.message);
- }
- } else {
- this.main.showTips('网络异常');
- }
- });
- }
- public openHome(main: Main) {
- main.viewManage.loadFunc(GameViewType.home, (viewObject: ViewObject) => {
- this.__distroyAll();
- let plotHome = viewObject.node.getComponent(PlotHome)
- plotHome.openMenu()
- viewObject.show();
- });
- }
- public openPlot() {
- let main = this.main;
- this.main.viewManage.loadFunc(GameViewType.plot_view, (viewObject: ViewObject) => {
- this.__distroyAll();
- let plotView = viewObject as PlotView;
- plotView.setCloseCallback(() => {
- main.viewManage.loadFunc(GameViewType.home, (viewObject: ViewObject) => {
- let plotHome = viewObject.node.getComponent(PlotHome)
- plotHome.exDialog()
- viewObject.show();
- });
- })
- viewObject.show();
- });
- }
- /**
- * 公告
- */
- public opentap_set_Ann() {
- this.main.viewManage.loadFunc(GameViewType.tap_set_Ann, (viewObject: ViewObject) => {
- viewObject.show();
- });
- }
- }
|