private void StartFight() { PlayerResources playerResources = Global.Instance.Player.Resources; MissionData md = MissionsConfig.Instance.GetPlanet(EPlanetKey.PlanetA).GetMission(EMissionKey.PlanetA_Test1); if (playerResources.Fuel < md.FuelWinCost || playerResources.Fuel < md.FuelLoseCost || playerResources.Credits < md.CreditsWinCost || playerResources.Credits < md.CreditsLoseCost || playerResources.Minerals < md.MineralsWinCost || playerResources.Minerals < md.MineralsLoseCost) { Debug.LogWarning("Not enough resources"); return; } BaseSoldier[] soldiers = new BaseSoldier[_hiredUnits.Count]; for (int i = 0; i < soldiers.Length; i++) { soldiers[i] = new BaseSoldier(UnitsConfig.Instance.GetSoldierData(_hiredUnits[i]), Global.Instance.Player.City.GetSoldierUpgradesInfo(_hiredUnits[i]).Level); } Global.Instance.CurrentMission.PlanetKey = EPlanetKey.PlanetA; Global.Instance.CurrentMission.MissionKey = EMissionKey.PlanetA_Test1; Global.Instance.CurrentMission.SelectedSoldiers = new ArrayRO <BaseSoldier>(soldiers); FightManager.Setup(EFightMode.Campaign, MissionsConfig.Instance.GetPlanet(Global.Instance.CurrentMission.PlanetKey).GetMission(Global.Instance.CurrentMission.MissionKey)); Application.LoadLevel("Fight"); }
public Vector2[] GetPathTo(Vector3 startPosition, Vector3 endPosition, BaseSoldier unit, out int cost) { Node n = GoTo(startPosition, endPosition, unit); cost = n.GetTotalCost(); bool foundTarget = n.Position == endPosition; if (!foundTarget) return null; List<Node> nodes = new List<Node>(); Node node = n; // Starts at the target and backtrace through parents back to beginning. while (node != null) { nodes.Add(node); node = node.Parent; } // Construct a path where each entry is one move in some direction. Vector2[] path = new Vector2[nodes.Count-1]; int counter = 0; for (int i = nodes.Count-1; i > 0; i--) { path[counter] = nodes[i-1].Position - nodes[i].Position; // The direction is the difference in . counter++; } return path; }
//- 进入该状态时调用的函数 // // @param args 附加的调用信息 // @return none public override void onEnter(Fix64 args) { BaseSoldier soldier = (BaseSoldier)m_unit.lockedAttackUnit; GameData.g_bulletManager.createBullet(m_unit, soldier, m_unit.m_fixv3LogicPosition, soldier.m_fixv3LogicPosition); m_unit.changeState("cooling", m_unit.attackSpeed); }
public void SaveHiredSoldiers() { List <BaseSoldier> soldiers = new List <BaseSoldier>(); for (int i = 0; i < UnitSlotsRO.Length; i++) { if (UnitSlotsRO[i] != null) { BaseSoldierData soldierData = UnitSlotsRO[i].UnitData; if (soldierData != null) { BaseSoldier soldier = new BaseSoldier(soldierData, Global.Instance.Player.City.GetSoldierUpgradesInfo(soldierData.Key).Level); soldier.TemplatePlace = UnitSlotsRO[i].Place; soldiers.Add(soldier); } } } Global.Instance.CurrentMission.SelectedSoldiers = new ArrayRO <BaseSoldier>(soldiers.ToArray()); UnitSlot[] slotTemplate = new UnitSlot[soldiers.Count]; for (int i = 0; i < slotTemplate.Count(); i++) { slotTemplate[i] = new UnitSlot(soldiers[i].TemplatePlace, soldiers[i].Data.Key); } Global.Instance.Player.Heroes.Current.Data.SlotTemplate = new ArrayRO <UnitSlot>(slotTemplate); }
private void AddNode(Vector3 position, Vector3 target, Node parent, BaseSoldier unit) { int address = GridAux.PositionToId(position); #if (FOUNDATION_DEBUG_PATHFINDER) Log.Debug("PathFinder", "address={0}, position={1}", address, position); #endif if (!_closedSet.Contains(address)) { BaseTile t = _gridTiles.TryGetTile(position); if (t != null && unit.CanWalkPast(t)) { int cost = (parent == null ? 0 : parent.Cost) + t.GetCost(unit); int heuristic = GetManhattanDistance(position, target); #if (FOUNDATION_DEBUG_PATHFINDER) Log.Debug("PathFinder", "adding node. (position={0}, heuristic={1}, cost={2})", position, heuristic, cost); #endif _priorityQueue.Enqueue(new Node(position, parent, cost, heuristic)); } else { Close(position); } } }
private void CreateSoldier(GameObject bingObj) { m_soldier = Instantiate(bingObj, this.transform.position, Quaternion.identity, this.transform).GetComponent <BaseSoldier>(); if (m_soldier != null) { m_soldier.Init(m_nowDirection); } }
public override void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { Debug.Log("OnStateExit"); BaseSoldier baseSoldier = animator.gameObject.GetComponent <BaseSoldier>(); baseSoldier.BattleAgent.BaseSprite.ToggleState(StateId.Idle); }
public void Solider_WhenCreatedWithDefaults_ShouldHaveRankOfPrivate() { // Arrange var sut = new BaseSoldier(); // Act var soldierRank = sut.Rank; Console.WriteLine($"Basic Soldier Rank: {soldierRank}"); // Assert Assert.That(soldierRank, Is.EqualTo(Rank.Private)); }
public BattleAgent(BaseSoldier baseSoldier, Character character) { this.BaseSoldier = baseSoldier; this.gameObject = baseSoldier.gameObject; this.BaseSprite = baseSoldier.gameObject.AddComponent<BaseSprite> (); this.Character = character; this.baseSoldier.AddSoundDemo (); //AddTimer (); AddEventListeners (); }
public BattleAgent(BaseSoldier baseSoldier, Character character) { this.BaseSoldier = baseSoldier; this.gameObject = baseSoldier.gameObject; this.BaseSprite = baseSoldier.gameObject.AddComponent <BaseSprite> (); this.Character = character; this.baseSoldier.AddSoundDemo(); //AddTimer (); AddEventListeners(); }
public void Solider_WhenCreatedWithDefaults_ShouldHaveSoldierTypeOfBasicSoldier() { // Arrange var sut = new BaseSoldier(); // Act var soldierType = sut.SoldierType; Console.WriteLine($"Basic Soldier Type: {soldierType}"); // Assert Assert.That(soldierType, Is.EqualTo(SoldierType.BasicSoldier)); }
public void Solider_WhenCreatedWithDefaults_ShouldHaveClassificationOfNone() { // Arrange var sut = new BaseSoldier(); // Act var classification = sut.Classification; Console.WriteLine($"Basic Soldier Classification: {classification}"); // Assert Assert.That(classification, Is.EqualTo(Class.None)); }
public void Solider_WhenCreatedWithDefaults_ShouldHaveBaseAttackOfTwo() { // Arrange var sut = new BaseSoldier(); // Act var attackStrength = sut.SoldierStats.AttackStrength; Console.WriteLine($"Basic Soldier AttackStrength: {attackStrength}"); // Assert Assert.That(attackStrength, Is.EqualTo(2)); }
/// <summary> /// Adds the enemy. /// </summary> void AddEnemy() { GameObject parent = StageManager.SharedInstance.NpcLayer; // Vector2[] pos = new Vector2[] { // new Vector2 (4, 4), // new Vector2 (5, 9), // new Vector2 (9, 3), // new Vector2 (8, 9) // }; for (int i = 0; i < enemyPos.Length - 1; i++) { GameObject hfPrefab = ResourceManager.GetInstance.LoadPrefab(TestData.charDB [11].Prefab); GameObject hf = StageManager.SharedInstance.AddToStage(parent, hfPrefab); hf.name = "hf" + i; BaseSoldier hfSoldier = hf.AddComponent <HFSoldier> (); BattleAgent agent = new BattleAgent(hfSoldier, TestData.charDB [11]); agent.BaseSprite.FaceTo = FaceTo.Right; //agent.BaseSprite.SetLocalPosition (pos [i].x, pos [i].y); agent.BaseSprite.SetMapPosition(enemyPos [i].x, enemyPos [i].y); enemyList.Add(agent); agentDict.Add(hf.name, agent); } //boss GameObject prefab = ResourceManager.GetInstance.LoadPrefab(TestData.charDB [17].Prefab); GameObject am = StageManager.SharedInstance.AddToStage(parent, prefab); am.name = "am"; BaseSoldier amSoldier = am.AddComponent <AMSoldier> (); Character c = TestData.charDB [17]; c.Speed = 3.0f; BattleAgent amAgent = new BattleAgent(amSoldier, c); amAgent.Character.HitPoint = new Vector3(0, 100, 100); //agent.BaseSprite.SetLocalPosition (pos [i].x, pos [i].y); amAgent.BaseSprite.SetMapPosition(enemyPos [2].x, enemyPos [2].y); enemyList.Add(amAgent); agentDict.Add(am.name, amAgent); }
public void Solider_WhenCreatedWithDefaults_ShouldHaveSorceryStrengthOfZero() { // Arrange var sut = new BaseSoldier(); // Act sut.AssignStatModifiers(); var soldierSorcery = sut.SoldierStats.SorceryStrength; Console.WriteLine($"Basic Soldier Sorcery: {soldierSorcery}"); // Assert Assert.That(soldierSorcery, Is.EqualTo(0)); }
public void Solider_WhenCreatedWithDefaults_ShouldHaveAttackStrengthOfTwo() { // Arrange var sut = new BaseSoldier(); // Act sut.AssignStatModifiers(); var soldierAttack = sut.SoldierStats.AttackStrength; Console.WriteLine($"Basic Soldier Attack: {soldierAttack}"); // Assert Assert.That(soldierAttack, Is.EqualTo(2)); }
public void Solider_WhenCreatedWithDefaults_ShouldHaveBaseMagicResistanceOfThree() { // Arrange var sut = new BaseSoldier(); // Act sut.AssignStatModifiers(); var soldierMagicResistance = sut.SoldierStats.MagicResistance; Console.WriteLine($"Basic Soldier Magic Resistance: {soldierMagicResistance}"); // Assert Assert.That(soldierMagicResistance, Is.EqualTo(0)); }
public void Solider_WhenCreatedWithDefaults_ShouldHaveBaseArmorOfZero() { // Arrange var sut = new BaseSoldier(); // Act sut.AssignStatModifiers(); var soldierArmor = sut.SoldierStats.ArmorResistance; Console.WriteLine($"Basic Soldier Armor Rating: {soldierArmor}"); // Assert Assert.That(soldierArmor, Is.EqualTo(0)); }
public virtual void Relese() { if (m_soldier != null) { BaseSoldier bing = m_soldier.GetComponent <BaseSoldier>(); if (m_soldier != null) { bing.Release(); } Destroy(m_soldier); m_soldier = null; } m_isOn = false; }
void AddHero2() { GameObject parent = StageManager.SharedInstance.HeroLayer; GameObject odPrefab = ResourceManager.GetInstance.LoadPrefab(TestData.charDB [12].Prefab); GameObject od = StageManager.SharedInstance.AddToStage(parent, odPrefab); BaseSoldier odSoldier = od.AddComponent <ODSoldier> (); BattleAgent agent = new BattleAgent(odSoldier, TestData.charDB [12]); agent.BaseSprite.SetMapPosition(10, 15); //agent.BaseSprite.SetLocalPosition (260, -245); agent.BaseSprite.AddDownEffect(); soldierList.Add(agent); enemyList [0].AddTarget(soldierList [0]); soldierList [0].AddTarget(enemyList [0]); }
public void Recruit(Mobile from, BaseCreature soldier) { if (!Soldiers.Contains(soldier)) { if (soldier is BaseSoldier) { BaseSoldier recruit = soldier as BaseSoldier; if (from == recruit.GetOwner()) { //if (Soldiers.Count + 1 <= CalculateMaxFollowers(from)) //{ Soldiers.Add(soldier); //soldier.ChangeAIType(AIType.AI_Army); ((BaseCreature)soldier).AI = AIType.AI_Army; //soldier.Controlled = false; //soldier.ControlMaster = null; from.SendMessage("Another Recruit has joined the Army.", recruit.Title); SetFormation(ArmyFormationEnum.Latest); SetDirection(m_ArmyDirection); //} //else /*TEMP*/ //soldier.Say("You have {0} soldiers already, and can only have {1}!", ArmySize, CalculateMaxFollowers(from)); //soldier.Say("Your army is bigger then your head!"); } else { soldier.Say("You need to hire me first!"); } } else { soldier.Say("I am not for hire!"); } } else { soldier.Say("Sir, I am already in the Army!"); } //TargetRecruit(from); }
public void SaveHiredSoldiers() { List<BaseSoldier> soldiers = new List<BaseSoldier>(); for (int i = 0; i < UnitSlotsRO.Length; i++) { if (UnitSlotsRO[i] != null) { BaseSoldierData soldierData = UnitSlotsRO[i].UnitData; if (soldierData != null) { BaseSoldier soldier = new BaseSoldier(soldierData, Global.Instance.Player.City.GetSoldierUpgradesInfo(soldierData.Key).Level); soldier.TemplatePlace = UnitSlotsRO[i].Place; soldiers.Add(soldier); } } } Global.Instance.CurrentMission.SelectedSoldiers = new ArrayRO<BaseSoldier>(soldiers.ToArray()); UnitSlot[] slotTemplate = new UnitSlot[soldiers.Count]; for (int i = 0; i < slotTemplate.Count(); i++) slotTemplate[i] = new UnitSlot(soldiers[i].TemplatePlace, soldiers[i].Data.Key); Global.Instance.Player.Heroes.Current.Data.SlotTemplate = new ArrayRO<UnitSlot>(slotTemplate); }
private void StartFight() { PlayerResources playerResources = Global.Instance.Player.Resources; MissionData md = MissionsConfig.Instance.GetPlanet(EPlanetKey.PlanetA).GetMission(EMissionKey.PlanetA_Test1); if (playerResources.Fuel < md.FuelWinCost || playerResources.Fuel < md.FuelLoseCost || playerResources.Credits < md.CreditsWinCost || playerResources.Credits < md.CreditsLoseCost || playerResources.Minerals < md.MineralsWinCost || playerResources.Minerals < md.MineralsLoseCost) { Debug.LogWarning("Not enough resources"); return; } BaseSoldier[] soldiers = new BaseSoldier[_hiredUnits.Count]; for (int i = 0; i < soldiers.Length; i++) { soldiers[i] = new BaseSoldier(UnitsConfig.Instance.GetSoldierData(_hiredUnits[i]), Global.Instance.Player.City.GetSoldierUpgradesInfo(_hiredUnits[i]).Level); } Global.Instance.CurrentMission.PlanetKey = EPlanetKey.PlanetA; Global.Instance.CurrentMission.MissionKey = EMissionKey.PlanetA_Test1; Global.Instance.CurrentMission.SelectedSoldiers = new ArrayRO<BaseSoldier>(soldiers); FightManager.Setup(EFightMode.Campaign, MissionsConfig.Instance.GetPlanet(Global.Instance.CurrentMission.PlanetKey).GetMission(Global.Instance.CurrentMission.MissionKey)); Application.LoadLevel("Fight"); }
private void Expand(Node parent, ref Vector3 target, BaseSoldier unit) { #if (FOUNDATION_DEBUG_PATHFINDER) Log.Debug("PathFinder", "Expand node at position={0}", parent.Position); #endif bool okToAdd = Close(parent); if (!okToAdd) return; for (int i = 0; i < 4; ++i) { Vector3 position = parent.Position + DIRECTIONS[i]; AddNode(position, target, parent, unit); } }
IEnumerator AddOD() { yield return(new WaitForSeconds(0.2f)); //奥丁 GameObject parent = StageManager.SharedInstance.HeroLayer; GameObject odPrefab = ResourceManager.GetInstance.LoadPrefab(TestData.charDB [12].Prefab); GameObject od = StageManager.SharedInstance.AddToStage(parent, odPrefab); od.name = "od"; BaseSoldier odSoldier = od.AddComponent <ODSoldier> (); BattleAgent odAgent = new BattleAgent(odSoldier, TestData.charDB [12]); odAgent.BaseSprite.SetMapPosition(soldierPos [0].x, soldierPos [0].y); odAgent.BaseSprite.AddDownEffect(); soldierList.Add(odAgent); agentDict.Add(od.name, odAgent); AudioManager.SharedInstance.PlayOneShot("fly", 1.0f); yield return(new WaitForSeconds(0.2f)); //绿萼 // GameObject lePrefab = ResourceManager.GetInstance.LoadPrefab (TestData.charDB [13].Prefab); // GameObject le = StageManager.SharedInstance.AddToStage (parent, lePrefab); // le.name = "le"; // BaseSoldier leSoldier = le.AddComponent<LESoldier> (); // BattleAgent leAgent = new BattleAgent (leSoldier, TestData.charDB [13]); // leAgent.BaseSprite.SetMapPosition (soldierPos [1].x, soldierPos [1].y); // // leAgent.BaseSprite.AddDownEffect (); // soldierList.Add (leAgent); // agentDict.Add (le.name, leAgent); // AudioManager.SharedInstance.PlayOneShot ("fly", 1.0f); // yield return new WaitForSeconds (0.2f); //慕雪 GameObject mxPrefab = ResourceManager.GetInstance.LoadPrefab(TestData.charDB [14].Prefab); GameObject mx = StageManager.SharedInstance.AddToStage(parent, mxPrefab); mx.name = "mx"; BaseSoldier mxSoldier = mx.AddComponent <MXSoldier> (); BattleAgent mxAgent = new BattleAgent(mxSoldier, TestData.charDB [14]); mxAgent.BaseSprite.SetMapPosition(soldierPos [1].x, soldierPos [1].y); mxAgent.BaseSprite.AddDownEffect(); soldierList.Add(mxAgent); agentDict.Add(mx.name, mxAgent); AudioManager.SharedInstance.PlayOneShot("fly", 1.0f); yield return(new WaitForSeconds(0.2f)); //寒梦 GameObject hmPrefab = ResourceManager.GetInstance.LoadPrefab(TestData.charDB [15].Prefab); GameObject hm = StageManager.SharedInstance.AddToStage(parent, hmPrefab); hm.name = "hm"; BaseSoldier hmSoldier = hm.AddComponent <HMSoldier> (); BattleAgent hmAgent = new BattleAgent(hmSoldier, TestData.charDB [15]); hmAgent.BaseSprite.SetMapPosition(soldierPos [2].x, soldierPos [2].y); hmAgent.BaseSprite.AddDownEffect(); soldierList.Add(hmAgent); agentDict.Add(hm.name, hmAgent); AudioManager.SharedInstance.PlayOneShot("fly", 1.0f); yield return(new WaitForSeconds(0.3f)); //蓉蓉 // GameObject rrPrefab = ResourceManager.GetInstance.LoadPrefab (TestData.charDB [16].Prefab); // GameObject rr = StageManager.SharedInstance.AddToStage (parent, rrPrefab); // rr.name = "rr"; // BaseSoldier rrSoldier = rr.AddComponent<RRSoldier> (); // BattleAgent rrAgent = new BattleAgent (rrSoldier, TestData.charDB [16]); // // rrAgent.BaseSprite.SetMapPosition (soldierPos [4].x, soldierPos [4].y); // rrAgent.BaseSprite.AddDownEffect (); // soldierList.Add (rrAgent); // agentDict.Add (rr.name, rrAgent); // AudioManager.SharedInstance.PlayOneShot ("fly", 1.0f); // FindTargetForHero (odAgent); // soldierList [0].AddTarget (enemyList [0]); // soldierList [1].AddTarget (enemyList [0]); // soldierList [2].AddTarget (enemyList [0]); // soldierList [3].AddTarget (enemyList [0]); // soldierList [4].AddTarget (enemyList [0]); //enemyList [0].AddTarget (rrAgent); //enemyList [0].AddTarget (odAgent); enemyList [0].AddTarget(odAgent); enemyList [1].AddTarget(mxAgent); enemyList [2].AddTarget(hmAgent); odAgent.AddTarget(enemyList [0]); mxAgent.AddTarget(enemyList [1]); hmAgent.AddTarget(enemyList [2]); //leAgent.AddTarget (enemyList [1]); //rrAgent.AddTarget (enemyList [0]); // hmAgent.IsReady = true; // enemyList [4].IsReady = true; // enemyList[4].IsReady = true; // mxAgent.IsReady = true; // leAgent.IsReady = true; // enemyList[1].IsReady = true; // rrAgent.IsReady = true; // enemyList[0].IsReady = true; // for (int i = 0; i < soldierList.Count; i++) { // soldierList [i].IsReady = true; // } // // for (int i = 0; i < enemyList.Count; i++) { // enemyList [i].IsReady = true; // } }
private Node GoTo(Vector3 start, Vector3 target, BaseSoldier unit) { #if (FOUNDATION_DEBUG_PATHFINDER) Log.Debug("PathFinder", "Go to (start={0}, target={1})", start, target); #endif int h1 = GetManhattanDistance(start, target); _closedSet = new HashSet<int>(); _priorityQueue = new BinaryHeap<Node>(25); _priorityQueue.Enqueue(new Node(start, null, 0, h1)); Node bestGuess = null; int heuristic = int.MaxValue; while (heuristic > 0 && !_priorityQueue.IsEmpty()) { bestGuess = _priorityQueue.Dequeue(); heuristic = bestGuess.Heuristic; #if (FOUNDATION_DEBUG_PATHFINDER) Log.Debug("PathFinder", "heruistic={0}, best total cost={1}", heuristic, bestGuess.GetTotalCost()); #endif if (heuristic == 0) break; Expand(bestGuess, ref target, unit); #if (FOUNDATION_DEBUG_PATHFINDER) Log.Debug("PathFinder", "queue empty={0}", _priorityQueue.IsEmpty()); #endif } _closedSet.Clear(); _priorityQueue.Clear(); return bestGuess; }
public int GetCostTo(Vector3 startPosition, Vector3 endPosition, BaseSoldier unit) { Node n = GoTo(startPosition, endPosition, unit); int cost = n.GetTotalCost(); return cost; }