Example #1
0
        private BundleController CreateController()
        {
            var request = new Mock <HttpRequestBase>();
            var _httpContextBaseMock = new Mock <HttpContextBase>();

            _httpContextBaseMock.SetupGet(x => x.Request).Returns(request.Object);

            var controller = new BundleController(() => _isInEditMode, _catalogEntryViewModelFactoryMock.Object);

            controller.ControllerContext = new ControllerContext(_httpContextBaseMock.Object, new RouteData(), controller);

            return(controller);
        }
		public void Run()
		{
			Engine.Initialize(nameof(Controller_Bundle), 640, 480, new EngineOption());

			var keyboard = new KeyboardController<MyAction>();    // KeyboardControllerクラスを作成
			keyboard.BindKey(Keys.Right, MyAction.Advance);       // 方向キーの右を"Advance"アクションに対応付け
			keyboard.BindKey(Keys.Left, MyAction.Back);           // 方向キーの左を"Back"アクションに対応付け
			keyboard.BindKey(Keys.Z, MyAction.Jump);              // Zキーを		"Jump"アクションに対応付け
			keyboard.BindKey(Keys.X, MyAction.Attack);            // Xキーを		"Attack"アクションに対応付け

			var joystick = new JoystickController<MyAction>(0);				// JoystickControllerクラスを作成
			joystick.BindAxis(0, AxisDirection.Positive, MyAction.Advance);	// 左スティックの右方向への入力を"Advance"アクションに対応付け
			joystick.BindAxis(0, AxisDirection.Negative, MyAction.Back);    // 左スティックの左方向への入力を"Back"アクションに対応付け
			joystick.BindButton(0, MyAction.Jump);                          // ボタン1の入力を"Jump"アクションに対応付け
			joystick.BindButton(1, MyAction.Attack);                        // ボタン2の入力を"Attack"アクションに対応付け

			// 用意したKeyboardControllerとJoystickControllerの入力を合体させた新しいコントローラーを作成
			var bundle = new BundleController<MyAction>(keyboard, joystick);

			//ボタンを押したときに表示するオブジェクトたちを作成
			var font = Engine.Graphics.CreateDynamicFont("", 24, new Color(255, 255, 255, 255), 0, new Color());

			var advanceText = new TextObject2D();
			advanceText.Position = new Vector2DF(0, 0);
			advanceText.Text = "Advance";
			advanceText.Font = font;
			Engine.AddObject2D(advanceText);

			var backText = new TextObject2D();
			backText.Position = new Vector2DF(0, 30);
			backText.Text = "Back";
			backText.Font = font;
			Engine.AddObject2D(backText);

			var jumpText = new TextObject2D();
			jumpText.Position = new Vector2DF(0, 60);
			jumpText.Text = "Jump";
			jumpText.Font = font;
			Engine.AddObject2D(jumpText);

			var attackText = new TextObject2D();
			attackText.Position = new Vector2DF(0, 90);
			attackText.Text = "Attack!";
			attackText.Font = font;
			Engine.AddObject2D(attackText);

			// メインループ
			while(Engine.DoEvents())
			{
				// "Advance"アクションに対応付けられたキーが押されているとき、"Advance"と表示する。以下もほぼ同じ
				// 合体して作ったBundleControllerのGetStateを呼び出せば、登録したコントローラーの入力を統合した結果が得られる
				advanceText.IsDrawn = bundle.GetState(MyAction.Advance) == InputState.Hold;
				backText.IsDrawn = bundle.GetState(MyAction.Back) == InputState.Hold;
				jumpText.IsDrawn = bundle.GetState(MyAction.Jump) == InputState.Hold;
				attackText.IsDrawn = bundle.GetState(MyAction.Attack) == InputState.Hold;

				bundle.Update();	// コントローラーの処理を進める
				Engine.Update();
				Recorder.TakeScreenShot(nameof(Controller_Bundle), 60);
			}

			Engine.Terminate();
		}
        private async Task MinifyAssets(string pageName)
        {
            string        role           = UsersRoles;
            SettingHelper settingHelper  = new SettingHelper(_cache);
            string        fileName       = role.Replace(" ", "_") + "_" + pageName;
            string        headerCSS      = "css_" + fileName;
            string        headerJS       = "jsHeader_" + fileName;
            string        footerJS       = "jsFooter_" + fileName;
            string        rootPath       = _env.WebRootPath;
            string        cssLink        = string.Empty;
            string        jsScriptHeader = string.Empty;
            string        jsScriptFooter = string.Empty;
            bool          optimizeAssets = settingHelper.GetCachedSettingBoolValue(SettingKeys.OptimizeAssets);

            if (optimizeAssets)
            {
                string           optimizecssFilePath   = ShorternPath(Path.Combine(FolderName.Optimize, headerCSS + cssExtension));
                string           optimizeJsTopFilePath = ShorternPath(Path.Combine(FolderName.Optimize, headerJS + jsExtension));
                string           optimizeJsFilePath    = ShorternPath(Path.Combine(FolderName.Optimize, footerJS + jsExtension));
                BundleController bundleController      = new BundleController();
                if (File.Exists(Path.Combine(_env.WebRootPath, optimizecssFilePath)))
                {
                    AssetCollection assetCollection = await bundleController.GetAssetCollection(pageName, role);

                    cssLink        = assetCollection.CssLink;
                    jsScriptHeader = assetCollection.JSHeaderLink;
                    jsScriptFooter = assetCollection.JSFooterLink;
                }
                else
                {
                    if (excessMode == ExcessModes.local)
                    {
                        DeleteFile(optimizecssFilePath);
                        DeleteFile(optimizeJsTopFilePath);
                        DeleteFile(optimizeJsFilePath);
                    }
                    if (!Directory.Exists(Path.Combine(rootPath, FolderName.Optimize)))
                    {
                        Directory.CreateDirectory(Path.Combine(rootPath, FolderName.Optimize));
                    }
                    AssetResult assetResult = await GetFileList(pageName, role);

                    Task <bool> bundlejsTop       = BundleAsset(optimizeJsTopFilePath, assetResult.JSHeader, AssetType.Js);
                    Task <bool> bundlejsFooterTop = BundleAsset(optimizeJsFilePath, assetResult.JSFooter, AssetType.Js);
                    Task <bool> bundleCss         = BundleAsset(optimizecssFilePath, assetResult.CSS, AssetType.Css);
                    await Task.WhenAll(bundlejsTop, bundlejsFooterTop, bundleCss);

                    jsScriptHeader  = assetResult.JsHeaderCDN;
                    jsScriptHeader += string.Format("<script  src='{0}'></script>", _hostURL + "/" + optimizeJsTopFilePath.Replace("\\", "/"));
                    jsScriptFooter  = assetResult.JsFooterTopCDN;
                    jsScriptFooter += string.Format("<script  src='{0}'></script>", _hostURL + "/" + optimizeJsFilePath.Replace("\\", "/"));
                    jsScriptFooter += assetResult.JsFooterBottomCDN;
                    cssLink         = assetResult.CssCDN;
                    cssLink        += string.Format("<link href='{0}' rel='stylesheet' type='text/css' />", _hostURL + "/" + optimizecssFilePath.Replace("\\", "/"));

                    AssetCollection assetCollection = new AssetCollection()
                    {
                        PageName     = pageName,
                        RoleName     = role,
                        CssLink      = cssLink,
                        JSHeaderLink = jsScriptHeader,
                        JSFooterLink = jsScriptFooter,
                        Name         = string.Empty
                    };
                    await bundleController.SaveAssetCollection(assetCollection);
                }
            }
            else
            {
                AssetResult assetCollection = await GetFileList(pageName, role);

                jsScriptHeader = assetCollection.JsHeaderCDN + CombineLinks(assetCollection.JSHeader, AssetType.Js);
                jsScriptFooter = assetCollection.JsFooterTopCDN + CombineLinks(assetCollection.JSFooter, AssetType.Js) + assetCollection.JsFooterBottomCDN;
                cssLink        = assetCollection.CssCDN + CombineLinks(assetCollection.CSS, AssetType.Css);
            }
            TempData["cssHeader"] = cssLink;
            TempData["jsHeader"]  = jsScriptHeader;
            TempData["jsFooter"]  = jsScriptFooter;
        }
Example #4
0
 public BundleControllerUnitTest(ITestOutputHelper output)
 {
     _controller = new BundleController();
     this.output = output;
 }