public void ReleaseFireBall(Vector3 pos, FactionType releaseFaction) { GameObject fireBall = (GameObject)Instantiate(Resources.Load("GameScene/PlayerSkillFireBall")); fireBall.transform.position = pos; tk2dSpriteAnimator animator = fireBall.GetComponent <tk2dSpriteAnimator>(); animator.AnimationCompleted = delegate { Damage fireBallDamage = new Damage(); fireBallDamage.DamageValue = 1000; fireBallDamage.ShowCrit = true; List <GameObject> enemies = ActorsManager.GetInstance().GetEnemyActorsInDistance(releaseFaction, pos, 50); enemies.ForEach( enemy => { if (enemy != null) { ActorController actorCtrl = enemy.GetComponent <ActorController>(); actorCtrl.TakeDamage(fireBallDamage); } }); Destroy(fireBall); }; }
public void ReleaseLightningBolt(FactionType releaseFaction) { Damage lightningBoltDamage = new Damage(); lightningBoltDamage.DamageValue = 300; lightningBoltDamage.ShowCrit = true; List <GameObject> enemyActors = ActorsManager.GetInstance().GetAllEnemyActors(releaseFaction); enemyActors.ForEach( enemyActor => { GameObject lightningBolt = (GameObject)Instantiate(Resources.Load("GameScene/PlayerSkillLightningBolt")); lightningBolt.transform.parent = enemyActor.transform; lightningBolt.transform.localPosition = new Vector3(0, 0, 0); tk2dSpriteAnimator animator = lightningBolt.GetComponent <tk2dSpriteAnimator>(); animator.AnimationCompleted = delegate { if (enemyActor != null) { ActorController actorCtrl = enemyActor.GetComponent <ActorController>(); actorCtrl.TakeDamage(lightningBoltDamage); Destroy(lightningBolt); } }; }); }
private void Start() { this.gameSceneController = GameObject.Find("GameSceneController").GetComponent <GameSceneController>(); this.buildingsManager = BuildingsManager.GetInstance(); this.actorsManager = ActorsManager.GetInstance(); this.InvokeRepeating("CheckResult", 0f, 0.1f); }
public void ReleaseBloodlust(FactionType releaseFaction) { List <GameObject> myActors = ActorsManager.GetInstance().GetActorsOfFaction(releaseFaction); myActors.ForEach( actor => { GameObject bloodlust = (GameObject)Instantiate(Resources.Load("GameScene/PlayerSkillBloodlust")); bloodlust.name = "BloodLustRelease"; bloodlust.transform.parent = actor.transform; bloodlust.transform.localPosition = new Vector3(0, 0, 0); tk2dSpriteAnimator animator = bloodlust.GetComponent <tk2dSpriteAnimator>(); animator.Play("Release"); animator.AnimationCompleted = delegate { Destroy(bloodlust); if (actor != null) { ActorController actorCtrl = actor.GetComponent <ActorController>(); actorCtrl.BloodSuckingRatio = 30; actorCtrl.AttackPlusRatio = 1.5f; GameObject bloodBustHalo = (GameObject)Instantiate(Resources.Load("GameScene/PlayerSkillBloodlust")); bloodBustHalo.name = "BloodBustHalo"; bloodBustHalo.transform.parent = actor.transform; bloodBustHalo.transform.localPosition = new Vector3(10, -5, 0); bloodBustHalo.GetComponent <tk2dSpriteAnimator>().Play("Halo"); } }; }); }
public void ReleaseHeal(FactionType releaseFaction) { Damage healDamage = new Damage(); healDamage.DamageValue = -300; healDamage.ShowCrit = true; List <GameObject> myActors = ActorsManager.GetInstance().GetActorsOfFaction(releaseFaction); myActors.ForEach( actor => { GameObject heal = (GameObject)Instantiate(Resources.Load("GameScene/PlayerSkillHeal")); heal.transform.parent = actor.transform; heal.transform.localPosition = new Vector3(0, 0, 0); tk2dSpriteAnimator animator = heal.GetComponent <tk2dSpriteAnimator>(); animator.AnimationCompleted = delegate { if (actor != null) { ActorController actorCtrl = actor.GetComponent <ActorController>(); actorCtrl.TakeDamage(healDamage); Destroy(heal); } }; }); }
private void DispatchActor(BuildingController entityType, BuildingLevel buildingLevel) { ActorsManager.GetInstance() .CreateNewActor( entityType.Building.FactionType, entityType.Building.Race, buildingLevel == BuildingLevel.BuildingLevel1 ? entityType.Building.ProducedActorTypeLevel1 : entityType.Building.ProducedActorTypeLevel2, entityType.MyTransform.position); }
private void Start() { actorsManager = FindObjectOfType <ActorsManager>(); if (!actorsManager.actors.Contains(this)) { actorsManager.actors.Add(this); } }
void Awake() { ActorsManager actorsManager = FindObjectOfType <ActorsManager>(); if (actorsManager != null) { actorsManager.SetPlayer(gameObject); } }
private void Start() { m_ActorsManager = GameObject.FindObjectOfType <ActorsManager>(); // Register as an actor if (!m_ActorsManager.actors.Contains(this)) { m_ActorsManager.actors.Add(this); } }
private void Start() { m_ActorsManager = GameObject.FindObjectOfType <ActorsManager>(); DebugUtility.HandleErrorIfNullFindObject <ActorsManager, Actor>(m_ActorsManager, this); //アクターとして登録します if (!m_ActorsManager.actors.Contains(this)) { m_ActorsManager.actors.Add(this); } }
void Start() { m_ActorsManager = FindObjectOfType <ActorsManager>(); //DebugUtility.HandleErrorIfNullFindObject<ActorsManager, Actor>(m_ActorsManager, this); // Register as an actor if (!m_ActorsManager.Actors.Contains(this)) { m_ActorsManager.Actors.Add(this); } }
private void Start() { m_ActorsManager = GameObject.FindObjectOfType <ActorsManager>(); DebugUtility.HandleErrorIfNullFindObject <ActorsManager, Actor>(m_ActorsManager, this); // Register as an actor // Agregar un actor if (!m_ActorsManager.actors.Contains(this)) { m_ActorsManager.actors.Add(this); } }
private void Start() { //here the actor manager takes the game object for example the player or the enemy m_ActorsManager = GameObject.FindObjectOfType <ActorsManager>(); DebugUtility.HandleErrorIfNullFindObject <ActorsManager, Actor>(m_ActorsManager, this); // Register as an actor //here the actor is put into the empty Plot if (!m_ActorsManager.actors.Contains(this)) { m_ActorsManager.actors.Add(this); } }
void Start() { m_EnemyManager = FindObjectOfType <EnemyManager>(); DebugUtility.HandleErrorIfNullFindObject <EnemyManager, EnemyController>(m_EnemyManager, this); m_ActorsManager = FindObjectOfType <ActorsManager>(); DebugUtility.HandleErrorIfNullFindObject <ActorsManager, EnemyController>(m_ActorsManager, this); m_EnemyManager.RegisterEnemy(this); m_Health = GetComponent <Health>(); DebugUtility.HandleErrorIfNullGetComponent <Health, EnemyController>(m_Health, this, gameObject); m_Actor = GetComponent <Actor>(); DebugUtility.HandleErrorIfNullGetComponent <Actor, EnemyController>(m_Actor, this, gameObject); m_NavMeshAgent = GetComponent <NavMeshAgent>(); m_SelfColliders = GetComponentsInChildren <Collider>(); m_GameFlowManager = FindObjectOfType <GameFlowManager>(); DebugUtility.HandleErrorIfNullFindObject <GameFlowManager, EnemyController>(m_GameFlowManager, this); // Subscribe to damage & death actions m_Health.onDie += OnDie; m_Health.onDamaged += OnDamaged; weapon.owner = gameObject; foreach (var renderer in GetComponentsInChildren <Renderer>(true)) { for (int i = 0; i < renderer.sharedMaterials.Length; i++) { if (renderer.sharedMaterials[i] == eyeColorMaterial) { m_EyeRendererData = new RendererIndexData(renderer, i); } if (renderer.sharedMaterials[i] == bodyMaterial) { m_BodyRenderers.Add(new RendererIndexData(renderer, i)); } } } m_EyeColorMaterialPropertyBlock = new MaterialPropertyBlock(); m_BodyFlashMaterialPropertyBlock = new MaterialPropertyBlock(); m_EyeColorMaterialPropertyBlock.SetColor("_EmissionColor", defaultEyeColor); m_EyeRendererData.renderer.SetPropertyBlock(m_EyeColorMaterialPropertyBlock, m_EyeRendererData.materialIndex); }
public static ActorsManager GetInstance() { if (instance == null) { lock (_lock) { if (instance == null) { instance = new ActorsManager(); } } } return(instance); }
void Start() { ActorsManager actorsManager = FindObjectOfType <ActorsManager>(); if (actorsManager != null) { m_PlayerTransform = actorsManager.Player.transform; } else { enabled = false; return; } m_OriginalOffset = transform.position - m_PlayerTransform.position; }
public void ClearGameScene() { if (this.GameResultChecker != null) { Destroy(this.GameResultChecker.gameObject); } ActorsManager.GetInstance().DestroyAllActors(); BuildingsManager.GetInstance().DestroyAllBuildings(); Destroy(this.battleFieldMap); Destroy(GameObject.FindGameObjectWithTag("Obstacle")); GameObject[] torchs = GameObject.FindGameObjectsWithTag("GameSceneTorch"); for (int i = 0; i < torchs.Length; i++) { Destroy(torchs[i]); } }
public List <GameObject> SeekAndGetEnemies(bool ignoreObstacles = true, bool ignoreAir = true) { List <GameObject> result = ActorsManager.GetInstance() .GetEnemyActorsInDistanceAndSortByDistance(this, this.MyActor.ActorAttack.ViewDistance, ignoreObstacles); if (!ignoreAir && !this.MyActor.AttackAirForce) { for (int i = 0; i < result.Count; i++) { if (result[i] != null) { ActorController actorCtrl = result[i].GetComponent <ActorController>(); if (actorCtrl.MyActor.IsAirForce) { result.RemoveAt(i); } } } } return(result); }
public void StartArmageddon() { this.IsArmageddon = true; List <GameObject> allBuildings = BuildingsManager.GetInstance().GetAllBuildings(); allBuildings.ForEach( building => { if (building != null) { BuildingController buildingCtrl = building.GetComponent <BuildingController>(); if (!buildingCtrl.Building.IsMainCity) { ActorsManager actorsManager = ActorsManager.GetInstance(); for (int i = 0; i < 4; i++) { if (buildingCtrl.Building.CurrentLevel == BuildingLevel.BuildingLevel1 || buildingCtrl.Building.CurrentLevel == BuildingLevel.BuildingLevel2 && i < 2) { actorsManager.CreateNewActor( buildingCtrl.Building.FactionType, buildingCtrl.Building.Race, buildingCtrl.Building.ProducedActorTypeLevel1, building.transform.position + new Vector3(Random.Range(-40, 40), Random.Range(-40, 40), 0)); } else if (buildingCtrl.Building.CurrentLevel == BuildingLevel.BuildingLevel2) { actorsManager.CreateNewActor( buildingCtrl.Building.FactionType, buildingCtrl.Building.Race, buildingCtrl.Building.ProducedActorTypeLevel2, building.transform.position + new Vector3(Random.Range(-20, 20), Random.Range(-20, 20), 0)); } } BuildingsManager.GetInstance().DestroyBuilding(building); } } }); }
public List <GameObject> SeekAndGetFriendlyActorsInDistance( int distance, bool ignoreObstacles = true, bool ignoreAir = true) { List <GameObject> result = ActorsManager.GetInstance() .GetFriendlyActorsInDistance(this.MyActor.FactionType, this.myTransform.position, distance, ignoreObstacles); if (!ignoreAir && !this.MyActor.AttackAirForce) { for (int i = 0; i < result.Count; i++) { if (result[i] != null) { ActorController actorCtrl = result[i].GetComponent <ActorController>(); if (actorCtrl.MyActor.IsAirForce) { result.RemoveAt(i); } } } } return(result); }
public GameState() { this.actorsManager = new ActorsManager(); this.Properties = new PropertyBag<object>(); this.MaxPlayers = 0; }
public GameState() { this.actorsManager = new ActorsManager(); this.Properties = new PropertyBag <object>(); this.MaxPlayers = 0; }
protected virtual void Start() { m_ActorsManager = FindObjectOfType <ActorsManager>(); DebugUtility.HandleErrorIfNullFindObject <ActorsManager, DetectionModule>(m_ActorsManager, this); }
void Start() { m_EnemyManager = FindObjectOfType <EnemyManager>(); DebugUtility.HandleErrorIfNullFindObject <EnemyManager, EnemyController>(m_EnemyManager, this); m_ActorsManager = FindObjectOfType <ActorsManager>(); DebugUtility.HandleErrorIfNullFindObject <ActorsManager, EnemyController>(m_ActorsManager, this); m_EnemyManager.RegisterEnemy(this); m_Health = GetComponent <Health>(); DebugUtility.HandleErrorIfNullGetComponent <Health, EnemyController>(m_Health, this, gameObject); m_Actor = GetComponent <Actor>(); DebugUtility.HandleErrorIfNullGetComponent <Actor, EnemyController>(m_Actor, this, gameObject); m_NavMeshAgent = GetComponent <NavMeshAgent>(); m_SelfColliders = GetComponentsInChildren <Collider>(); m_GameFlowManager = FindObjectOfType <GameFlowManager>(); DebugUtility.HandleErrorIfNullFindObject <GameFlowManager, EnemyController>(m_GameFlowManager, this); // Subscribe to damage & death actions m_Health.onDie += OnDie; m_Health.onDamaged += OnDamaged; // Find and initialize all weapons FindAndInitializeAllWeapons(); var weapon = GetCurrentWeapon(); weapon.ShowWeapon(true); var detectionModules = GetComponentsInChildren <DetectionModule>(); DebugUtility.HandleErrorIfNoComponentFound <DetectionModule, EnemyController>(detectionModules.Length, this, gameObject); DebugUtility.HandleWarningIfDuplicateObjects <DetectionModule, EnemyController>(detectionModules.Length, this, gameObject); // Initialize detection module m_DetectionModule = detectionModules[0]; m_DetectionModule.onDetectedTarget += OnDetectedTarget; m_DetectionModule.onLostTarget += OnLostTarget; onAttack += m_DetectionModule.OnAttack; var navigationModules = GetComponentsInChildren <NavigationModule>(); DebugUtility.HandleWarningIfDuplicateObjects <DetectionModule, EnemyController>(detectionModules.Length, this, gameObject); // Override navmesh agent data if (navigationModules.Length > 0) { m_NavigationModule = navigationModules[0]; m_NavMeshAgent.speed = m_NavigationModule.moveSpeed; m_NavMeshAgent.angularSpeed = m_NavigationModule.angularSpeed; m_NavMeshAgent.acceleration = m_NavigationModule.acceleration; } foreach (var renderer in GetComponentsInChildren <Renderer>(true)) { for (int i = 0; i < renderer.sharedMaterials.Length; i++) { if (renderer.sharedMaterials[i] == eyeColorMaterial) { m_EyeRendererData = new RendererIndexData(renderer, i); } if (renderer.sharedMaterials[i] == bodyMaterial) { m_BodyRenderers.Add(new RendererIndexData(renderer, i)); } } } m_BodyFlashMaterialPropertyBlock = new MaterialPropertyBlock(); // Check if we have an eye renderer for this enemy if (m_EyeRendererData.renderer != null) { m_EyeColorMaterialPropertyBlock = new MaterialPropertyBlock(); m_EyeColorMaterialPropertyBlock.SetColor("_EmissionColor", defaultEyeColor); m_EyeRendererData.renderer.SetPropertyBlock(m_EyeColorMaterialPropertyBlock, m_EyeRendererData.materialIndex); } }
public async Task <ActorsAddOutput> ActorsAdd(Actors Actors) { return(await ActorsManager.ActorsAdd(Actors)); }
public async Task <ActorDeleteOutput> DeleteActor(ActorDeleteInput Parameters) { return(await ActorsManager.DeleteActors(Parameters)); }
private void Start() { m_ActorsManager = FindObjectOfType <ActorsManager>(); DebugUtility.HandleErrorIfNullFindObject <ActorsManager, EnemyController>(m_ActorsManager, this); }
void Start() { m_EnemyManager = FindObjectOfType <EnemyManager>(); DebugUtility.HandleErrorIfNullFindObject <EnemyManager, EnemyController>(m_EnemyManager, this); m_ActorsManager = FindObjectOfType <ActorsManager>(); DebugUtility.HandleErrorIfNullFindObject <ActorsManager, EnemyController>(m_ActorsManager, this); m_EnemyManager.RegisterEnemy(this); m_Health = GetComponent <Health>(); DebugUtility.HandleErrorIfNullGetComponent <Health, EnemyController>(m_Health, this, gameObject); m_Actor = GetComponent <Actor>(); DebugUtility.HandleErrorIfNullGetComponent <Actor, EnemyController>(m_Actor, this, gameObject); m_NavMeshAgent = GetComponent <NavMeshAgent>(); m_SelfColliders = GetComponentsInChildren <Collider>(); m_GameFlowManager = FindObjectOfType <GameFlowManager>(); DebugUtility.HandleErrorIfNullFindObject <GameFlowManager, EnemyController>(m_GameFlowManager, this); //ダメージと死のアクションをサブスクライブします m_Health.onDie += OnDie; m_Health.onDamaged += OnDamaged; //すべての武器を見つけて初期化します FindAndInitializeAllWeapons(); var weapon = GetCurrentWeapon(); weapon.ShowWeapon(true); var detectionModules = GetComponentsInChildren <DetectionModule>(); DebugUtility.HandleErrorIfNoComponentFound <DetectionModule, EnemyController>(detectionModules.Length, this, gameObject); DebugUtility.HandleWarningIfDuplicateObjects <DetectionModule, EnemyController>(detectionModules.Length, this, gameObject); //検出モジュールを初期化します m_DetectionModule = detectionModules[0]; m_DetectionModule.onDetectedTarget += OnDetectedTarget; m_DetectionModule.onLostTarget += OnLostTarget; onAttack += m_DetectionModule.OnAttack; var navigationModules = GetComponentsInChildren <NavigationModule>(); DebugUtility.HandleWarningIfDuplicateObjects <DetectionModule, EnemyController>(detectionModules.Length, this, gameObject); // navmeshエージェントのデータを上書きします if (navigationModules.Length > 0) { m_NavigationModule = navigationModules[0]; m_NavMeshAgent.speed = m_NavigationModule.moveSpeed; m_NavMeshAgent.angularSpeed = m_NavigationModule.angularSpeed; m_NavMeshAgent.acceleration = m_NavigationModule.acceleration; } foreach (var renderer in GetComponentsInChildren <Renderer>(true)) { for (int i = 0; i < renderer.sharedMaterials.Length; i++) { if (renderer.sharedMaterials[i] == eyeColorMaterial) { m_EyeRendererData = new RendererIndexData(renderer, i); } if (renderer.sharedMaterials[i] == bodyMaterial) { m_BodyRenderers.Add(new RendererIndexData(renderer, i)); } } } m_BodyFlashMaterialPropertyBlock = new MaterialPropertyBlock(); //この敵のアイレンダラーがあるかどうかを確認します if (m_EyeRendererData.renderer != null) { m_EyeColorMaterialPropertyBlock = new MaterialPropertyBlock(); m_EyeColorMaterialPropertyBlock.SetColor("_EmissionColor", defaultEyeColor); m_EyeRendererData.renderer.SetPropertyBlock(m_EyeColorMaterialPropertyBlock, m_EyeRendererData.materialIndex); } }
public async Task <ActorUpdateOutput> UptadeActor(ActorUptadeInput Parameters) { return(await ActorsManager.UptadeActor(Parameters)); }
public async Task <List <Actors> > GetActors(GetActorInput Parameters) { return(await ActorsManager.GetActors(Parameters)); }
public void ReleaseActiveSpell(ActorController entityType, ActorSpell actorSpell) { switch (actorSpell.ActorSpellName) { case ActorSpellName.MortarAttack: { List <GameObject> enemies = entityType.SeekAndGetEnemiesInDistance(120); if (enemies != null && enemies.Count != 0) { Damage motarAttackDamage = new Damage(); motarAttackDamage.DamageValue = 21; motarAttackDamage.ShowCrit = true; enemies.ForEach( enemy => { GameObject maEffect = (GameObject)Object.Instantiate(Resources.Load("GameScene/ActorSkillEffect")); maEffect.transform.parent = enemy.transform; maEffect.transform.localPosition = new Vector3(0, 0, 0); tk2dSpriteAnimator animator = maEffect.GetComponent <tk2dSpriteAnimator>(); animator.Play("Bombard"); animator.AnimationCompleted = delegate { if (enemy != null) { ActorController actorCtrl = enemy.GetComponent <ActorController>(); entityType.SendDamage(actorCtrl, motarAttackDamage); Object.Destroy(maEffect); } }; }); } break; } case ActorSpellName.ArcaneExplosion: { List <GameObject> enemies = entityType.SeekAndGetEnemiesInDistance(120); if (enemies != null && enemies.Count != 0) { Damage motarAttackDamage = new Damage(); motarAttackDamage.DamageValue = 27; motarAttackDamage.ShowCrit = true; enemies.ForEach( enemy => { GameObject aeEffect = (GameObject)Object.Instantiate(Resources.Load("GameScene/ActorSkillEffect")); aeEffect.transform.parent = enemy.transform; aeEffect.transform.localPosition = new Vector3(0, 0, 0); tk2dSpriteAnimator animator = aeEffect.GetComponent <tk2dSpriteAnimator>(); animator.Play("ArcaneExplosion"); animator.AnimationCompleted = delegate { if (enemy != null) { ActorController actorCtrl = enemy.GetComponent <ActorController>(); entityType.SendDamage(actorCtrl, motarAttackDamage); Object.Destroy(aeEffect); } }; }); } break; } case ActorSpellName.HolyLight: { List <GameObject> myActors = ActorsManager.GetInstance().GetActorsOfFaction(entityType.MyActor.FactionType); if (myActors != null && myActors.Count != 0) { GameObject targetActor = myActors[Random.Range(0, myActors.Count)]; Damage zapDamage = new Damage(); zapDamage.DamageValue = -300; zapDamage.ShowCrit = true; GameObject hlEffect = (GameObject)Object.Instantiate(Resources.Load("GameScene/ActorSkillEffect")); hlEffect.transform.parent = targetActor.transform; hlEffect.transform.localPosition = new Vector3(11, 38, 0); tk2dSpriteAnimator animator = hlEffect.GetComponent <tk2dSpriteAnimator>(); animator.Play("HolyLight"); animator.AnimationCompleted = delegate { if (targetActor != null) { ActorController actorCtrl = targetActor.GetComponent <ActorController>(); entityType.SendDamage(targetActor.GetComponent <ActorController>(), zapDamage); Object.Destroy(hlEffect); } }; } break; } case ActorSpellName.ShamanBless: { List <GameObject> myActors = ActorsManager.GetInstance().GetActorsOfFaction(entityType.MyActor.FactionType); if (myActors != null && myActors.Count != 0) { GameObject targetActor = myActors[Random.Range(0, myActors.Count)]; ActorController actorCtrl = targetActor.GetComponent <ActorController>(); actorCtrl.IsShamanBlessing = true; } break; } case ActorSpellName.Ensnare: { List <GameObject> airForceActors = ActorsManager.GetInstance().GetEnemyAirForceActorsOfFactionInDistance(entityType, 70); if (airForceActors != null && airForceActors.Count != 0) { GameObject targetActor = airForceActors[Random.Range(0, airForceActors.Count)]; ActorController actorCtrl = targetActor.GetComponent <ActorController>(); GameObject ensnareEffectA = (GameObject)Object.Instantiate(Resources.Load("GameScene/ActorSkillEffect")); ensnareEffectA.transform.localPosition = entityType.myTransform.position; float scale = Vector3.Distance(entityType.myTransform.position, targetActor.transform.position) / 60f; ensnareEffectA.transform.localScale = new Vector3(scale, 1f, 1f); tk2dSpriteAnimator animator = ensnareEffectA.GetComponent <tk2dSpriteAnimator>(); animator.Play("EnsnareA"); animator.AnimationCompleted = delegate { Object.Destroy(ensnareEffectA.gameObject); }; actorCtrl.IsCaught = true; } break; } case ActorSpellName.GodBless: { List <GameObject> myActors = ActorsManager.GetInstance() .GetFriendlyActorsInDistance( entityType.MyActor.FactionType, entityType.myTransform.position, actorSpell.AttackRange); if (myActors != null && myActors.Count != 0) { myActors.ForEach( actor => { ActorController actorCtrl = actor.GetComponent <ActorController>(); actorCtrl.MyActor.ActorArmor.ArmorAmount += actorSpell.IncreaseFriendlyForcesArmor; }); } break; } } }