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; }
public BundleControllerUnitTest(ITestOutputHelper output) { _controller = new BundleController(); this.output = output; }