private TClass CreateFromRouteData <TClass>(RouteData rd, Type type) where TClass : class { var exclude = new string[] { "type", "method" }; var keys = rd.Values.Keys.Where(k => exclude.Contains(k) == false); var ctorInfo = type.GetConstructors() .Select(c => new { ctor = c, parms = c.GetParameters() }) .Where(c => c.parms.Count() == keys.Count()) .Where(c => c.parms.All(p => keys.Contains(p.Name))) .SingleOrDefault(); var parms = new List <object>(); foreach (var parameterInfo in ctorInfo.parms) { Type idType = FindIdType(parameterInfo.Name); parms.Add(RestArea.ConvertTo(idType, rd.Values[parameterInfo.Name].ToString())); } return(ctorInfo.ctor.Invoke(parms.ToArray()) as TClass); }
public void Initialize() { _player.ResetPlayer(Main.Instance.gameState != GameState.Boss); if (Main.Instance.gameState == GameState.Gameplay) { _restAreaInstance = Instantiate(_restAreaPrefab); LoadLevel(); ToggleFogOfWarEnabled(true); } else { if (Main.Instance.gameState == GameState.Hubworld || Main.Instance.gameState == GameState.Boss) { Tilemap walls = GameObject.Find("Walls").GetComponent <Tilemap>(); _currentMap = new Map(GameObject.Find("Floor").GetComponent <Tilemap>(), GameObject.Find("Walls").GetComponent <Tilemap>(), GameObject.Find("Pits").GetComponent <Tilemap>(), new MillerParkLCG()); _currentMap.CollisionMap = new int[Mathf.CeilToInt(walls.localBounds.size.x), Mathf.CeilToInt(walls.localBounds.size.y)]; _player.transform.position = GameObject.Find("PlayerSpawn").transform.position; CameraManager.Instance.SetCameraPosition(_player.transform.position); } if (Main.Instance.gameState != GameState.MainMenu) { GenerateFogOfWar(); _fogOfWarVisible = true; ToggleFogOfWarEnabled(true); } else { ToggleFogOfWarEnabled(false); } } }