using DragonBones; #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; using UnityEngine.UI; using System; using System.Xml; using System.Text; using System.Linq; using System.Collections; using System.Diagnostics; using System.Collections.Generic; using Object = UnityEngine.Object; using Transform = UnityEngine.Transform; public class ManaPlayer : Regist { #region 变量 public static bool Complete; public static Transform SeleTra; public static Player Player; public static Transform DressRoom; public static Transform PlayerPink; public static Transform PlayerBlond; public static Transform PlayerBrown; public static ManaPlayer Instance; public static ListBoughtCloseList = new List(); public static List DressData = new List(); public static Dictionary CloseUnitDic = new Dictionary(); public static Dictionary CloseIDDic = new Dictionary(); public static Dictionary CloseSpriteDic = new Dictionary(); #endregion public override void Instantiate() { #region Player if (!Complete) { UnityFactory.factory.LoadDragonBonesData(ManaReso.Load("stand_ske", Folder.Config)); UnityFactory.factory.LoadTextureAtlasData(ManaReso.Load("stand_tex", Folder.Config), "stand_texture"); Complete = true; } if (!ManaTutorial.TutorialA || ManaTutorial.TutorialIndexA != 1) { GetPlayer(); DressData = ManaData.GetDressData(); } else { PlayerPink = ManaReso.Get("Player", Folder.Scene, false, ManaReso.Get("PlayerPos3"), false, ObjType.Player); PlayerBlond = ManaReso.Get("Player", Folder.Scene, false, ManaReso.Get("PlayerPos2"), false, ObjType.Player); PlayerBrown = ManaReso.Get("Player", Folder.Scene, false, ManaReso.Get("PlayerPos1"), false, ObjType.Player); if (PlayerPink.GetComponent() == null) { PlayerPink.AddScript().BuildPink(); } if (PlayerBlond.GetComponent() == null) { PlayerBlond.AddScript().BuildBlond(); } if (PlayerBrown.GetComponent() == null) { PlayerBrown.AddScript().BuildBrown(); } PlayerPink.localScale = new Vector3(0.8f, 0.8f, 0.8f); PlayerBlond.localScale = new Vector3(0.8f, 0.8f, 0.8f); PlayerBrown.localScale = new Vector3(0.8f, 0.8f, 0.8f); SeleTra = PlayerBlond; } #endregion #region DressRoom List attributeList = ManaData.GetDressRoomConfig(); Player.JumpFrequency = float.Parse(attributeList[0][1].Value); DressRoom = ManaReso.Get("DressRoom", Folder.Discard, true, null, true, ObjType.DressRoom); DressRoom.SetActive(false); List dressList = ManaData.GetDressList(); for (int i = 0; i < dressList.Count; i++) { BoughtCloseList.Add(dressList[i]); } #endregion } public override void RegistValueA() { Instance = this; ManaReso.Get("DressRoom").CreateTweenSr(0, 1, 0.25f, false, true, Curve.EaseOutQuad); } public static void InitializeDressRoom() { if (Initializer.Instance.DebugMode) { #if UNITY_EDITOR string assetPath = AssetDatabase.GetAssetPath(ManaReso.Load("stand_texture", Folder.Scene)); Object[] objects = AssetDatabase.LoadAllAssetsAtPath(assetPath); for (int i = 0; i < objects.Length; i++) { Sprite sprite = objects[i] as Sprite; if (sprite != null) { CloseSpriteDic.Add(sprite.name, sprite); } } #endif } else { Object[] objects = Bundle.Scene.LoadAssetWithSubAssets("stand_texture", typeof(Sprite)); for (int i = 0; i < objects.Length; i++) { Sprite sprite = (Sprite)objects[i]; CloseSpriteDic.Add(sprite.name, sprite); } } List attributeList = ManaData.GetDressRoomConfig(); for (int i = 1; i < attributeList.Count; i++) { new CloseUnit(attributeList[i]); } for (int i = 0; i < BoughtCloseList.Count; i++) { CloseUnitDic[BoughtCloseList[i]].Unlock(); } } public Player GetPlayer(XmlNode xmlNode = null) { List DressData = new List(); if (xmlNode == null) { DressData = ManaData.GetDressData(); } else { DressData = ManaData.GetDressData(xmlNode); } Transform tra = ManaReso.Get("Player", Folder.Scene, false, transform, ManaReso.Get("PlayerPosTra").position, ObjType.Player); tra.SetParent(ManaReso.Get("GardenNormal")); Player = tra.GetComponent(); if (Player == null) { Player = tra.AddScript(); Player.Build(); } BuildPlayer(DressData); Player.SetAllCollider(true); tra.localScale = new Vector3(0.5f, 0.5f, 0.5f); ManaReso.TraDic.Add(tra.name, tra); return Player; } public static void BuildPlayer(List dressData) { Player.ChangeClose(BodyPart.Head, dressData[0]); Player.ChangeClose(BodyPart.Dress, dressData[1]); Player.ChangeClose(BodyPart.Shoe, dressData[2]); Player.ChangeClose(BodyPart.Headwear, dressData[3]); Player.ChangeClose(BodyPart.Top, dressData[4]); Player.ChangeClose(BodyPart.Eye, dressData[5]); Player.ChangeClose(BodyPart.Mouse, dressData[6]); Player.ChangeClose(BodyPart.Wing, dressData[7]); } }