private void _StartEnd() { _MenuOnOff(true); _cursorScript = EGHelpers.CreateObjectByPrefab <StartCursor>(new Vector3(0, 0, 0), prefabCursor); //_demo = StartCoroutine(_TimerForDemo()); _bStart = true; }
protected override void CreateEnemy() { ++_count; var vec = _collider2D.bounds.size; var moveDir = GetMoveDirection(); vec.x *= moveDir.x; vec.y *= moveDir.y; if (Level == 0) { var enemy = EGHelpers.CreateObjectByPrefab <Monster>(__Transform.localPosition + vec, GameManager.Instance.GetMonoGameLevel().prefabSmallMonster, __Transform.parent); StartCoroutine(OnCreateEnemy(enemy)); enemy.Speed = Speed + UnityEngine.Random.Range(0.9f, 1.1f); enemy.SetMoveDirection(GetMoveDirection()); return; } if (Level == 1) { var enemy = EGHelpers.CreateObjectByPrefab <Monster>(__Transform.localPosition + vec, GameManager.Instance.GetMonoGameLevel().prefabTendrils, __Transform.parent); StartCoroutine(OnCreateEnemy(enemy)); enemy.Level = _count % 3 == 0 ? 1 : 0; enemy.Speed = Speed + UnityEngine.Random.Range(0.7f, 0.9f); enemy.SetMoveDirection(GetMoveDirection()); return; } }
private void _LevelOn() { if (!_bLevelSetup) { _bLevelSetup = true; _gameLevel = GetComponentInChildren <GameLevel>(); _player = EGHelpers.CreateObjectByPrefab <Skelsp>(Vector3.zero, prefabPlayer); _gameLevel.Init(_player); _inputManager.SetPlayer(_player); _gameLevel.OnLevelWin += OnLevelWin; _gameLevel.OnGameOver += OnGameOver; _gameLevel.OnUserExit += OnUserExit; } _player.gameObject.SetActive(true); DebugLogger.WriteInfo("_LevelOn _levelNumber = {0}", _levelNumber); _gameLevel.Number = _levelNumber; _gameLevel.LoadLevel(_textLevels[_levelNumber - 1].text); }
public void LoadLevel(string levelParams) { _player.Reset(); FullSerializer.fsData jsData = null; FullSerializer.fsResult res = FullSerializer.fsJsonParser.Parse(levelParams, out jsData); DebugLogger.WriteInfo("GameLevel.LoadLevel res.Failed = {0}", res.Failed.ToInt()); if (res.Failed) { DebugLogger.WriteError("GameLevel.LoadLevel error = {0}", res.FormattedMessages); return; } DebugLogger.WriteInfo("GameLevel.LoadLevel data.IsDictionary = {0}", jsData.IsDictionary.ToInt()); if (!jsData.IsDictionary) { DebugLogger.WriteError("GameLevel.LoadLevel json data is incorrect format"); return; } var isDict = jsData.IsDictionary; if (!isDict) { DebugLogger.WriteError("GameLevel.LoadLevel json data must be have node 'level'"); return; } jsData = jsData.AsDictionary["level"]; DebugLogger.WriteInfo("GameLevel.LoadLevel data.AsDictionary = {0}", jsData.IsDictionary.ToInt()); if (!jsData.IsDictionary) { DebugLogger.WriteError("GameLevel.LoadLevel level data is not dictionary"); return; } var jsLevelParams = jsData.AsDictionary; var jsTerrain = jsLevelParams["terrain"]; if (!jsTerrain.IsDictionary) { DebugLogger.WriteError("GameLevel.LoadLevel terrain data is not dictionary"); return; } _levelAllSprites = new GameObject("GameLevel"); var jsIslands = jsTerrain.AsDictionary["islands"]; var jsIslandList = jsIslands.AsList; var islandList = new List <Island>(); foreach (var jsIsland in jsIslandList) { var island = new Island(this, _levelAllSprites.transform); island.Load(jsIsland); islandList.Add(island); } if (islandList.Count == 1) { var island = islandList[0]; Field = new Rect(new Vector2(island.Pos.x - 0.5f * island.Size.x, island.Pos.y - 0.5f * island.Size.y), new Vector2(island.Size.x, island.Size.y)); } else { var minPosX = float.MaxValue; var maxPosX = float.MinValue; var minPosY = float.MaxValue; var maxPosY = float.MinValue; foreach (var island in islandList) { if (minPosX > island.Pos.x - 0.5f * island.Size.x) { minPosX = island.Pos.x - 0.5f * island.Size.x; } if (maxPosX < island.Pos.x + 0.5f * island.Size.x) { maxPosX = island.Pos.x + 0.5f * island.Size.x; } if (minPosY > island.Pos.y - 0.5f * island.Size.y) { minPosY = island.Pos.y - 0.5f * island.Size.y; } if (maxPosY < island.Pos.y + 0.5f * island.Size.y) { maxPosY = island.Pos.y + 0.5f * island.Size.y; } } Field = new Rect(new Vector2(minPosX, minPosY), new Vector2(maxPosX - minPosX, maxPosY - minPosX)); } if (jsTerrain.AsDictionary.ContainsKey("bridges")) { var jsBrigdeList = jsTerrain.AsDictionary["bridges"].AsList; foreach (var jsBrigde in jsBrigdeList) { var bridge = new Bridge(this, _levelAllSprites.transform, islandList); if (!bridge.Load(jsBrigde)) { DebugLogger.WriteError("GameLevel.LoadLevel load bridge is failed"); } } } foreach (var island in islandList) { island.CreateBorders(); } if (jsLevelParams.ContainsKey("enemy")) { var jsEnemy = jsLevelParams["enemy"]; if (jsEnemy.AsDictionary.ContainsKey("portals")) { var jsPortalList = jsEnemy.AsDictionary["portals"].AsList; foreach (var jsPortal in jsPortalList) { var jsPortalData = jsPortal.AsDictionary; int portalLevel = jsPortalData.ContainsKey("level") ? (int)jsPortalData["level"].AsInt64 : 0; var portalPos = GameLevelJsonLoader.GetPos(jsPortalData["pos"]); int islandId = jsPortalData.ContainsKey("islandId") ? (int)jsPortalData["islandId"].AsInt64 : -1; var portal = EGHelpers.CreateObjectByPrefab <Portal>((islandId == -1 ? portalPos : (portalPos + islandList.Find(it => it.Id == islandId).Pos)), prefabPortal, _levelAllSprites.transform); portal.Level = portalLevel; portal.AddObserver(_DiedObject); _enemyManager.AddEnemy(portal); } } } var jsBonus = jsLevelParams["bonus"]; var jsBonusData = jsBonus.AsDictionary; var jsGoodBonus = jsBonusData["player"].AsDictionary; PlayerUpgrade.SleepTime = (float)jsGoodBonus["sleepTime"].AsDouble; PlayerUpgrade.SpeedTime = (float)jsGoodBonus["speedTime"].AsDouble; PlayerUpgrade.ShieldTime = (float)jsGoodBonus["shieldTime"].AsDouble; PlayerUpgrade.ChildrenShieldTime = (float)jsGoodBonus["childrenShieldTime"].AsDouble; PlayerUpgrade.Health = (float)jsGoodBonus["health"].AsDouble; var jsEnemyBonus = jsBonusData["enemy"].AsDictionary; EnemyUpgrade.SleepTime = (float)jsEnemyBonus["sleepTime"].AsDouble; EnemyUpgrade.SpeedTime = (float)jsEnemyBonus["speedTime"].AsDouble; EnemyUpgrade.ShieldTime = (float)jsEnemyBonus["shieldTime"].AsDouble; EnemyUpgrade.Health = (float)jsEnemyBonus["health(%)"].AsDouble; _enemyCountText.text = String.Format("E: {0}", _enemyManager.Count.ToString()); }
protected override void CreateEnemy() { ++_count; if (Level == 0) { var enemy = EGHelpers.CreateObjectByPrefab <Monster>(__Transform.localPosition, GameManager.Instance.GetMonoGameLevel().prefabSmallMonster, __Transform.parent); StartCoroutine(OnCreateEnemy(enemy)); enemy.Speed = Random.Range(0.3f, 0.5f); enemy.SetMoveDirection(Random.Range(-1.0f, 1.0f), Random.Range(-1.0f, 1.0f)); return; } if (Level == 1) { var enemy = EGHelpers.CreateObjectByPrefab <Monster>(__Transform.localPosition, GameManager.Instance.GetMonoGameLevel().prefabTendrils, __Transform.parent); StartCoroutine(OnCreateEnemy(enemy)); enemy.Level = _count % 3 == 0 ? 1 : 0; enemy.Speed = Random.Range(0.4f, 0.6f); enemy.SetMoveDirection(Random.Range(-1.0f, 1.0f), Random.Range(-1.0f, 1.0f)); return; } if (Level == 2) { if (_count % 3 == 0) { var intMouth = EGHelpers.CreateAnimationByScript <IntelligentMouth>(__Transform.localPosition, animatorMouth, "IntelligentMouth", __Transform.parent, GameLevel.EnemyTagName); StartCoroutine(OnCreateEnemy(intMouth)); intMouth.Speed = Random.Range(0.4f, 0.5f); return; } var enemy = EGHelpers.CreateObjectByPrefab <Monster>(__Transform.localPosition, GameManager.Instance.GetMonoGameLevel().prefabMouth, __Transform.parent); StartCoroutine(OnCreateEnemy(enemy)); enemy.Speed = Random.Range(0.3f, 0.5f); enemy.SetMoveDirection(Random.Range(-1.0f, 1.0f), Random.Range(-1.0f, 1.0f)); return; } if (Level == 3) { if (_count % 3 == 0) { var intMouth = EGHelpers.CreateAnimationByScript <IntelligentMouth>(__Transform.localPosition, animatorMouth, "IntelligentMouth", __Transform.parent, GameLevel.EnemyTagName); StartCoroutine(OnCreateEnemy(intMouth)); intMouth.Speed = Random.Range(0.4f, 0.6f); return; } var enemy = EGHelpers.CreateObjectByPrefab <Monster>(__Transform.localPosition, GameManager.Instance.GetMonoGameLevel().prefabMouth, __Transform.parent); StartCoroutine(OnCreateEnemy(enemy)); enemy.Speed = Random.Range(0.4f, 0.7f); enemy.SetMoveDirection(Random.Range(-1.0f, 1.0f), Random.Range(-1.0f, 1.0f)); return; } if (Level == 4) { /*int ost = count % 3; * if (ost == 0) { * var intMouth = EGHelpers.CreateAnimationByScript<IntelligentMouth>(__Transform.localPosition, * animatorMouth, "IntelligentMouth", __Transform.parent, GameLevel.EnemyTagName); * StartCoroutine(OnCreateEnemy(intMouth)); * intMouth.AddObserver(_DiedEnemy); * intMouth.Speed = Random.Range(0.4f, 0.6f); * return; * } * * if (ost == 1) { * var intMouth = EGHelpers.CreateAnimationByScript<IntelligentMouth>(__Transform.localPosition, * animatorMouth, "IntelligentMouth", __Transform.parent, GameLevel.EnemyTagName); * StartCoroutine(OnCreateEnemy(intMouth)); * intMouth.AddObserver(_DiedEnemy); * intMouth.Speed = Random.Range(0.4f, 0.6f); * return; * }*/ var enemy = EGHelpers.CreateObjectByPrefab <Beetle>(__Transform.localPosition, GameManager.Instance.GetMonoGameLevel().prefabBeetle, __Transform.parent); StartCoroutine(OnCreateEnemy(enemy)); enemy.Speed = Random.Range(0.3f, 0.5f); enemy.SetMoveDirection(Random.Range(-1.0f, 1.0f), Random.Range(-1.0f, 1.0f)); return; } if (Level == 5) { var enemy = EGHelpers.CreateObjectByPrefab <Beetle>(__Transform.localPosition, GameManager.Instance.GetMonoGameLevel().prefabBeetle, __Transform.parent); StartCoroutine(OnCreateEnemy(enemy)); enemy.Level = 1; enemy.Speed = Random.Range(0.3f, 0.5f); enemy.SetMoveDirection(Random.Range(-1.0f, 1.0f), Random.Range(-1.0f, 1.0f)); return; } }