//===============================================================================================[] public IDraftScenario WriteScenario(IEnumerable <IStoryAction> storyActions) { var draftScenario = new DraftScenario(); storyActions.ForEach(WriteScenarioLine, draftScenario); return(draftScenario); }
//-------------------------------------------------------------------------------------[] private void SetBothRoleAccord( DraftScenario draftScenario, IStoryAction action) { SetActiveRoleAccord(draftScenario, action.ActiveActor); SetPassiveRoleAccord(draftScenario, action.PassiveActor); }
//-------------------------------------------------------------------------------------[] private void WriteActiveFighterScenarioLine( IStoryAction action, DraftScenario draftScenario) { if (!action.ActiveActor.HasValue()) { return; } SetActiveRoleAccord(draftScenario, action.ActiveActor); SetLastCodeAsBase(draftScenario); var piece = string.Empty; if (action.ActiveColor == _blueAuraColor) { piece = GetChooseCharBlueScenario(); } if (action.ActiveColor == _redAuraColor) { piece = GetChooseCharRedScenario(); } if (!string.IsNullOrEmpty(piece)) { AddPiece(draftScenario, piece); } }
//-------------------------------------------------------------------------------------[] private void AddAttackPiece( DraftScenario draftScenario, IStoryAction action, string piece) { AddPiece(draftScenario, ConvertAttackScenario(action, piece)); }
//-------------------------------------------------------------------------------------[] private void AddAttackChargePieceForBlue( DraftScenario draftScenario, IStoryAction action, string piece) { AddPiece(draftScenario, ConvertAttackChargeScenarioForBlue(action, piece)); }
//-------------------------------------------------------------------------------------[] private void WritePowerUpCastingScenarioLine( IStoryAction action, DraftScenario draftScenario) { SetBothRoleAccord(draftScenario, action); SetLastCodeAsBase(draftScenario); var attackView = GetAttackView(action); if (action.EquipmentType == Constants.Spells.Lightning) { AddAttackPiece(draftScenario, action, GetAttackRedPowerUpPiece(action)); AddAttackBluePiece(draftScenario, action, attackView); } else { switch (attackView) { case AttackView.Death: case AttackView.Fatality: AddAttackPiece(draftScenario, action, GetAttackBlueDeathScenario(action)); break; default: AddAttackPiece(draftScenario, action, GetAttackBlueLiveScenario(action)); break; } } }
//===============================================================================================[] #endregion #region ScenarioLines //===============================================================================================[] private void WriteAttackScenarioLine( IStoryAction action, DraftScenario draftScenario) { SetBothRoleAccord(draftScenario, action); SetLastCodeAsBase(draftScenario); var attackView = GetAttackView(action); switch (attackView) { case AttackView.Self: { AddAttackPiece(draftScenario, action, GetAttackSelfScenario(action)); break; } case AttackView.Fatality: { AddAttackFatalityRedPiece(draftScenario, action); AddAttackBluePiece(draftScenario, action, attackView); break; } default: { AddAttackRedPiece(draftScenario, action); AddAttackBluePiece(draftScenario, action, attackView); break; } } }
//-------------------------------------------------------------------------------------[] private void AddPiece( DraftScenario draft, string piece) { ResetOldNewCodesDict(); var textlines = SplitLines(piece); textlines.ForEach(AddScenarioLineToDraft, draft); }
//-------------------------------------------------------------------------------------[] private void AddAttackRedPiece( DraftScenario draftScenario, IStoryAction action) { var scenario = GetAttackRedScenario(action); var piece = ConvertHexesToFly(action, scenario); AddAttackPiece(draftScenario, action, piece); }
//-------------------------------------------------------------------------------------[] private void WriteNewActorScenarioLine( IStoryAction action, DraftScenario draftScenario) { SetActiveRoleAccord(draftScenario, action.ActiveActor); SetLastCodeAsBase(draftScenario); var piece = GetNewActorScenario(); AddPiece(draftScenario, piece); }
//-------------------------------------------------------------------------------------[] private void WriteTurningScenarioLine( IStoryAction action, DraftScenario draftScenario) { SetActiveRoleAccord(draftScenario, action.ActiveActor); SetLastCodeAsBase(draftScenario); var piece = ConvertTurningScenario(action, GetTurnScenario()); AddPiece(draftScenario, piece); }
//===============================================================================================[] #endregion //-------------------------------------------------------------------------------------[] private void WriteScenarioLine( DraftScenario draftScenario, IStoryAction action) { if (!IsValidStoryAction(action)) { return; } _writeActions[action.Type](action, draftScenario); }
//-------------------------------------------------------------------------------------[] private void SetLastCodeAsBase(DraftScenario draft) { var lastCode = draft.GetLastCode(); if (lastCode != Constants.BaseRecordCode) { lastCode += ".end"; } _baseCodeAlias = lastCode; }
//-------------------------------------------------------------------------------------[] private void WriteAttackChargeScenarioLine( IStoryAction action, DraftScenario draftScenario) { SetBothRoleAccord(draftScenario, action); SetLastCodeAsBase(draftScenario); var attackView = GetAttackView(action); AddAttackChargePieceForRed(draftScenario, action, GetAttackChargeRedScenario(action)); AddAttackChargeBluePiece(draftScenario, action, attackView); }
//-------------------------------------------------------------------------------------[] private string GetNewCode( DraftScenario draft, string line) { var oldCode = ParseCode(line); if (oldCode == Constants.BaseRecordCode) { return(Constants.ParsingError); } var newCode = GenerateNewCode(draft); _oldNewCodesAccord[oldCode] = newCode; return(newCode); }
//-------------------------------------------------------------------------------------[] private void AddScenarioLineToDraft( DraftScenario draft, string line) { var code = GetNewCode(draft, line); var role = GetRoleWithAction(line); var newBaseCode = GetNewBaseCode(line); if (IsParsingFailed(code, role, newBaseCode)) { return; } draft.AddPreparedScenarioLine(code, newBaseCode, role); }
//-------------------------------------------------------------------------------------[] private void AddAttackChargeBluePiece( DraftScenario draftScenario, IStoryAction action, AttackView attackView) { switch (attackView) { case AttackView.Live: AddAttackChargePieceForBlue(draftScenario, action, GetAttackChargeBlueLiveScenario(action)); break; case AttackView.Death: AddAttackChargePieceForBlue(draftScenario, action, GetAttackChargeBlueDeathScenario(action)); break; case AttackView.Fatality: AddAttackChargePieceForBlue(draftScenario, action, GetAttackChargeBlueDeathScenario(action)); break; case AttackView.Block: AddAttackChargePieceForBlue(draftScenario, action, GetAttackChargeBlueMissScenario(action)); break; } }
//-------------------------------------------------------------------------------------[] private void AddAttackBluePiece( DraftScenario draftScenario, IStoryAction action, AttackView attackView) { switch (attackView) { case AttackView.Live: { var scenario = GetAttackBlueLiveScenario(action); var piece = ConvertHexesToFly(action, scenario); AddAttackPiece(draftScenario, action, piece); } break; case AttackView.Death: { var scenario = GetAttackBlueDeathScenario(action); var piece = ConvertHexesToFly(action, scenario); AddAttackPiece(draftScenario, action, piece); } break; case AttackView.Block: { var scenario = GetAttackBlueMissScenario(action); var piece = ConvertHexesToFly(action, scenario); AddAttackPiece(draftScenario, action, piece); } break; case AttackView.Fatality: { var scenario = GetAttackBlueFatalityScenario(action); var piece = ConvertHexesToFly(action, scenario); AddAttackPiece(draftScenario, action, piece); } break; } }
//-------------------------------------------------------------------------------------[] private static string GenerateNewCode(DraftScenario draft) { return("C" + draft.ScenarioLinesCount); }
//-------------------------------------------------------------------------------------[] private void SetPassiveRoleAccord( DraftScenario draftScenario, ActorId actor) { _rolesAccord[Roles.Passive] = draftScenario.GetActorRole(actor); }