153 lines
5.7 KiB
C#
153 lines
5.7 KiB
C#
|
/********************************************************************
|
|||
|
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<int> SceneInstList = new List<int>(); // 场景实例列表
|
|||
|
public static List<int> ReachedScenes = new List<int>(); // 玩家达到过的场景
|
|||
|
|
|||
|
public static List<InstInfo> SceneInstInfoList = new List<InstInfo>(); // 场景线路信息列表
|
|||
|
|
|||
|
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<packet.curplayercountList.Count; i++)
|
|||
|
{
|
|||
|
InstInfo info = new InstInfo();
|
|||
|
info.curplayercount = packet.curplayercountList[i];
|
|||
|
info.instId = packet.instidList[i];
|
|||
|
SceneInstInfoList.Add(info);
|
|||
|
SceneInstList.Add(info.instId);
|
|||
|
}
|
|||
|
SceneMaxPlayerCoutn = packet.Maxplayercount;
|
|||
|
Games.Events.EventDispatcher.Instance.SendMessage(Games.Events.EventId.UpdatePlayerChannel);
|
|||
|
}
|
|||
|
|
|||
|
public static void UpdateReachedScenes(GC_SYNC_REACHEDSCENE packet)
|
|||
|
{
|
|||
|
ReachedScenes.Clear();
|
|||
|
for (int i = 0; i < packet.reachedSceneIDCount; i++)
|
|||
|
{
|
|||
|
ReachedScenes.Add(packet.reachedSceneIDList[i]);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public static void RequestChangeScene(int nChangeType, int nTeleportID, int nSceneClassID, int nSceneInstID, int nPosX, int nPosZ)
|
|||
|
{
|
|||
|
var mainPlayer = ObjManager.Instance.MainPlayer;
|
|||
|
//if(mainPlayer != null && mainPlayer.isAutoCombat)
|
|||
|
//{
|
|||
|
// GUIData.AddNotifyData(GCGame.Table.StrDictionary.GetClientDictionaryString("#{9009}"));
|
|||
|
// GameManager.gameManager.AutoSearch.Stop();
|
|||
|
// return;
|
|||
|
//}
|
|||
|
if (mainPlayer != null)
|
|||
|
mainPlayer.LeveAutoCombat();
|
|||
|
if (GameManager.gameManager.RunningScene == (int)Games.GlobeDefine.GameDefine_Globe.SCENE_DEFINE.SCENE_GUANNING)
|
|||
|
{
|
|||
|
MessageBoxLogic.OpenOKCancelBox(79341, -1, () =>
|
|||
|
{
|
|||
|
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);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|