123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379 |
- using UnityEngine;
- using System.Collections;
- using System;
- using System.Collections.Generic;
- namespace YLBattle
- {
- /// <summary>
- /// 地图
- /// </summary>
- public class FightingMap : MonoBehaviour
- {
- #region 组件
- /// <summary>
- /// 转盘状态机
- /// </summary>
- internal Animator SenceCameraAnimator = null;
- /// <summary>
- /// 转盘状态机(配合背景状态机做攻击和旋转动作)
- /// </summary>
- internal Animator MapAnimator = null;
- /// <summary>
- /// 背景状态机(配合地图状态机做攻击和旋转动作)
- /// </summary>
- internal Animator SenceBgAnimator = null;
- /// <summary>
- /// 地图挂载点
- /// </summary>
- private Transform mMapAttachTran = null;
- /// <summary>
- ///
- /// </summary>
- private MeshRenderer[] mBgRenders = null;
- /// <summary>
- ///
- /// </summary>
- private MeshRenderer[] mMapRenders = null;
- #endregion
- #region 基础变量
- /// <summary>
- ///
- /// </summary>
- internal TimeHelper MapTimeHelper = new TimeHelper();
- /// <summary>
- /// 已加载的地图资源
- /// </summary>
- private List<string> mLoadedMapBundle = new List<string>();
- /// <summary>
- /// 当前中心占位
- /// </summary>
- internal int curtSeat = 0;
- /// <summary>
- /// 上一个中心占位
- /// </summary>
- internal int lastSeat = -1;
- /// <summary>
- /// 是否锁定
- /// </summary>
- private bool mLocked = false;
- /// <summary>
- ///
- /// </summary>
- public bool Locked
- {
- get { return mLocked; }
- }
- /// <summary>
- /// 地图模式
- /// </summary>
- protected int mMapMode = 0;
- /// <summary>
- /// 地图模式 [0=普通关卡 1=无穷尽 2=pvp 3=test 4=guide]
- /// </summary>
- public int MapMode
- {
- get { return this.mMapMode; }
- }
- /// <summary>
- ///
- /// </summary>
- private FightingMapState mFMS = null;
- /// <summary>
- /// 当前平板状态机名称
- /// </summary>
- internal string PlatAnimatorName = string.Empty;
- /// <summary>
- /// 当前地图资源
- /// </summary>
- private GameObject mMapObj = null;
- /// <summary>
- ///
- /// </summary>
- public Vector3 MapPos
- {
- get
- {
- Vector3 pos = Vector3.zero;
- if (this.mMapObj != null)
- {
- pos = this.mMapObj.transform.position;
- }
- return pos;
- }
- }
- /// <summary>
- /// 当前地图背景资源
- /// </summary>
- private GameObject mMapBgObj = null;
- #endregion
- /// <summary>
- /// 实例
- /// </summary>
- public static FightingMap mInstance;
- /// <summary>
- /// 获取单键
- /// </summary>
- /// <returns>单键实例</returns>
- public static FightingMap Instance
- {
- get
- {
- if (mInstance == null)
- {
- GameObject obj = GameObject.Find("FightingManager");
- if (obj != null)
- {
- mInstance = obj.AddComponent<FightingMap>();
- mInstance.InitComponents();
- }
- }
- return mInstance;
- }
- }
- /// <summary>
- /// 初始化
- /// </summary>
- public void InitComponents()
- {
- this.MapTimeHelper.Start();
- ///转盘状态机
- // 新战斗对接 移除多余相机
- //this.SenceCameraAnimator = CameraManager.Instance.SenceCameraAnimator;
- //this.SenceBgAnimator = CameraManager.Instance.SenceBgCameraAnimator;
- this.mMapAttachTran = this.transform.Find("Map");
- ///状态
- this.mFMS = new FightingMapState();
- this.mFMS.Initialize(this);
- }
- /// <summary>
- /// 获取当前处于中心位置的占位编号
- /// </summary>
- /// <returns></returns>
- public int GetCenterSeat()
- {
- return this.curtSeat;
- }
- /// <summary>
- /// 获取当前处于中心位置的占位编号
- /// </summary>
- /// <returns></returns>
- public int GetLastSeat()
- {
- return this.lastSeat;
- }
- /// <summary>
- /// 设置锁定状态
- /// </summary>
- /// <param name="_lock"></param>
- public void SetLock(bool _lock)
- {
- this.mLocked = _lock;
- }
- /// <summary>
- /// 设置地图模式
- /// [0=普通关卡 1=无穷尽 2=pvp 3=test 4=guide]
- /// </summary>
- /// <param name="_mode"></param>
- public void SetMapMode(int _mode)
- {
- this.mMapMode = _mode;
- }
- /// <summary>
- /// 地图震动
- /// </summary>
- public void SetShaking(int shakeLevel)
- {
- //if (shakeLevel == 1)
- //{
- // if (this.mMapAnimator.GetCurrentAnimatorStateInfo(0).IsName("BeAttack"))
- // {
- // this.mMapAnimator.Play("Interrupt");
- // }
- // else
- // {
- // this.mMapAnimator.Play("BeAttack");
- // }
- //}
- }
- /// <summary>
- /// 获取状态机
- /// </summary>
- /// <returns>状态机管理器对象</returns>
- public FightingMapState GetState()
- {
- return this.mFMS;
- }
- /// <summary>
- ///
- /// </summary>
- void Update()
- {
- this.MapTimeHelper.Update();
- if (this.mFMS != null)
- {
- this.mFMS.OnUpdateState();
- }
- }
- /// <summary>
- /// 加载地图
- /// </summary>
- /// <param name="mapBundleName"></param>
- /// <param name="ac"></param>
- public void LoadMapBundle(string bunldeName, Action<string> ac)
- {
- if (this.mLoadedMapBundle.Contains(bunldeName))
- {
- return;
- }
- this.mLoadedMapBundle.Add(bunldeName);
- ResourceHelper.Instance.LoadAssetBundle(bunldeName, ab =>
- {
- //if (ab != null)
- //{
- // GameObject obj = (GameObject)Instantiate(ab.LoadAsset(bunldeName));
- // ///0索引是传入的地图物体,要挂载在当前地图节点下
- // if (ab.mainAsset.name.IndexOf("MAP") != -1)
- // {
- // this.mMapObj = obj;
- // this.mMapRenders = this.mMapObj.GetComponentsInChildren<MeshRenderer>();
- // obj.transform.SetParent(mMapAttachTran);
- // this.MapAnimator = obj.GetComponent<Animator>();
- // }
- // else
- // {
- // this.mMapBgObj = obj;
- // this.mBgRenders = this.mMapBgObj.GetComponentsInChildren<MeshRenderer>();
- // }
- // obj.transform.localRotation = Quaternion.identity;
- // obj.transform.localPosition = Vector3.zero;
- // obj.transform.localScale = new Vector3(1, 1, 1);
- // ac(bunldeName);
- //}
- //else
- //{
- // LogHelper.LogError("地图加载失败" + bunldeName + " 不存在");
- //}
- });
- }
- /// <summary>
- /// 设置地图render颜色
- /// </summary>
- /// <param name="_show"></param>
- public void SetMapDark()
- {
- for (int i = 0; i < this.mBgRenders.Length; i++)
- {
- this.mBgRenders[i].material.SetColor("_Color", new Color(0.329f, 0.329f, 0.329f, 1f));
- }
- for (int i = 0; i < this.mMapRenders.Length; i++)
- {
- this.mMapRenders[i].material.SetColor("_Color", new Color(0.329f, 0.329f, 0.329f, 1f));
- }
- }
- /// <summary>
- /// 设置地图render颜色
- /// </summary>
- /// <param name="_show"></param>
- public void SetMapLight()
- {
- for (int i = 0; i < this.mBgRenders.Length; i++)
- {
- this.mBgRenders[i].material.SetColor("_Color", new Color(1.0f, 1.0f, 1.0f, 1f));
- }
- for (int i = 0; i < mMapRenders.Length; i++)
- {
- mMapRenders[i].material.SetColor("_Color", new Color(1.0f, 1.0f, 1.0f, 1f));
- }
- }
- /// <summary>
- /// boss展示地图特效开始
- /// </summary>
- public void StartMapBossEffect()
- {
- this.mMapObj.SetActive(false);
- this.mMapBgObj.SetActive(false);
- }
- /// <summary>
- /// boss展示地图特效完成
- /// </summary>
- public void OverMapBossEffect()
- {
- this.mMapObj.SetActive(true);
- this.mMapBgObj.SetActive(true);
- }
- /// <summary>
- /// 卸载地图资源
- /// </summary>
- public void UnloadMapBundle()
- {
- foreach (string s in this.mLoadedMapBundle)
- {
- ResourceHelper.Instance.UnloadAssetBundle(s);
- }
- }
- /// <summary>
- /// 停止拖拽行为
- /// </summary>
- public void OverDrag()
- {
- FightingManager.Instance.FiledBattlingHandler().ConfirmBattleMapDragComplete();
- }
- }
- }
|