示例#1
0
        // _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
        //     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));
        }
示例#3
0
        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();
        }
示例#4
0
        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);
            }
        }
示例#5
0
        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();
        }
示例#6
0
        // _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
        //     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());
 }