private void EnterLevel(LevelDatas.LevelDatas lev) { OnBackPress(); Main.Ins.GameBattleEx.Pause(); U3D.LoadLevel(lev, LevelMode.SinglePlayerTask, (GameMode)lev.LevelType); }
void OnSelectLevel(LevelDatas.LevelDatas lev) { Material loadingTexture = null; if (!string.IsNullOrEmpty(lev.BgTexture)) { if (singlePlayer) { loadingTexture = GameObject.Instantiate(Resources.Load <Material>(lev.BgTexture)) as Material; if (loadingTexture != null) { background.material = loadingTexture; } } else { for (int i = 0; i < Main.Ins.CombatData.Chapter.resPath.Length; i++) { if (Main.Ins.CombatData.Chapter.resPath[i].EndsWith(lev.BgTexture + ".jpg")) { byte[] array = System.IO.File.ReadAllBytes(Main.Ins.CombatData.Chapter.resPath[i]); Texture2D tex = new Texture2D(0, 0); tex.LoadImage(array); loadingTexture = GameObject.Instantiate(Resources.Load <Material>("Scene10")) as Material; loadingTexture.SetTexture("_MainTex", tex); loadingTexture.SetColor("_TintColor", Color.white); background.material = loadingTexture; break; } } } } select = lev; Task.text = select.Name; }
//只加载地图/地图物件.要令所有客户端初始化完毕后状态一致,然后用指令播放器,播放帧指令. //如果是单机,就使用帧播放 void OnLoadFinishedEx(LevelDatas.LevelDatas lev) { Main.Ins.SoundManager.Enable(true); LevelScriptBase script = GetLevelScript(lev.LevelScript); if (script == null) { UnityEngine.Debug.LogError(string.Format("level script is null levId:{0}, levScript:{1}", lev.ID, lev.LevelScript)); return; } Main.Ins.CombatData.GScript = script; script.OnLoad(); //加载场景配置数据 Main.Ins.SceneMng.OnEnterLevel(); GameObject battleRoot = new GameObject("GameBattle"); Main.Ins.GameBattleEx = battleRoot.AddComponent <GameBattleEx>(); //等脚本设置好物件的状态后,根据状态决定是否生成受击盒,攻击盒等. Main.Ins.GameBattleEx.Init(script); FrameReplay.Instance.OnBattleStart(); //寻路 PathHelper.Ins.StartCalc(); //如果是录制模式-完毕后不要打开战斗UI if (Main.Ins.CombatData.Replay) { Main.Ins.EnterState(Main.Ins.ReplayState); } else { Main.Ins.EnterState(Main.Ins.FightState); } }
public Chapter FindChapterByLevel(LevelDatas.LevelDatas lev) { if (Dlcs.Count == 0 && Main.Ins.GameStateMgr.gameStatus.pluginChapter != null) { for (int i = 0; i < Main.Ins.GameStateMgr.gameStatus.pluginChapter.Count; i++) { if (Main.Ins.GameStateMgr.gameStatus.pluginChapter[i].Installed) { Dlcs.Add(Main.Ins.GameStateMgr.gameStatus.pluginChapter[i]); } } } for (int i = 0; i < Dlcs.Count; i++) { List <LevelDatas.LevelDatas> all = Dlcs[i].LoadAll(); for (int j = 0; j < all.Count; j++) { if (all[j] == lev) { return(Dlcs[i]); } } } return(null); }
public List <LevelDatas.LevelDatas> GetAllLevel() { if (_data.Count != 0) { return(_data); } //加载外部的proto.bytes,获取里面的数据 Level [] data = GetAllItem(); for (int i = 0; i < data.Length; i++) { LevelDatas.LevelDatas d = new LevelDatas.LevelDatas(); d.BgmName = data[i].BgmName; d.BgTexture = data[i].BgTexture; d.DisableFindWay = false;//已取消该配置,由剧本对应的脚本重写该数据位决定. d.ID = data[i].ID; d.LevelScript = data[i].LevelScript; d.LevelType = data[i].LevelType; d.Name = data[i].Name; //pass param均由关卡剧本脚本来处理-硬编码在代码内 d.Scene = data[i].Scene; d.sceneItems = data[i].sceneItems; d.StartScript = data[i].StartScript; _data.Add(d); } return(_data); }
//打开资料片中指定关卡 public void PlayDlc(Chapter chapter, int levelIdx) { Main.Ins.GameStateMgr.SaveState(); LevelDatas.LevelDatas lev = chapter.GetItem(levelIdx); Main.Ins.CombatData.GLevelItem = lev; Main.Ins.CombatData.GRecord = null; Main.Ins.CombatData.GLevelMode = LevelMode.SinglePlayerTask; Main.Ins.CombatData.GGameMode = GameMode.Normal; Main.Ins.CombatData.wayPoints = CombatData.GetWayPoint(lev); U3D.LoadLevelEx(); }
string GenerateRecordName(LevelDatas.LevelDatas data, LevelMode lm, GameMode gm) { //是什么类型的,单机,模组,联机, //模式-场景-主角-{单机/联机} string [] gms = new string[] { "盟主", "劫镖", "护城", "暗杀", "死斗", "普通" }; if (lm == LevelMode.MultiplyPlayer) { return(string.Format("{0}_{1}_{2}_{3}人_联机", gms[(int)gm - 1], data.Name, Main.Ins.GameStateMgr.gameStatus.NickName, Main.Ins.RoomMng.Current.maxPlayer)); } return(string.Format("{0}-{1}-{2}_剧情", gms[(int)gm - 1], data.Name, Main.Ins.GameStateMgr.gameStatus.NickName)); }
public static List <WayPoint> GetWayPoint(LevelDatas.LevelDatas level) { List <WayPoint> wayPoint = new List <WayPoint>(); string items = level.sceneItems; if ((wayPoint == null || wayPoint.Count == 0) && !string.IsNullOrEmpty(items)) { wayPoint = WayLoader.ReLoad(items); } return(wayPoint); }
void AddGridItem(LevelDatas.LevelDatas i, string strTag, UnityEngine.Events.UnityAction <LevelDatas.LevelDatas> call, Transform parent) { GameObject objPrefab = Resources.Load("LevelItem", typeof(GameObject)) as GameObject; GameObject obj = GameObject.Instantiate(objPrefab) as GameObject; obj.transform.SetParent(parent); obj.name = strTag; obj.GetComponent <Button>().onClick.AddListener(() => { call(i); }); obj.GetComponentInChildren <Text>().text = strTag; obj.transform.localPosition = Vector3.zero; obj.transform.localScale = Vector3.one; }
public void Load() { LevelDatas.LevelDatas lev = Main.Ins.CombatData.GetGlobalLevel(LevelId); Main.Ins.CombatData.Chapter = Main.Ins.DlcMng.FindChapter((LevelId / 1000) * 1000); Main.Ins.CombatData.GLevelItem = lev; Main.Ins.CombatData.GLevelMode = LevelMode.MultiplyPlayer; RoomInfo r = Main.Ins.RoomMng.GetRoom((int)RoomId); Main.Ins.RoomMng.Current = r; Main.Ins.CombatData.GGameMode = (GameMode)r.rule; Main.Ins.CombatData.wayPoints = null; //LoadingWnd.Instance.Open(); U3D.LoadLevelEx(); }
public LevelDatas.LevelDatas GetLevel(int level) { Level l = this.GetItem(level); LevelDatas.LevelDatas d = new LevelDatas.LevelDatas(); d.BgmName = l.BgmName; d.BgTexture = l.BgTexture; d.DisableFindWay = false;//已取消该配置,由剧本对应的脚本重写该数据位决定. d.ID = l.ID; d.LevelScript = l.LevelScript; d.LevelType = l.LevelType; d.Name = l.Name; //pass param均由关卡剧本脚本来处理-硬编码在代码内 d.Scene = l.Scene; d.sceneItems = l.sceneItems; d.StartScript = l.StartScript; return(d); }
IEnumerator LoadLevelAsync() { int displayProgress = 0; int toProgress = 0; yield return(0); LevelDatas.LevelDatas lev = Main.Ins.CombatData.GLevelItem; ResMng.LoadScene(lev.Scene); mAsync = SceneManager.LoadSceneAsync(lev.Scene); mAsync.allowSceneActivation = false; while (mAsync.progress < 0.9f) { toProgress = (int)mAsync.progress * 100; while (displayProgress < toProgress) { ++displayProgress; if (LoadingDialogState.Exist) { LoadingDialogState.Instance.UpdateProgress(displayProgress / 100.0f); } yield return(0); } yield return(0); } toProgress = 100; while (displayProgress < toProgress) { ++displayProgress; if (LoadingDialogState.Exist) { LoadingDialogState.Instance.UpdateProgress(displayProgress / 100.0f); } yield return(0); } mAsync.allowSceneActivation = true; while (!mAsync.isDone) { yield return(0); } OnLoadFinishedEx(lev); Destroy(this); }
void Init() { Yes.onClick.AddListener(() => { OnEnterLevel(); }); Cancel.onClick.AddListener(() => { OnPreviousPress(); }); if (singlePlayer) { //单机关卡 for (int i = 1; i <= Main.Ins.GameStateMgr.gameStatus.Level; i++) { LevelDatas.LevelDatas lev = Main.Ins.DataMgr.GetData <LevelDatas.LevelDatas>(i); if (lev == null) { continue; } Idevgame.Util.LevelUtils.AddGridItem(lev, rootMenu.transform, OnSelectLevel); select = lev; } } else { //剧本关卡 for (int i = 1; i <= Main.Ins.CombatData.Chapter.level; i++) { LevelDatas.LevelDatas lev = Main.Ins.CombatData.Chapter.GetItem(i); if (lev == null) { continue; } Idevgame.Util.LevelUtils.AddGridItem(lev, rootMenu.transform, OnSelectLevel); select = lev; } } OnSelectLevel(select); }
public LevelDatas.LevelDatas GetLevel(int chapterId, int id) { if (chapterId == 0) { LevelDatas.LevelDatas lev = Main.Ins.DataMgr.GetData <LevelDatas.LevelDatas>(id); if (lev != null) { return(lev); } } List <LevelDatas.LevelDatas> l = Main.Ins.DlcMng.GetDlcLevel(chapterId); for (int i = 0; i < l.Count; i++) { if (l[i].ID == id) { return(l[i]); } } Debug.LogError(string.Format("无法找到指定的剧本{0}关卡{1}", chapterId, id)); return(null); }
void Init() { Control("CreateWorld").GetComponent <Button>().onClick.AddListener(() => { OnEnterLevel(); }); GameObject RuleGroup = Control("RuleGroup", WndObject); Toggle rule0 = Control("0", RuleGroup).GetComponent <Toggle>(); Toggle rule1 = Control("1", RuleGroup).GetComponent <Toggle>(); Toggle rule2 = Control("2", RuleGroup).GetComponent <Toggle>(); rule0.isOn = Main.Ins.GameStateMgr.gameStatus.Single.Mode == (int)GameMode.MENGZHU; rule1.isOn = Main.Ins.GameStateMgr.gameStatus.Single.Mode == (int)GameMode.ANSHA; rule2.isOn = Main.Ins.GameStateMgr.gameStatus.Single.Mode == (int)GameMode.SIDOU; rule0.onValueChanged.AddListener((bool select) => { if (select) { Main.Ins.GameStateMgr.gameStatus.Single.Mode = (int)GameMode.MENGZHU; } }); rule1.onValueChanged.AddListener((bool select) => { if (select) { Main.Ins.GameStateMgr.gameStatus.Single.Mode = (int)GameMode.ANSHA; } }); rule2.onValueChanged.AddListener((bool select) => { if (select) { Main.Ins.GameStateMgr.gameStatus.Single.Mode = (int)GameMode.SIDOU; } }); GameObject LifeGroup = Control("LifeGroup", WndObject); Toggle Life0 = Control("0", LifeGroup).GetComponent <Toggle>(); Toggle Life1 = Control("1", LifeGroup).GetComponent <Toggle>(); Toggle Life2 = Control("2", LifeGroup).GetComponent <Toggle>(); Life0.isOn = Main.Ins.GameStateMgr.gameStatus.Single.Life == 500; Life1.isOn = Main.Ins.GameStateMgr.gameStatus.Single.Life == 200; Life2.isOn = Main.Ins.GameStateMgr.gameStatus.Single.Life == 100; Life0.onValueChanged.AddListener((bool select) => { if (select) { Main.Ins.GameStateMgr.gameStatus.Single.Life = 500; } }); Life1.onValueChanged.AddListener((bool select) => { if (select) { Main.Ins.GameStateMgr.gameStatus.Single.Life = 200; } }); Life2.onValueChanged.AddListener((bool select) => { if (select) { Main.Ins.GameStateMgr.gameStatus.Single.Life = 100; } }); GameObject MainWeaponGroup = Control("FirstWeapon", WndObject); GameObject WeaponGroup = Control("WeaponGroup", MainWeaponGroup); for (int i = 0; i <= 11; i++) { Toggle MainWeapon = Control(string.Format("{0}", i), WeaponGroup).GetComponent <Toggle>(); MainWeapon.isOn = Main.Ins.GameStateMgr.gameStatus.Single.Weapon0 == i; MainWeapon.onValueChanged.AddListener(OnMainWeaponSelected); } GameObject SubWeaponGroup = Control("SubWeapon", WndObject); WeaponGroup = Control("WeaponGroup", SubWeaponGroup); for (int i = 0; i <= 11; i++) { Toggle subWeapon = Control(string.Format("{0}", i), WeaponGroup).GetComponent <Toggle>(); subWeapon.isOn = Main.Ins.GameStateMgr.gameStatus.Single.Weapon1 == i; subWeapon.onValueChanged.AddListener(OnSubWeaponSelected); } Control("Return").GetComponent <Button>().onClick.AddListener(() => { Main.Ins.GameStateMgr.SaveState(); OnPreviousPress(); }); //地图模板,应该从所有地图表里获取,包括外部载入的地图. TemplateRoot = Control("WorldRoot", WndObject); LevelDatas.LevelDatas[] allLevel = Main.Ins.CombatData.GetAllLevel(); for (int i = 0; i < allLevel.Length; i++) { LevelDatas.LevelDatas lev = allLevel[i]; if (lev == null) { continue; } Idevgame.Util.LevelUtils.AddGridItem(lev, TemplateRoot.transform, OnSelectLevel); } select = Main.Ins.CombatData.GetLevel(Main.Ins.GameStateMgr.gameStatus.ChapterTemplate, Main.Ins.GameStateMgr.gameStatus.Single.LevelTemplate); OnSelectLevel(select); GameObject ModelGroup = Control("ModelGroup"); for (int i = 0; i < 20; i++) { Toggle modelTog = Control(string.Format("{0}", i), ModelGroup).GetComponent <Toggle>(); Text t = modelTog.GetComponentInChildren <Text>(); t.text = Main.Ins.DataMgr.GetDatasArray <ModelDatas.ModelDatas>()[i].Name; var k = i; modelTog.isOn = Main.Ins.GameStateMgr.gameStatus.Single.Model == i; modelTog.onValueChanged.AddListener((bool select) => { if (select) { Main.Ins.GameStateMgr.gameStatus.Single.Model = k; } }); } GameObject TimeGroup = Control("GameTime", WndObject); for (int i = 0; i < 3; i++) { Toggle TimeToggle = Control(string.Format("{0}", i), TimeGroup).GetComponent <Toggle>(); var k = i; TimeToggle.isOn = Main.Ins.GameStateMgr.gameStatus.Single.RoundTime == ConstRoundTime[k]; TimeToggle.onValueChanged.AddListener((bool selected) => { if (selected) { Main.Ins.GameStateMgr.gameStatus.Single.RoundTime = ConstRoundTime[k]; } }); } GameObject PlayerGroup = Control("PlayerGroup", WndObject); for (int i = 0; i <= 4; i++) { Toggle PlayerToggle = Control(string.Format("{0}", i), PlayerGroup).GetComponent <Toggle>(); var k = i; PlayerToggle.isOn = Main.Ins.GameStateMgr.gameStatus.Single.MaxPlayer == ConstPlayer[k]; PlayerToggle.onValueChanged.AddListener((bool selected) => { if (selected) { Main.Ins.GameStateMgr.gameStatus.Single.MaxPlayer = ConstPlayer[k]; } }); } GameObject DisallowGroup = Control("DisallowGroup", WndObject); Toggle DisallowToggle = Control("0", DisallowGroup).GetComponent <Toggle>(); DisallowToggle.isOn = Main.Ins.GameStateMgr.gameStatus.Single.DisallowSpecialWeapon; DisallowToggle.onValueChanged.AddListener((bool selected) => { Main.Ins.GameStateMgr.gameStatus.Single.DisallowSpecialWeapon = selected; }); }
public void LoadMap(int level) { LevelDatas.LevelDatas lev = Main.Ins.DataMgr.GetData <LevelDatas.LevelDatas>(level); DesFile des = Main.Ins.DesLoader.Load(lev.sceneItems); GMBFile gmb = Main.Ins.GMBLoader.Load(lev.sceneItems); if (lev == null || des == null || gmb == null) { Debug.LogError("can not find"); return; } LoadDesMap(lev.sceneItems); return; //return; bool generateFile = true; if (!System.IO.Directory.Exists("Assets/Materials/" + level + "/")) { System.IO.Directory.CreateDirectory("Assets/Materials/" + level + "/"); //generateFile = true; } //Material[] mat = new Material[gmb.ShaderCount]; //for (int x = 0; x < gmb.ShaderCount; x++) //{ // //mat[x] = new Material // //gmb.shader[x]. //} string shaders = "Unlit/Texture";//因为场景如果都不接受光照,那么会显得没什么氛围 shaders = "Mobile/Diffuse"; Material[] mat = new Material[gmb.TexturesCount]; for (int x = 0; x < gmb.TexturesCount; x++) { mat[x] = new Material(Shader.Find(shaders)); string tex = gmb.TexturesNames[x]; int del = tex.LastIndexOf('.'); if (del != -1) { tex = tex.Substring(0, del); } Texture texture = Resources.Load <Texture>(tex); //这里的贴图可能是一个ifl文件,这种先不考虑,手动修改 if (texture == null) { Debug.LogError("texture miss:" + tex); } mat[x].SetTexture("_MainTex", texture); mat[x].name = string.Format("{0:D2}_{1:D2}", level, x); if (generateFile) { //AssetDatabase.CreateAsset(mat[x], "Assets/Materials/" + level + "/" + mat[x].name + ".mat"); //AssetDatabase.Refresh(); } } while (true) { for (int i = 0; i < Mathf.Min(des.SceneItems.Count, gmb.SceneObjectsCount); i++) { //if (des.SceneItems[i].name != "ian1633") // continue; GameObject objMesh = new GameObject(); objMesh.name = des.SceneItems[i].name; objMesh.transform.localRotation = Quaternion.identity; objMesh.transform.localPosition = Vector3.zero; objMesh.transform.localScale = Vector3.one; bool realObject = false;//是不是正常物体,虚拟体无需设置材质球之类 for (int j = 0; j < gmb.SceneObjectsCount; j++) { if (gmb.mesh[j].name == objMesh.name && j == i) { realObject = true; Mesh w = new Mesh(); //前者子网格编号,后者 索引缓冲区 Dictionary <int, List <int> > tr = new Dictionary <int, List <int> >(); List <Vector3> ve = new List <Vector3>(); List <Vector2> uv = new List <Vector2>(); List <Vector3> nor = new List <Vector3>(); List <Color> col = new List <Color>(); for (int k = 0; k < gmb.mesh[j].faces.Count; k++) { int key = gmb.mesh[j].faces[k].material; if (tr.ContainsKey(key)) { tr[key].Add(gmb.mesh[j].faces[k].triangle[0]); tr[key].Add(gmb.mesh[j].faces[k].triangle[1]); tr[key].Add(gmb.mesh[j].faces[k].triangle[2]); } else { tr.Add(key, new List <int>()); tr[key].Add(gmb.mesh[j].faces[k].triangle[0]); tr[key].Add(gmb.mesh[j].faces[k].triangle[1]); tr[key].Add(gmb.mesh[j].faces[k].triangle[2]); } } for (int k = 0; k < gmb.mesh[j].vertices.Count; k++) { Vector3 vecLocalToWorld = des.SceneItems[i].pos; Quaternion quatToWorld = des.SceneItems[i].quat; // Object ian1633 //{ // Position: -894.278 - 2506.653 51.167 // Quaternion: 0.000 0.000 0.000 1.000 // TextureAnimation: 0 0.000 0.000 // Custom: // { // } // } // */ // Vector3 vecLocalToWorld = new Vector3(-894.278f, -2506.653f, 51.167f); // Quaternion quatToWorld = new Quaternion(0f, 0f, 0f, 1f); // Vector3 vecWorldToLocal = new Vector3(-vecLocalToWorld.x, -vecLocalToWorld.z, -vecLocalToWorld.y); // Quaternion quat = new Quaternion(-quatToWorld.y, -quatToWorld.w, -quatToWorld.z, quatToWorld.x); Vector3 vecWorldToLocal = new Vector3(-vecLocalToWorld.x, -vecLocalToWorld.y, -vecLocalToWorld.z); Vector3 vec = gmb.mesh[j].vertices[k].pos + vecWorldToLocal; vec = Quaternion.Inverse(quatToWorld) * vec; //这个是世界坐标,要变换到自身坐标系来。 //ve.Add(gmb.mesh[j].vertices[k].pos); ve.Add(vec); uv.Add(gmb.mesh[j].vertices[k].uv); col.Add(gmb.mesh[j].vertices[k].color); nor.Add(gmb.mesh[j].vertices[k].normal); } w.SetVertices(ve); w.uv = uv.ToArray(); w.subMeshCount = tr.Count; int ss = 0; //查看这个网格使用了哪些材质,然后把这几个材质取出来 List <Material> targetMat = new List <Material>(); foreach (var each in tr) { w.SetIndices(each.Value.ToArray(), MeshTopology.Triangles, ss++); if (each.Key >= 0 && each.Key < gmb.shader.Length) { int materialIndex = gmb.shader[each.Key].TextureArg0; if (materialIndex >= 0 && materialIndex < mat.Length) { targetMat.Add(mat[materialIndex]); } else { //即使没有贴图,也存在材质 Material defaults = new Material(Shader.Find("Mobile/Diffuse")); defaults.name = string.Format("{0:D2}_{1:D2}", level, materialIndex); if (generateFile) { //AssetDatabase.CreateAsset(defaults, "Assets/Materials/" + level + "/" + defaults.name + ".mat"); //AssetDatabase.Refresh(); } targetMat.Add(defaults); } } } MeshRenderer mr = objMesh.AddComponent <MeshRenderer>(); MeshFilter mf = objMesh.AddComponent <MeshFilter>(); mf.sharedMesh = w; mf.sharedMesh.colors = col.ToArray(); mf.sharedMesh.normals = nor.ToArray(); mf.sharedMesh.RecalculateBounds(); mf.sharedMesh.RecalculateNormals(); mr.materials = targetMat.ToArray(); string vis = ""; if (des.SceneItems[i].ContainsKey("visible", out vis)) { if (vis == "0") { mr.enabled = false; mr.gameObject.AddComponent <MeshCollider>(); } } /* * animation=sin * deformsize=5 * deformfreq=0.25 * deformrange=5.0 */ string block = ""; if (des.SceneItems[i].ContainsKey("blockplayer", out block)) { if (block == "no") { } else { mr.gameObject.AddComponent <MeshCollider>(); } } else { mr.gameObject.AddComponent <MeshCollider>(); } break; } } objMesh.transform.SetParent(transform); objMesh.transform.localRotation = des.SceneItems[i].quat; objMesh.transform.localPosition = des.SceneItems[i].pos; //if (objMesh.GetComponent<MeshFilter>() != null && generateFile) //{ // AssetDatabase.CreateAsset(objMesh.GetComponent<MeshFilter>().sharedMesh, "Assets/Materials/" + level + "/" + des.SceneItems[i].name + ".asset"); // AssetDatabase.Refresh(); //} //yield return 0; } return; //yield break; } }
void Init() { roomName = Control("RoomNameInput").GetComponent <UnityEngine.UI.InputField>(); roomName.text = string.Format("{0}{1}", Main.Ins.GameStateMgr.gameStatus.NickName, "的房间"); roomSecret = Control("RoomSecretInput").GetComponent <UnityEngine.UI.InputField>(); roomSecret.text = ""; Control("CreateWorld").GetComponent <Button>().onClick.AddListener(() => { OnCreateRoom(); }); GameObject RuleGroup = Control("RuleGroup", WndObject); Toggle rule0 = Control("0", RuleGroup).GetComponent <Toggle>(); Toggle rule1 = Control("1", RuleGroup).GetComponent <Toggle>(); Toggle rule2 = Control("2", RuleGroup).GetComponent <Toggle>(); rule0.isOn = Main.Ins.GameStateMgr.gameStatus.NetWork.Mode == (int)GameMode.MENGZHU; rule1.isOn = Main.Ins.GameStateMgr.gameStatus.NetWork.Mode == (int)GameMode.ANSHA; rule2.isOn = Main.Ins.GameStateMgr.gameStatus.NetWork.Mode == (int)GameMode.SIDOU; rule0.onValueChanged.AddListener((bool select) => { if (select) { Main.Ins.GameStateMgr.gameStatus.NetWork.Mode = (int)GameMode.MENGZHU; } }); rule1.onValueChanged.AddListener((bool select) => { if (select) { Main.Ins.GameStateMgr.gameStatus.NetWork.Mode = (int)GameMode.ANSHA; } }); rule2.onValueChanged.AddListener((bool select) => { if (select) { Main.Ins.GameStateMgr.gameStatus.NetWork.Mode = (int)GameMode.SIDOU; } }); GameObject LifeGroup = Control("LifeGroup", WndObject); Toggle Life0 = Control("0", LifeGroup).GetComponent <Toggle>(); Toggle Life1 = Control("1", LifeGroup).GetComponent <Toggle>(); Toggle Life2 = Control("2", LifeGroup).GetComponent <Toggle>(); Life0.isOn = Main.Ins.GameStateMgr.gameStatus.NetWork.Life == 500; Life1.isOn = Main.Ins.GameStateMgr.gameStatus.NetWork.Life == 200; Life2.isOn = Main.Ins.GameStateMgr.gameStatus.NetWork.Life == 100; Life0.onValueChanged.AddListener((bool select) => { if (select) { Main.Ins.GameStateMgr.gameStatus.NetWork.Life = 500; } }); Life1.onValueChanged.AddListener((bool select) => { if (select) { Main.Ins.GameStateMgr.gameStatus.NetWork.Life = 200; } }); Life2.onValueChanged.AddListener((bool select) => { if (select) { Main.Ins.GameStateMgr.gameStatus.NetWork.Life = 100; } }); Control("Return").GetComponent <Button>().onClick.AddListener(() => { Main.Ins.GameStateMgr.SaveState(); OnPreviousPress(); }); //地图模板,应该从所有地图表里获取,包括外部载入的地图. TemplateRoot = Control("WorldRoot", WndObject); LevelDatas.LevelDatas[] allLevel = Main.Ins.CombatData.GetAllLevel(); for (int i = 0; i < allLevel.Length; i++) { LevelDatas.LevelDatas lev = allLevel[i]; if (lev == null) { continue; } Idevgame.Util.LevelUtils.AddGridItem(lev, TemplateRoot.transform, OnSelectLevel); } select = Main.Ins.CombatData.GetLevel(Main.Ins.GameStateMgr.gameStatus.ChapterTemplate, Main.Ins.GameStateMgr.gameStatus.NetWork.LevelTemplate); OnSelectLevel(select); GameObject TimeGroup = Control("GameTime", WndObject); for (int i = 0; i < 3; i++) { Toggle TimeToggle = Control(string.Format("{0}", i), TimeGroup).GetComponent <Toggle>(); var k = i; TimeToggle.isOn = Main.Ins.GameStateMgr.gameStatus.NetWork.RoundTime == ConstRoundTime[k]; TimeToggle.onValueChanged.AddListener((bool selected) => { if (selected) { Main.Ins.GameStateMgr.gameStatus.NetWork.RoundTime = ConstRoundTime[k]; } }); } GameObject PlayerGroup = Control("PlayerGroup", WndObject); for (int i = 0; i <= 4; i++) { Toggle PlayerToggle = Control(string.Format("{0}", i), PlayerGroup).GetComponent <Toggle>(); var k = i; PlayerToggle.isOn = Main.Ins.GameStateMgr.gameStatus.NetWork.MaxPlayer == ConstPlayer[k]; PlayerToggle.onValueChanged.AddListener((bool selected) => { if (selected) { Main.Ins.GameStateMgr.gameStatus.NetWork.MaxPlayer = ConstPlayer[k]; } }); } }
void OnSelectLevel(LevelDatas.LevelDatas lev) { select = lev; Main.Ins.GameStateMgr.gameStatus.NetWork.LevelTemplate = lev.ID; Control("Task").GetComponent <Text>().text = select.Name; }