/******************************************************************** created: 2014/03/03 created: 3:3:2014 11:22 filename: SceneData.cs author: 王迪 purpose: 静态类,存储场景数据 *********************************************************************/ using UnityEngine; using System.Collections; using System.Collections.Generic; using Games.LogicObj; public class SceneData { public class InstInfo { public int instId; public int curplayercount; } public static float CopyOverTime = 0; //如果是副本的话记录一下副本的结束时间 public static float ForbidOverTime = 0; //如果是副本的话记录一下倒计时结束时间 public static int SceneInst { set; get; } // 当前场景实例 public static int SceneMaxPlayerCoutn; public static ulong sceneGuildGuid = Games.GlobeDefine.GlobeVar.INVALID_GUID; //如果是帮会场景记录一下是哪个帮会的场景 public static string sceneGuildName = ""; public static int SceneInstCount { set; get; } // 场景总实例 public static List SceneInstList = new List(); // 场景实例列表 public static List ReachedScenes = new List(); // 玩家达到过的场景 public static List SceneInstInfoList = new List(); // 场景线路信息列表 private static Color ColorSceneNormal = Color.green; private static Color ColorSceneKillPower = Color.white; private static Color ColorSceneKillNoPower = Color.red; public static Color GetSceneNameColor(int scneneID) { if (!GCGame.Utils.IsCanPK(scneneID)) { return SceneData.ColorSceneNormal; } else { if (!GCGame.Utils.IsIncPKValue(scneneID)) { // PK不涨能量 return ColorSceneKillNoPower; } else { return ColorSceneKillPower; } } } public static void UpdateSceneInst(GC_UPDATE_SCENE_INSTACTIVATION packet) { SceneInstList.Clear(); for (int i = 0; i < packet.sceneactivationCount; i++) { SceneInstList.Add(packet.sceneactivationList[i]); } Games.Events.EventDispatcher.Instance.SendMessage(Games.Events.EventId.UpdatePlayerChannel); } public static void UpdateSceneInst2(GC_RET_SCENE_SUB_LINE packet) { SceneInstInfoList.Clear(); SceneInstList.Clear(); for (int i = 0; i < packet.instidList.Count && i { ChangeScene(nChangeType, nTeleportID, nSceneClassID, nSceneInstID, nPosX, nPosZ); }); } else { ChangeScene(nChangeType, nTeleportID, nSceneClassID, nSceneInstID, nPosX, nPosZ); } } private static void ChangeScene(int nChangeType, int nTeleportID, int nSceneClassID, int nSceneInstID, int nPosX, int nPosZ) { var packet = (CG_REQ_CHANGE_SCENE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_CHANGE_SCENE); if (packet != null) { packet.Ctype = nChangeType; packet.Teleportid = nTeleportID; packet.Sceneclassid = nSceneClassID; packet.Sceneinstid = nSceneInstID; packet.PosX = nPosX; packet.PosZ = nPosZ; packet.SendPacket(); } if(GameManager.gameManager.AutoSearch!=null) { GameManager.gameManager.AutoSearch.RoadSignManager._LastChangeSceneType = nChangeType; } var mainPlayer = ObjManager.Instance.MainPlayer; if (mainPlayer) { mainPlayer.EnterMoveFreeze(); if (nChangeType == (int) CG_REQ_CHANGE_SCENE.CHANGETYPE.TELEPORT || nChangeType == (int) CG_REQ_CHANGE_SCENE.CHANGETYPE.POINT || nChangeType == (int) CG_REQ_CHANGE_SCENE.CHANGETYPE.WORLDMAP) { if (GameManager.gameManager.PlayerDataPool.IsHaveTeam() && GameManager.gameManager.PlayerDataPool.TeamInfo.IsCaptain()) { ObjManager.Instance.MainPlayer.TeamChangeSceneFollow(nChangeType, nTeleportID, nSceneClassID, nSceneInstID, nPosX, nPosZ); } } } } }