public void MonsterDataReflect(IMonsterData monsterData, IMonsterData enemyMonsterData) { //技をTextに反映 for (int i = 0; i < commandParts_.GetCommandWindowTextsCount(); ++i) { commandParts_.CommandWindowChoiceTextChange(i, " " + t13.Utility.StringFullSpaceBackTamp(monsterData.GetSkillDatas(i).skillName_, 7)); } //文字の色の変更 //for (int i = 0; i < commandParts_.GetCommandWindowTextsCount(); ++i) { // int simillarResult = enemyMonsterData.ElementSimillarCheckerForValue(monsterData.GetSkillDatas(i).elementType_); // // if (simillarResult == 0) commandParts_.GetCommandWindowTexts(i).color = new Color32(195, 195, 195, 255); // else if (simillarResult == 1) commandParts_.GetCommandWindowTexts(i).color = new Color32(52, 130, 207, 255); // else if (simillarResult == 2) commandParts_.GetCommandWindowTexts(i).color = new Color32(50, 50, 50, 255); // else if (simillarResult == 3) commandParts_.GetCommandWindowTexts(i).color = new Color32(207, 52, 112, 255); //} //for (int i = 0; i < commandParts_.GetCommandWindowTextsCount(); ++i) { // commandParts_.CommandWindowChoiceColorChange(i, monsterData.GetSkillDatas(i).elementType_.GetColor()); //} //技のフレームの変更 for (int i = 0; i < skillFrameSprites_.Count; ++i) { skillFrameSprites_[i].sprite = monsterData.GetSkillDatas(i).elementType_.GetSkillFrameSprite(); } }
public void MonsterDataReflect(IMonsterData referMonsterData) { string elementInfoString = ""; if (referMonsterData.tribesData_.firstElement_.state_ != ElementType.None) { elementInfoString += referMonsterData.tribesData_.firstElement_.GetName(); } if (referMonsterData.tribesData_.secondElement_.state_ != ElementType.None) { elementInfoString += " /" + referMonsterData.tribesData_.secondElement_.GetName(); } monsterTypeInfoText_.text = "タイプ " + elementInfoString; monsterParameterBarsParts_[0].ParameterReflect(referMonsterData.RealHitPoint()); monsterParameterBarsParts_[1].ParameterReflect(referMonsterData.RealAttack()); monsterParameterBarsParts_[2].ParameterReflect(referMonsterData.RealDefense()); monsterParameterBarsParts_[3].ParameterReflect(referMonsterData.RealSpeed()); //モンスターの画像の反映 if (referMonsterData.battleData_.HaveAbnormalType(AbnormalType.Hero)) { monsterSprite_.sprite = referMonsterData.tribesData_.frontDreamTex_; } else { monsterSprite_.sprite = referMonsterData.tribesData_.frontTex_; } }
public void MonsterSwap(int changeNumber, int baseNumber) { IMonsterData temp = monsterDatas_[baseNumber]; monsterDatas_[baseNumber] = monsterDatas_[changeNumber]; monsterDatas_[changeNumber] = temp; }
//Sleep static private string SleepAddAbnormalTypeExecute(AddAbnormalTypeState mine, IMonsterData monsterData) { if (monsterData.battleData_.firstAbnormalState_.state_ == AbnormalType.Hero) { return(monsterData.uniqueName_ + "には\n" + "きかないようだ・・・"); } if (monsterData.battleData_.firstAbnormalState_.state_ == AbnormalType.None) { monsterData.battleData_.firstAbnormalState_.state_ = AbnormalType.Sleep; } else if (monsterData.battleData_.secondAbnormalState_.state_ == AbnormalType.None && monsterData.battleData_.firstAbnormalState_.state_ != AbnormalType.Sleep) { monsterData.battleData_.secondAbnormalState_.state_ = AbnormalType.Sleep; } else { return(monsterData.uniqueName_ + "には\n" + "きかないようだ・・・"); } return(monsterData.uniqueName_ + "は\n" + "ねむりに おちた!"); }
//HitRate static private string HitRateAddParameterExecute(AddParameterRankState mine, IMonsterData monsterData) { monsterData.battleData_.HitRateParameterRankAdd(mine.addParameterRank_); return(monsterData.uniqueName_ + "の\n" + "めいちゅうりつが " + RankStringGenerate(mine.addParameterRank_)); }
public void DoesMatchCombo_ReturnsAsExpected(List <int> i_comboAttempt, bool i_expectedMatch) { IMonsterData mockMonsterData = Substitute.For <IMonsterData>(); mockMonsterData.GetAttackCombo().Returns(new List <int>() { 1, 2, 3 }); List <IGamePiece> comboAttempt = new List <IGamePiece>(); if (i_comboAttempt != null) { foreach (int pieceType in i_comboAttempt) { IGamePiece mockPiece = Substitute.For <IGamePiece>(); mockPiece.PieceType.Returns(pieceType); comboAttempt.Add(mockPiece); } } GameMonster systemUnderTest = new GameMonster(mockMonsterData); bool doesMatch = systemUnderTest.DoesMatchCombo(comboAttempt); Assert.AreEqual(i_expectedMatch, doesMatch); }
public void WhenCreating_StatsSetToDataValues() { List <int> mockAttackCombo = new List <int>() { 1, 2, 3 }; IMonsterData mockData = Substitute.For <IMonsterData>(); mockData.GetDefense().Returns(10); mockData.GetDefenseType().Returns(2); mockData.GetAttackRate().Returns(1500); mockData.GetDamage().Returns(1000); mockData.GetDamageType().Returns(30); mockData.GetAttackCombo().Returns(mockAttackCombo); mockData.GetId().Returns("Blob"); GameMonster systemUnderTest = new GameMonster(mockData); Assert.AreEqual(10, systemUnderTest.Defense); Assert.AreEqual(2, systemUnderTest.DefenseType); Assert.AreEqual(1500, systemUnderTest.AttackRate); Assert.AreEqual(1000, systemUnderTest.AttackPower); Assert.AreEqual(30, systemUnderTest.AttackType); Assert.AreEqual(mockAttackCombo, systemUnderTest.AttackCombo); Assert.AreEqual("Blob", systemUnderTest.Id); }
//Defense static private string DefenseAddParameterExecute(AddParameterRankState mine, IMonsterData monsterData) { monsterData.battleData_.DefenseParameterRankAdd(mine.addParameterRank_); return(monsterData.uniqueName_ + "の\n" + "ぼうぎょが " + RankStringGenerate(mine.addParameterRank_)); }
//Speed static private string SpeedAddParameterExecute(AddParameterRankState mine, IMonsterData monsterData) { monsterData.battleData_.SpeedParameterRankAdd(mine.addParameterRank_); return(monsterData.uniqueName_ + "の\n" + "すばやさが " + RankStringGenerate(mine.addParameterRank_)); }
public void MonsterStatusInfoSetEventSet(IMonsterData monsterData) { //名前をTextに反映 string monsterViewName = t13.Utility.StringFullSpaceBackTamp(monsterData.uniqueName_, 6); AllEventManager.GetInstance().EventTextSet(baseParts_.GetInfoNameEventText(), monsterViewName); AllEventManager.GetInstance().EventTextsUpdateExecuteSet(EventTextEventManagerExecute.CharaUpdate); AllEventManager.GetInstance().AllUpdateEventExecute(); //HPをTextに反映 //HPゲージの調整 float hpGaugeFillAmount = t13.Utility.ValueForPercentage(monsterData.RealHitPoint(), monsterData.nowHitPoint_, 1); AllEventManager.GetInstance().HpGaugePartsSet(frameParts_.GetHpGaugeParts(), hpGaugeFillAmount, monsterData); AllEventManager.GetInstance().HpGaugePartsUpdateExecuteSet(HpGaugePartsEventManagerExecute.GaugeUpdate); AllEventManager.GetInstance().AllUpdateEventExecute(); //状態異常の反映 monsterData.battleData_.AbnormalSetStatusInfoPartsEventSet(this); //タイプの反映 firstElementInfoParts_.ElementReflectEventSet(monsterData.tribesData_.firstElement_); secondElementInfoParts_.ElementReflectEventSet(monsterData.tribesData_.secondElement_); }
//Hero static private string HeroAddAbnormalTypeExecute(AddAbnormalTypeState mine, IMonsterData monsterData) { monsterData.battleData_.firstAbnormalState_.state_ = AbnormalType.Hero; monsterData.battleData_.secondAbnormalState_.state_ = AbnormalType.None; return(monsterData.uniqueName_ + "は\n" + "ゆめで みたされた!"); }
//None static private string NoneAddParameterExecute(AddParameterRankState mine, IMonsterData monsterData) { string rankString = ""; rankString = "ーー"; return(rankString); }
public void ProcessStateGaugeUpdateExecute(float timeRegulation, t13.TimeFluctProcess timeFluctProcess, IMonsterData referMonsterData, float endFillAmount) { timeRegulation_ = timeRegulation; referMonsterData_ = referMonsterData; endFillAmount_ = endFillAmount; timeFluct_.GetProcessState().state_ = timeFluctProcess; processState_.state_ = HpGaugePartsProcess.GaugeUpdate; }
/// <summary> ///メイン計算式 /// </summary> static public int BattleDamageCalculate(IMonsterData attackMonster, IMonsterData defenseMonster, ISkillData attackSkill) { //乱数の値 float[] randomValue = new float[16] { 0.85f, 0.86f, 0.87f, 0.88f, 0.89f, 0.90f, 0.91f, 0.92f, 0.93f, 0.94f, 0.95f, 0.96f, 0.97f, 0.98f, 0.99f, 1.00f, }; //乱数 float randomResult = randomValue[AllSceneManager.GetInstance().GetRandom().Next(0, 16)]; //モンスターのタイプと技のタイプの一致か否か float typeMatch = 1; if (attackMonster.tribesData_.firstElement_.state_ == attackSkill.elementType_.state_ || attackMonster.tribesData_.secondElement_.state_ == attackSkill.elementType_.state_) { typeMatch = 1.5f; } //敵モンスターと技のタイプ相性 float typeSimillar = defenseMonster.ElementSimillarChecker(attackSkill.elementType_); //補正値の初期値 4096 //技の最終威力 int realSkillPower = (int)(attackSkill.effectValue_ * (4096 / 4096)); //物理か特殊か //EffectAttackTypeState ea = attackSkill.effectValueType_.GetEffectAttackTypeState(); //モンスターの最終攻撃力 int realMonsterAttack = 0; { //if (ea.state_ == EffectAttackType.Normal) { // realMonsterAttack = (int)(attackMonster.RealAttack() * attackMonster.battleData_.RealAttackParameterRank() * (4096 / 4096)); //} realMonsterAttack = (int)(attackMonster.RealAttack() * attackMonster.battleData_.RealAttackParameterRank() * (4096 / 4096)); } //敵モンスターの最終防御力 int realMonsterDefense = 0; { //if (ea.state_ == EffectAttackType.Normal) { // realMonsterDefense = (int)(defenseMonster.RealDefense() * defenseMonster.battleData_.RealDefenseParameterRank() * (4096 / 4096)); //} realMonsterDefense = (int)(defenseMonster.RealDefense() * defenseMonster.battleData_.RealDefenseParameterRank() * (4096 / 4096)); } //(((レベル×2/5+2)×威力×A/D)/50+2) //最終ダメージ int realDamage = (int)((((attackMonster.level_ * 2 / 5 + 2) * realSkillPower * realMonsterAttack / realMonsterDefense) / 50) * randomResult * typeMatch * typeSimillar); return(realDamage); }
public void WhenCreating_RemainingHP_EqualsMaxHP() { IMonsterData mockData = Substitute.For <IMonsterData>(); mockData.GetMaxHP().Returns(101); GameMonster systemUnderTest = new GameMonster(mockData); Assert.AreEqual(101, systemUnderTest.RemainingHP); }
public void MonsterAdd(IMonsterData addMonster) { if (haveMonsterSize_ == MONSTER_MAX_SIZE) { return; } monsterDatas_[haveMonsterSize_] = addMonster; haveMonsterSize_ += 1; }
private void SetStats(IMonsterData i_data) { RemainingHP = i_data.GetMaxHP(); Defense = i_data.GetDefense(); DefenseType = i_data.GetDefenseType(); AttackPower = i_data.GetDamage(); AttackType = i_data.GetDamageType(); AttackRate = i_data.GetAttackRate(); AttackCombo = i_data.GetAttackCombo(); Id = i_data.GetId(); }
public override void MonsterAdd(IMonsterData addMonster) { if (haveMonsterSize_ == MONSTER_MAX_SIZE) { return; } monsterDatas_[haveMonsterSize_] = addMonster; haveMonsterSize_ += 1; battleActiveMonsterSize_ += 1; }
public void AfterTick_AttackCycleResetsToZero_WhenTickEqualsRate() { IMonsterData mockMonsterData = Substitute.For <IMonsterData>(); mockMonsterData.GetAttackRate().Returns(1000); GameMonster systemUnderTest = new GameMonster(mockMonsterData); systemUnderTest.Tick(1000); Assert.AreEqual(0, systemUnderTest.AttackCycle); }
public void AfterTick_IfLappingCycle_ValueIsAsExpected() { IMonsterData mockMonsterData = Substitute.For <IMonsterData>(); mockMonsterData.GetAttackRate().Returns(1000); GameMonster systemUnderTest = new GameMonster(mockMonsterData); systemUnderTest.Tick(2254); Assert.AreEqual(254, systemUnderTest.AttackCycle); }
public void GetAttackProgress_ReturnsAsExpected(long i_curAttackCycle, long i_attackRate, float i_expected) { IMonsterData mockMonsterData = Substitute.For <IMonsterData>(); mockMonsterData.GetAttackRate().Returns(i_attackRate); GameMonster systemUnderTest = new GameMonster(mockMonsterData); systemUnderTest.Tick(i_curAttackCycle); Assert.AreEqual(i_expected, systemUnderTest.GetAttackProgress()); }
public void AfterTick_IfLappingCycle_CorrectNumberOfAttacksSent(long i_tick, int i_expectedAttacks) { IMonsterData mockMonsterData = Substitute.For <IMonsterData>(); mockMonsterData.GetAttackRate().Returns(1000); GameMonster systemUnderTest = new GameMonster(mockMonsterData); systemUnderTest.Tick(i_tick); MyMessenger.Instance.Received(i_expectedAttacks).Send <IGameMonster>(GameMessages.MONSTER_ATTACK, systemUnderTest); }
public void NegativeTicks_DoNotChangeAttackCycle() { IMonsterData mockMonsterData = Substitute.For <IMonsterData>(); mockMonsterData.GetAttackRate().Returns(1000); GameMonster systemUnderTest = new GameMonster(mockMonsterData); systemUnderTest.Tick(-1000); Assert.AreEqual(0, systemUnderTest.AttackCycle); }
public void AfterTick_WhenAttackIsNotCycled_ValueIsAsExpected() { IMonsterData mockMonsterData = Substitute.For <IMonsterData>(); mockMonsterData.GetAttackRate().Returns(1000); GameMonster systemUnderTest = new GameMonster(mockMonsterData); systemUnderTest.Tick(100); Assert.AreEqual(100, systemUnderTest.AttackCycle); }
/// <summary> ///乱数平均、急所なし、計算式 /// </summary> static public int TestDamageCalculate(IMonsterData attackMonster, IMonsterData defenseMonster, ISkillData attackSkill) { //乱数 float randomResult = 9.5f; //モンスターのタイプと技のタイプの一致か否か float typeMatch = 1; if (attackMonster.tribesData_.firstElement_.state_ == attackSkill.elementType_.state_ || attackMonster.tribesData_.secondElement_.state_ == attackSkill.elementType_.state_) { typeMatch = 1.5f; } //敵モンスターと技のタイプ相性 float typeSimillar = defenseMonster.ElementSimillarChecker(attackSkill.elementType_); //補正値の初期値 4096 //技の最終威力 int realSkillPower = (int)(attackSkill.effectValue_ * (4096 / 4096)); //物理か特殊か //EffectAttackTypeState ea = attackSkill.effectValueType_.GetEffectAttackTypeState(); //モンスターの最終攻撃力 int realMonsterAttack = 0; { //if (ea.state_ == EffectAttackType.Normal) { // realMonsterAttack = (int)(attackMonster.RealAttack() * attackMonster.battleData_.RealAttackParameterRank() * (4096 / 4096)); //} realMonsterAttack = (int)(attackMonster.RealAttack() * attackMonster.battleData_.RealAttackParameterRank() * (4096 / 4096)); } //敵モンスターの最終防御力 int realMonsterDefense = 0; { //if (ea.state_ == EffectAttackType.Normal) { // realMonsterDefense = (int)(defenseMonster.RealDefense() * defenseMonster.battleData_.RealDefenseParameterRank() * (4096 / 4096)); //} realMonsterDefense = (int)(defenseMonster.RealDefense() * defenseMonster.battleData_.RealDefenseParameterRank() * (4096 / 4096)); } //(((レベル×2/5+2)×威力×A/D)/50+2) //最終ダメージ int realDamage = (int)((((attackMonster.level_ * 2 / 5 + 2) * realSkillPower * realMonsterAttack / realMonsterDefense) / 50) * randomResult * typeMatch * typeSimillar); return(realDamage); }
private void SetMonsters() { Monsters = new List <IMonsterWaveData>(); if (Data.GetMonsters() != null) { for (int i = 0; i < mData.GetNumWaves(); ++i) { IMonsterWaveData wave = new MonsterWaveData(); foreach (string monsterId in Data.GetMonsters()) { IMonsterData monsterData = mMonsterDataManager.GetData(monsterId); IGameMonster monster = new GameMonster(monsterData); wave.AddMonster(monster); } Monsters.Add(wave); } } }
public void WhenAttackedByPlayer_ExpectedDamageRemovedFromRemainingHP(int i_playerAttackPower, int i_monsterDefense, int i_expectedDamage) { IGamePlayer mockPlayer = Substitute.For <IGamePlayer>(); mockPlayer.GetAttackPowerForType(Arg.Any <int>()).Returns(i_playerAttackPower); IMonsterData mockMonsterData = Substitute.For <IMonsterData>(); mockMonsterData.GetMaxHP().Returns(100); mockMonsterData.GetDefense().Returns(i_monsterDefense); GameMonster systemUnderTest = new GameMonster(mockMonsterData); systemUnderTest.AttackedByPlayer(mockPlayer); int expectedHP = 100 - i_expectedDamage; Assert.AreEqual(expectedHP, systemUnderTest.RemainingHP); }
public void MonsterStatusInfoSet(IMonsterData monsterData) { //名前をTextに反映 string monsterViewName = t13.Utility.StringFullSpaceBackTamp(monsterData.uniqueName_, 6); baseParts_.GetInfoNameEventText().GetText().text = monsterViewName; //HPをTextに反映 //HPゲージの調整 float hpGaugeFillAmount = t13.Utility.ValueForPercentage(monsterData.RealHitPoint(), monsterData.nowHitPoint_, 1); frameParts_.GetHpGaugeParts().ProcessStateGaugeUpdateExecute(0, t13.TimeFluctProcess.Liner, monsterData, hpGaugeFillAmount); //状態異常の反映 monsterData.battleData_.AbnormalSetStatusInfoParts(this); //タイプの反映 firstElementInfoParts_.ElementReflect(monsterData.tribesData_.firstElement_); secondElementInfoParts_.ElementReflect(monsterData.tribesData_.secondElement_); }
public BeastController(IMonsterData monsterData) { _monsterData = monsterData; }
public void HpGaugePartsSet(HpGaugeParts hpGaugeParts, IMonsterData monsterData, float endFillAmount) { hpGaugesParts_.Add(hpGaugeParts); referMonsterDatas_.Add(monsterData); endFillAmounts_.Add(endFillAmount); }