// _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ // Constructor // _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ public TilePathSettingFactoryChangePathPermissionHelper(TilePathPermission pathPermission, ITilePathSetting src, TileImpassableFlags impassableFlags, TileCannotPassingFlags cannotPassingFlags) { this.pathPermission = pathPermission; this.src = src; this.impassableFlags = impassableFlags; this.cannotPassingFlags = cannotPassingFlags; }
// _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ // Protected Override Method // _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ /// <inheritdoc/> protected override bool ChildEquals(ITilePathSetting other) { if (other is null) { return(false); } if (!(other is TilePathSettingPartialDeny casted)) { return(false); } return(Equals(casted)); }
private static ITilePathSetting Create_ImpassableToImpassable(TilePathPermission pathPermission, ITilePathSetting src, TileImpassableFlags impassableFlags) { if (pathPermission == TilePathPermission.PartialDeny) { return(new TilePathSettingPartialDeny(impassableFlags ?? src.ImpassableFlags) { PathOption = src.PathOption, IsCounter = src.IsCounter }); } throw new InvalidOperationException(); }
public static void CreateTest2(int testCode, string description) { var(pathPermission, src, isError, resultType, resultFlagsCode) = MakeCreateTest2Args(testCode); ITilePathSetting result = null; var errorOccured = false; try { result = TilePathSettingFactory.Create(pathPermission, src); } catch (Exception ex) { logger.Exception(ex); errorOccured = true; } // エラーフラグが一致すること Assert.AreEqual(errorOccured, isError); if (errorOccured) { return; } // 結果が意図した値であること Assert.AreEqual(result.GetType(), resultType); if (result.GetType() != typeof(TilePathSettingPartialDeny) && result.GetType() != typeof(TilePathSettingDeny)) { // CannotPassingFlags が意図した値であること Assert.AreEqual(result.CannotPassingFlags.ToCode(), resultFlagsCode); } if (result.GetType() == typeof(TilePathSettingPartialDeny)) { // ImpassableFlags が意図した値であること Assert.AreEqual(result.ImpassableFlags.ToCode(), resultFlagsCode); } }
private static ITilePathSetting Create_ToDifference(TilePathPermission pathPermission, ITilePathSetting src) { if (pathPermission == TilePathPermission.Allow) { return(new TilePathSettingAllow { PathOption = src.PathOption, IsCounter = src.IsCounter }); } if (pathPermission == TilePathPermission.Dependent) { return(new TilePathSettingDependent { PathOption = src.PathOption, IsCounter = src.IsCounter }); } if (pathPermission == TilePathPermission.Deny) { return(new TilePathSettingDeny { PathOption = src.PathOption, IsCounter = src.IsCounter }); } if (pathPermission == TilePathPermission.PartialDeny) { return(new TilePathSettingPartialDeny { PathOption = src.PathOption, IsCounter = src.IsCounter }); } throw new InvalidOperationException(); }
// _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ // Private Static Method // _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ private static ITilePathSetting Create_CannotPassingToCannotPassing(TilePathPermission pathPermission, ITilePathSetting src, TileCannotPassingFlags cannotPassingFlags) { if (pathPermission == TilePathPermission.Allow) { return(new TilePathSettingAllow(cannotPassingFlags ?? src.CannotPassingFlags) { PathOption = src.PathOption, IsCounter = src.IsCounter }); } if (pathPermission == TilePathPermission.Dependent) { return(new TilePathSettingDependent(cannotPassingFlags ?? src.CannotPassingFlags) { PathOption = src.PathOption, IsCounter = src.IsCounter }); } throw new InvalidOperationException(); }
/// <summary> /// 通行設定を変更したインスタンスを生成する。 /// </summary> /// <param name="pathPermission">[NotNull] 通行設定</param> /// <param name="src">[NotNull] 元データ</param> /// <param name="impassableFlags">[Nullable] 通行許可設定</param> /// <param name="cannotPassingFlags">[Nullable] 通行方向設定</param> /// <returns>変更後のインスタンス</returns> public static ITilePathSetting Create(TilePathPermission pathPermission, ITilePathSetting src, TileImpassableFlags impassableFlags = null, TileCannotPassingFlags cannotPassingFlags = null) { return(new TilePathSettingFactoryChangePathPermissionHelper(pathPermission, src, impassableFlags, cannotPassingFlags).Execute()); }