public void StartLevel(int level) { CurrentLevel = Levels.Where(p => p.Level == level).SingleOrDefault(); if (CurrentLevel == null) { string msg = $"Failed to Start Level {level}."; Log.Fatal(msg); throw new Exception(msg); //we need to stop here since the game is unplayable if this happens } //string[] mapLines = System.IO.File.ReadAllLines(mapFilename); //old method Width = CurrentLevel.Width; Height = CurrentLevel.Height; Tiles = new MapTile[CurrentLevel.Height, CurrentLevel.Width]; for (int yPos = 0; yPos < CurrentLevel.Height; yPos++) { //create the Map 2d array data from the current line char by char for (int xPos = 0; xPos < CurrentLevel.Width; xPos++) { //this calculates row * width of row + column (+1 per row [0 indexed] to adjust for spaces at the end of rows from yaml deserialization) int strpos = yPos * CurrentLevel.Width + xPos + (yPos); CreateTile(CurrentLevel.Map[strpos], xPos, yPos); } } //TODO place player in random available space like monsters are ThePlayer.X = 10; ThePlayer.Y = 10; Random randgen = new Random(); MonsterMgr.AddMonster(Tiles, randgen.Next(2, level + 3)); //MonsterMgr.AddMonster(Tiles, randgen.Next(1, 2)); }
public MonsterRole AddMonster(Variant m, bool invisible = true) { if (GRMap.grmap_loading) { cacheProxy.Add(m); return(null); } int num = 0; if (m.ContainsKey("boset_num")) { num = m["boset_num"]; } Vector3 born_pt = new Vector3(m["x"] / GameConstant.PIXEL_TRANS_UNITYPOS, 0f, m["y"] / GameConstant.PIXEL_TRANS_UNITYPOS); string monName = null; if (m.ContainsKey("owner_name")) { monName = m["owner_name"]; } MonsterRole role = _inst.AddMonster(m["mid"], born_pt, m["iid"], m["face"], num, name: monName); if (role != null) { role.curhp = m["hp"]; role.maxHp = m["battleAttrs"]["max_hp"]; role.invisible = invisible; if (!invisible) { role.m_curGameObj.SetActive(false); } } if (m.ContainsKey("sprite_flag")) { //屏蔽掉怪物异步加载后报错的无用代码 //uint call = m["sprite_flag"]; //uint iid = m["iid"]; //var vv = MonsterMgr._inst.getMonster(iid); //if (vv != null) //{ // Transform body = vv.m_curModel.FindChild("body"); // if (body != null) // { // SkinnedMeshRenderer render = body.GetComponent<SkinnedMeshRenderer>(); // if (render != null) // { // switch (call) // { // case 0: // foreach (var v in render.sharedMaterials) // { // //v.SetColor("_RimColor", new Color(0, 0, 0, 0)); // //v.SetFloat("_RimWidth", 0f); // } // break; // case 1: // //render.sharedMaterial = U3DAPI.U3DResLoad<Material>("default/monster_1021_heite_gold"); // break; // } // } // } //} } if (m.ContainsKey("moving")) { role.to_moving = true; role.to_x = m["moving"]["to_x"]._float; role.to_y = m["moving"]["to_y"]._float; } return(role); }