void IModuleManagerBase.Save(string regionName, out string logicalState, out string visualState) { if (!allowSaveRestoreLayout) { logicalState = null; visualState = null; return; } var regionsToSerialize = string.IsNullOrEmpty(regionName) ? new List <IRegionImplementation>(regions) : new List <IRegionImplementation>(new[] { GetRegion(regionName) }); LogicalInfo logicalInfo = new LogicalInfo(); VisualInfo visualInfo = new VisualInfo(); foreach (var region in regionsToSerialize) { RegionInfo logicalRegionInfo; RegionVisualInfo visualRegionInfo; region.GetInfo(out logicalRegionInfo, out visualRegionInfo); if (logicalRegionInfo != null) { logicalInfo.Regions.Add(logicalRegionInfo); } if (visualRegionInfo != null) { visualInfo.Regions.Add(visualRegionInfo); } } logicalState = LogicalInfo.Serialize(logicalInfo); visualState = VisualInfo.Serialize(visualInfo); }
public override Object next() { VisualInfo visual_info = new VisualInfo(this, 0); inc(8); return(visual_info); }
public override IEnumerator AttackAnim() { Transform shotArrow = Instantiate(arrow, this.transform.position, Quaternion.identity).transform; List <Vector3> bezierNodes = new List <Vector3>() { this.transform.position, 0.5f * (this.transform.position + InputManager.playerGridCell.transform.position) + new Vector3(0, arrowBezHeight, 0), InputManager.playerGridCell.transform.position }; float progress = 0; while (Vector3.Magnitude(shotArrow.position - InputManager.playerGridCell.transform.position) >= 0.01f) { progress += Time.deltaTime * arrowFlySpeed * (HexMetrics.innerRadius / (Vector3.Magnitude(this.transform.position - InputManager.playerGridCell.transform.position))); Vector3 nextPos = VisualInfo.GetBezierCurvePoint(bezierNodes, progress); shotArrow.position = nextPos; if (Vector3.SqrMagnitude(shotArrow.position - InputManager.playerGridCell.transform.position) <= 0.01f) { shotArrow.position = InputManager.playerGridCell.transform.position; Destroy(shotArrow.gameObject); EnemyManager.TryEndEnemyPhase(); yield return(true); break; } else { InputManager.AllowInput = false; } yield return(null); } yield return(null); }
public override Object next() { // blackdown JDK 1.1.8 fails to compile the following line VisualInfo vi = new VisualInfo(owner.display, this, this.offset); inc(16); return(vi); }
public async Task <FileResult> Get([FromRoute] int siteId, [FromQuery] GetRequest request) { try { return(await GetResponseMessageAsync(await VisualInfo.GetInstanceAsync(_pathManager, _databaseManager, siteId, 0, 0, 0, request.PageIndex))); } catch (Exception ex) { HttpContext.Response.Redirect(_pathManager.GetAdminUrl(ErrorController.Route) + "/?message=" + HttpUtility.UrlPathEncode(ex.Message)); } return(null); }
/// <summary> /// Setting Random grid /// </summary> private void SetRandomGrid() { for (int i = 0; i < currentGridSizeX; i++) { for (int j = 0; j < currentGridSizeY; j++) { previousGenGrid[i, j] = new VisualInfo(); previousGenGrid[i, j].currentState = (e_StateType)UnityEngine.Random.Range(0, 2); previousGenGrid[i, j].visual = GameObject.Instantiate(prefabToUse, new Vector3(i, j, 1f), Quaternion.identity); previousGenGrid[i, j].visual.transform.SetParent(gridParent.transform); previousGenGrid[i, j].visual.transform.localScale = new Vector3(0.8f, 0.8f, 0.8f); previousGenGrid[i, j].SetColor(); } } }
public void SerializeEmpty2() { string logicalState = null; string visualState = null; LogicalInfo logicalInfo = null; VisualInfo visualInfo = null; Manager.Register("R", new Module("1", () => new object())); Manager.Save(out logicalState, out visualState); logicalInfo = LogicalInfo.Deserialize(logicalState); visualInfo = VisualInfo.Deserialize(visualState); Assert.AreEqual(0, logicalInfo.Regions.Count()); Assert.AreEqual(0, visualInfo.Regions.Count()); }
IEnumerator PlayerJump(GridCell gridCellToJumpTo) { Debug.Log("Jump"); AllowInput = false; jumpCoolDownLeft = jumpCoolDown + 1; playerGridCell.Walkable = true; playerGridCell.entity = null; playerGridCell = gridCellToJumpTo; playerGridCell.entity = this.transform; gridGen.ResetDijkstra(playerGridCell.arrayCoords.x, playerGridCell.arrayCoords.y, GridGen.grid[stage % 2].heightMap, GridGen.grid[stage % 2].gridCells); Vector3 startScale = player.transform.localScale; float progress = 0; List <Vector3> bezierNodes = new List <Vector3>() { this.transform.position, 0.5f * (this.transform.position + InputManager.playerGridCell.transform.position) + new Vector3(0, playerJumpHeight, 0), InputManager.playerGridCell.transform.position }; for (int i = 0; i < 6; i++) { if (playerGridCell.cellNeighbours[i] != null) { playerGridCell.cellNeighbours[i].ForcePush(i); //kfuy } } while (Vector3.SqrMagnitude(player.transform.position - playerGridCell.transform.position) >= 0.01f) { progress += Time.deltaTime * playerMoveSpeed * 0.1f * (HexMetrics.innerRadius / (Vector3.Magnitude(this.transform.position - InputManager.playerGridCell.transform.position))); Vector3 nextPos = VisualInfo.GetBezierCurvePoint(bezierNodes, progress); player.transform.position = nextPos; player.transform.localScale = Vector3.Lerp(startScale, startScale * playerJumpScale, 1 - Mathf.Abs(2 * progress - 1)); if (progress >= 1) { player.transform.localScale = startScale; player.transform.position = playerGridCell.transform.position; PlayerIsMoving = false; EndPlayerTurn(); yield return(true); } else { PlayerIsMoving = true; } yield return(null); } }
public HttpResponseMessage GetFile(int siteId, int fileTemplateId) { try { var pageIndex = TranslateUtils.ToInt(HttpContext.Current.Request.QueryString["pageIndex"]); var response = GetResponseMessage(VisualInfo.GetInstance(siteId, 0, 0, fileTemplateId, pageIndex, 0)); return(response ?? Request.CreateResponse(HttpStatusCode.NotFound)); } catch (Exception ex) { LogUtils.AddErrorLogAndRedirect(ex); } return(Request.CreateResponse(HttpStatusCode.NotFound)); }
//load information public bool Load(string _file) { if (0 == _file.Length) { return(false); } //create a reader and opne the file StreamReader ifs = new StreamReader(Application.dataPath + "/Resources/" + _file); //temporary string for reading values string line; string[] lineParse; char[] delims = { '\n', '\r', '-', '\t' }; //read the first line : ID line = ifs.ReadLine(); //parse until EOF while (line != null) { //line data : ID lineParse = line.Split(delims); //confirm the size if (4 == lineParse.Length) { VisualInfo visualData = new VisualInfo(); CardIdentifier cardID = new CardIdentifier(lineParse[0], lineParse[2], lineParse[1]); string spritePath = SpriteFolderPath + cardID.FactionID + "/" + cardID.UniqueID; string animatorPath = AnimationControllerFolderPath + cardID.FactionID + "/" + cardID.UniqueID + "_0"; //load visual information if (visualData.Load(spritePath, animatorPath)) { //add into database spriteDatabase.AddEntry(cardID.ID, ref visualData); } } //read the next line line = ifs.ReadLine(); } ifs.Close(); return(true); }
public HttpResponseMessage GetChannel(int siteId, int channelId) { try { var pageIndex = TranslateUtils.ToInt(HttpContext.Current.Request.QueryString["pageIndex"]); var response = GetResponseMessage(VisualInfo.GetInstance(siteId, channelId, 0, 0, pageIndex, 0)); return(response ?? Request.CreateResponse(HttpStatusCode.NotFound)); } catch (Exception ex) { var logId = LogUtils.AddSystemErrorLog(ex); PageUtils.RedirectToErrorPage(logId); } return(Request.CreateResponse(HttpStatusCode.NotFound)); }
public void SerializeEmpty() { string logicalState = null; string visualState = null; LogicalInfo logicalInfo = null; VisualInfo visualInfo = null; Manager.Save(out logicalState, out visualState); logicalInfo = LogicalInfo.Deserialize(logicalState); visualInfo = VisualInfo.Deserialize(visualState); Assert.AreEqual(0, logicalInfo.Regions.Count()); Assert.AreEqual(0, visualInfo.Regions.Count()); Manager.Restore(null, null); Manager.Restore(string.Empty, string.Empty); Manager.Restore(logicalState, visualState); }
public CellInfo GetCellInfo(string DataPropertyName, VisualInfo VisualInfo) { switch (DataPropertyName) { case "Name": return(new CellInfo(Path.GetFileName(path), null)); case "Path": return(new CellInfo(path, null)); case "Attributes": return(new CellInfo(new FileInfo(path).Attributes.ToString(), null)); default: return(new CellInfo(string.Empty, null)); } }
private HttpResponseMessage GetResponseMessage(VisualInfo visualInfo) { if (visualInfo.SiteInfo == null || visualInfo.TemplateInfo == null) { return(null); } var siteInfo = visualInfo.SiteInfo; var templateInfo = visualInfo.TemplateInfo; var pageInfo = new PageInfo(visualInfo.ChannelId, visualInfo.ContentId, siteInfo, templateInfo, new Dictionary <string, object>()) { IsLocal = true }; var contextInfo = new ContextInfo(pageInfo) { ContextType = visualInfo.ContextType }; var contentBuilder = new StringBuilder(TemplateManager.GetTemplateContent(siteInfo, templateInfo)); if (templateInfo.CreatedFileExtName == ".shtml") { //<!-- #include virtual="{Stl.SiteUrl}/include/head.html" --> var content = Regex.Replace(contentBuilder.ToString(), @"<!-- #include virtual=""([^""]+)"" -->", @"<stl:include file=""$1""></stl:include>"); contentBuilder = new StringBuilder(content); } HttpResponseMessage message = null; if (templateInfo.TemplateType == TemplateType.FileTemplate) //单页 { message = GetFileTemplate(visualInfo, pageInfo, contextInfo, contentBuilder, siteInfo); } else if (templateInfo.TemplateType == TemplateType.IndexPageTemplate || templateInfo.TemplateType == TemplateType.ChannelTemplate) //栏目页面 { message = GetChannelTemplate(visualInfo, siteInfo, contentBuilder, pageInfo, contextInfo); } else if (templateInfo.TemplateType == TemplateType.ContentTemplate) //内容页面 { message = GetContentTemplate(visualInfo, contextInfo, contentBuilder, pageInfo, siteInfo); } return(message); }
public bool Summon() { //temporary: set the card information VisualInfo info = spriteDatabase.Get(cardID); if (null == info) { return(false); } fieldCard.SetVisuals(ref info); //turn on field visual items uiCard.SetActive(false); fieldCard.SetActive(true); return(true); }
bool IModuleManagerBase.Restore(string logicalState, string visualState) { if (!allowSaveRestoreLayout) { return(false); } VisualInfo visualInfo = VisualInfo.Deserialize(visualState); LogicalInfo logicalInfo = LogicalInfo.Deserialize(logicalState); var regionsFromLogicalInfo = logicalInfo != null?logicalInfo.Regions.Select(x => x.RegionName) : new string[] { }; var regionsFromVisualInfo = visualInfo != null?visualInfo.Regions.Select(x => x.RegionName) : new string[] { }; var regionNames = regionsFromLogicalInfo.Union(regionsFromVisualInfo); var regions = regionNames.Select(x => GetRegion(x)).ToList(); Func <LogicalInfo, string, RegionInfo> getRegionInfo = (info, regionName) => info != null?info.Regions.FirstOrDefault(x => x.RegionName == regionName) : null; Func <VisualInfo, string, RegionVisualInfo> getRegionVisualInfo = (info, regionName) => info != null?info.Regions.FirstOrDefault(x => x.RegionName == regionName) : null; regions.ForEach(region => { if (region.LogicalSerializationMode == LogicalSerializationMode.Disabled) { return; } if (getRegionInfo(logicalInfo, region.RegionName) != null) { ((IModuleManager)this).Clear(region.RegionName); } }); regions.ForEach(region => region.SetInfo( getRegionInfo(logicalInfo, region.RegionName), getRegionVisualInfo(visualInfo, region.RegionName))); if (logicalInfo != null) { regions.ForEach(x => x.ApplyInfo(true, false)); regions.ForEach(x => x.ApplyInfo(false, true)); } return(logicalInfo != null); }
private async Task <FileResult> GetResponseMessageAsync(VisualInfo visualInfo) { if (visualInfo.Site == null || visualInfo.Template == null) { return(null); } var site = visualInfo.Site; var templateInfo = visualInfo.Template; await _parseManager.InitAsync(EditMode.Preview, site, visualInfo.ChannelId, visualInfo.ContentId, templateInfo); _parseManager.PageInfo.IsLocal = true; _parseManager.ContextInfo.ContextType = visualInfo.ContextType; var contentBuilder = new StringBuilder(await _pathManager.GetTemplateContentAsync(site, templateInfo)); if (templateInfo.CreatedFileExtName == ".shtml") { //<!-- #include virtual="{Stl.SiteUrl}/include/head.html" --> var content = Regex.Replace(contentBuilder.ToString(), @"<!-- #include virtual=""([^""]+)"" -->", @"<stl:include file=""$1""></stl:include>"); contentBuilder = new StringBuilder(content); } FileResult message = null; if (templateInfo.TemplateType == TemplateType.FileTemplate) //单页 { message = await GetFileTemplateAsync(visualInfo, contentBuilder); } else if (templateInfo.TemplateType == TemplateType.IndexPageTemplate || templateInfo.TemplateType == TemplateType.ChannelTemplate) //栏目页面 { message = await GetChannelTemplateAsync(visualInfo, contentBuilder); } else if (templateInfo.TemplateType == TemplateType.ContentTemplate) //内容页面 { message = await GetContentTemplateAsync(visualInfo, contentBuilder); } return(message); }
public void SerializeEmpty3() { string logicalState = null; string visualState = null; LogicalInfo logicalInfo = null; VisualInfo visualInfo = null; Manager.Register("R", new Module("1", () => new object())); Manager.Inject("R", "1"); Manager.Save(out logicalState, out visualState); logicalInfo = LogicalInfo.Deserialize(logicalState); visualInfo = VisualInfo.Deserialize(visualState); Assert.AreEqual(1, logicalInfo.Regions.Count()); Assert.AreEqual(1, visualInfo.Regions.Count()); Assert.AreEqual(0, visualInfo.Regions[0].Items.Count); Assert.AreEqual("R", logicalInfo.Regions[0].RegionName); Assert.AreEqual(null, logicalInfo.Regions[0].SelectedViewModelKey); Assert.AreEqual(0, logicalInfo.Regions[0].Items.Count); }
public void Page_Load(object sender, EventArgs e) { try { var visualInfo = VisualInfo.GetInstance(); var publishmentSystemInfo = PublishmentSystemManager.GetPublishmentSystemInfo(visualInfo.PublishmentSystemID); var templateInfo = TemplateManager.GetTemplateInfo(visualInfo.PublishmentSystemID, visualInfo.ChannelID, visualInfo.TemplateType); if (templateInfo == null) { templateInfo = TemplateManager.GetTemplateInfo(visualInfo.PublishmentSystemID, visualInfo.FileTemplateID); } var pageInfo = new PageInfo(visualInfo.ChannelID, visualInfo.ContentID, publishmentSystemInfo, templateInfo, null); var contextInfo = new ContextInfo(pageInfo); StringBuilder contentBuilder = null; contentBuilder = new StringBuilder(StlCacheManager.FileContent.GetTemplateContent(publishmentSystemInfo, templateInfo)); //需要完善,考虑单页模板、内容正文、翻页及外部链接 if (visualInfo.TemplateType == ETemplateType.IndexPageTemplate) //首页 { WriteResponse(contentBuilder, publishmentSystemInfo, pageInfo, contextInfo, visualInfo); return; } else if (visualInfo.TemplateType == ETemplateType.FileTemplate) //单页 { var fileTemplateInfo = TemplateManager.GetTemplateInfo(visualInfo.PublishmentSystemID, visualInfo.FileTemplateID); var filePageInfo = new PageInfo(visualInfo.ChannelID, visualInfo.ContentID, publishmentSystemInfo, fileTemplateInfo, null); var fileContentBuilder = new StringBuilder(StlCacheManager.FileContent.GetTemplateContent(publishmentSystemInfo, fileTemplateInfo)); WriteResponse(fileContentBuilder, publishmentSystemInfo, filePageInfo, contextInfo, visualInfo); return; } else if (visualInfo.TemplateType == ETemplateType.ChannelTemplate) //栏目页面 { var nodeInfo = NodeManager.GetNodeInfo(visualInfo.PublishmentSystemID, visualInfo.ChannelID); if (nodeInfo == null) { return; } if (nodeInfo.NodeType != ENodeType.BackgroundPublishNode) { if (!string.IsNullOrEmpty(nodeInfo.LinkUrl)) { Response.Redirect(nodeInfo.LinkUrl); return; } } var stlLabelList = StlParserUtility.GetStlLabelList(contentBuilder.ToString()); //如果标签中存在Content var stlContentElement = string.Empty; foreach (var label in stlLabelList) { if (StlParserUtility.IsStlChannelElement(label, NodeAttribute.PageContent)) { stlContentElement = label; break; } } if (!string.IsNullOrEmpty(stlContentElement))//内容存在 { var innerBuilder = new StringBuilder(stlContentElement); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); var contentAttributeHtml = innerBuilder.ToString(); var pageCount = StringUtils.GetCount(ContentUtility.PagePlaceHolder, contentAttributeHtml) + 1;//一共需要的页数 if (pageCount > 1) { for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { var thePageInfo = new PageInfo(pageInfo.PageNodeId, pageInfo.PageContentId, pageInfo.PublishmentSystemInfo, pageInfo.TemplateInfo, null); var index = contentAttributeHtml.IndexOf(ContentUtility.PagePlaceHolder); var length = (index == -1) ? contentAttributeHtml.Length : index; if (currentPageIndex == visualInfo.PageIndex) { var pagedContentAttributeHtml = contentAttributeHtml.Substring(0, length); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlContentElement, pagedContentAttributeHtml)); StlParserManager.ReplacePageElementsInChannelPage(pagedBuilder, thePageInfo, stlLabelList, thePageInfo.PageNodeId, currentPageIndex, pageCount, 0); WriteResponse(pagedBuilder, publishmentSystemInfo, thePageInfo, contextInfo, visualInfo); return; } if (index != -1) { contentAttributeHtml = contentAttributeHtml.Substring(length + ContentUtility.PagePlaceHolder.Length); } } return; } contentBuilder.Replace(stlContentElement, contentAttributeHtml); } if (StlParserUtility.IsStlElementExists(StlPageContents.ElementName, stlLabelList))//如果标签中存在<stl:pageContents> { var stlElement = StlParserUtility.GetStlElement(StlPageContents.ElementName, stlLabelList); var stlPageContentsElement = stlElement; var stlPageContentsElementReplaceString = stlElement; var pageContentsElementParser = new StlPageContents(stlPageContentsElement, pageInfo, contextInfo, false); var totalNum = 0; var pageCount = pageContentsElementParser.GetPageCount(out totalNum); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == visualInfo.PageIndex) { var thePageInfo = new PageInfo(pageInfo.PageNodeId, pageInfo.PageContentId, pageInfo.PublishmentSystemInfo, pageInfo.TemplateInfo, null); var pageHtml = pageContentsElementParser.Parse(totalNum, currentPageIndex, pageCount, false); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlPageContentsElementReplaceString, pageHtml)); StlParserManager.ReplacePageElementsInChannelPage(pagedBuilder, thePageInfo, stlLabelList, thePageInfo.PageNodeId, currentPageIndex, pageCount, totalNum); WriteResponse(pagedBuilder, publishmentSystemInfo, thePageInfo, contextInfo, visualInfo); return; } } } else if (StlParserUtility.IsStlElementExists(StlPageChannels.ElementName, stlLabelList))//如果标签中存在<stl:pageChannels> { var stlElement = StlParserUtility.GetStlElement(StlPageChannels.ElementName, stlLabelList); var stlPageChannelsElement = stlElement; var stlPageChannelsElementReplaceString = stlElement; var pageChannelsElementParser = new StlPageChannels(stlPageChannelsElement, pageInfo, contextInfo, false); var totalNum = 0; var pageCount = pageChannelsElementParser.GetPageCount(out totalNum); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == visualInfo.PageIndex) { var thePageInfo = new PageInfo(pageInfo.PageNodeId, pageInfo.PageContentId, pageInfo.PublishmentSystemInfo, pageInfo.TemplateInfo, null); var pageHtml = pageChannelsElementParser.Parse(currentPageIndex, pageCount); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlPageChannelsElementReplaceString, pageHtml)); StlParserManager.ReplacePageElementsInChannelPage(pagedBuilder, thePageInfo, stlLabelList, thePageInfo.PageNodeId, currentPageIndex, pageCount, totalNum); WriteResponse(pagedBuilder, publishmentSystemInfo, thePageInfo, contextInfo, visualInfo); return; } } } else if (StlParserUtility.IsStlElementExists(StlPageSqlContents.ElementName, stlLabelList))//如果标签中存在<stl:pageSqlContents> { var stlElement = StlParserUtility.GetStlElement(StlPageSqlContents.ElementName, stlLabelList); var stlPageSqlContentsElement = stlElement; var stlPageSqlContentsElementReplaceString = stlElement; var pageSqlContentsElementParser = new StlPageSqlContents(stlPageSqlContentsElement, pageInfo, contextInfo, false); var totalNum = 0; var pageCount = pageSqlContentsElementParser.GetPageCount(out totalNum); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == visualInfo.PageIndex) { var thePageInfo = new PageInfo(pageInfo.PageNodeId, pageInfo.PageContentId, pageInfo.PublishmentSystemInfo, pageInfo.TemplateInfo, null); var pageHtml = pageSqlContentsElementParser.Parse(currentPageIndex, pageCount); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlPageSqlContentsElementReplaceString, pageHtml)); StlParserManager.ReplacePageElementsInChannelPage(pagedBuilder, thePageInfo, stlLabelList, thePageInfo.PageNodeId, currentPageIndex, pageCount, totalNum); WriteResponse(pagedBuilder, publishmentSystemInfo, thePageInfo, contextInfo, visualInfo); return; } } } else { WriteResponse(contentBuilder, publishmentSystemInfo, pageInfo, contextInfo, visualInfo); return; } } else if (visualInfo.TemplateType == ETemplateType.ContentTemplate) //内容页面 { if (contextInfo.ContentInfo == null) { return; } if (!string.IsNullOrEmpty(contextInfo.ContentInfo.GetExtendedAttribute(BackgroundContentAttribute.LinkUrl))) { Response.Redirect(contextInfo.ContentInfo.GetExtendedAttribute(BackgroundContentAttribute.LinkUrl)); return; } var filePath = PathUtility.GetContentPageFilePath(publishmentSystemInfo, pageInfo.PageNodeId, pageInfo.PageContentId, 0); var stlLabelList = StlParserUtility.GetStlLabelList(contentBuilder.ToString()); //如果标签中存在Content var stlContentElement = string.Empty; foreach (var label in stlLabelList) { if (StlParserUtility.IsStlContentElement(label, BackgroundContentAttribute.PageContent)) { stlContentElement = label; break; } } if (!string.IsNullOrEmpty(stlContentElement))//内容存在 { var innerBuilder = new StringBuilder(stlContentElement); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); var contentAttributeHtml = innerBuilder.ToString(); var pageCount = StringUtils.GetCount(ContentUtility.PagePlaceHolder, contentAttributeHtml) + 1;//一共需要的页数 if (pageCount > 1) { for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { var index = contentAttributeHtml.IndexOf(ContentUtility.PagePlaceHolder); var length = (index == -1) ? contentAttributeHtml.Length : index; if (currentPageIndex == visualInfo.PageIndex) { var thePageInfo = new PageInfo(pageInfo.PageNodeId, pageInfo.PageContentId, pageInfo.PublishmentSystemInfo, pageInfo.TemplateInfo, null); var pagedContentAttributeHtml = contentAttributeHtml.Substring(0, length); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlContentElement, pagedContentAttributeHtml)); StlParserManager.ReplacePageElementsInContentPage(pagedBuilder, thePageInfo, stlLabelList, visualInfo.ChannelID, visualInfo.ContentID, currentPageIndex, pageCount); WriteResponse(pagedBuilder, publishmentSystemInfo, thePageInfo, contextInfo, visualInfo); return; } if (index != -1) { contentAttributeHtml = contentAttributeHtml.Substring(length + ContentUtility.PagePlaceHolder.Length); } } return; } contentBuilder.Replace(stlContentElement, contentAttributeHtml); } if (StlParserUtility.IsStlElementExists(StlPageContents.ElementName, stlLabelList))//如果标签中存在<stl:pageContents> { var stlElement = StlParserUtility.GetStlElement(StlPageContents.ElementName, stlLabelList); var stlPageContentsElement = stlElement; var stlPageContentsElementReplaceString = stlElement; var pageContentsElementParser = new StlPageContents(stlPageContentsElement, pageInfo, contextInfo, false); var totalNum = 0; var pageCount = pageContentsElementParser.GetPageCount(out totalNum); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == visualInfo.PageIndex) { var thePageInfo = new PageInfo(pageInfo.PageNodeId, pageInfo.PageContentId, pageInfo.PublishmentSystemInfo, pageInfo.TemplateInfo, null); var pageHtml = pageContentsElementParser.Parse(totalNum, currentPageIndex, pageCount, false); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlPageContentsElementReplaceString, pageHtml)); StlParserManager.ReplacePageElementsInContentPage(pagedBuilder, thePageInfo, stlLabelList, visualInfo.ChannelID, visualInfo.ContentID, currentPageIndex, pageCount); WriteResponse(pagedBuilder, publishmentSystemInfo, thePageInfo, contextInfo, visualInfo); return; } } } else if (StlParserUtility.IsStlElementExists(StlPageChannels.ElementName, stlLabelList))//如果标签中存在<stl:pageChannels> { var stlElement = StlParserUtility.GetStlElement(StlPageChannels.ElementName, stlLabelList); var stlPageChannelsElement = stlElement; var stlPageChannelsElementReplaceString = stlElement; var pageChannelsElementParser = new StlPageChannels(stlPageChannelsElement, pageInfo, contextInfo, false); var totalNum = 0; var pageCount = pageChannelsElementParser.GetPageCount(out totalNum); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == visualInfo.PageIndex) { var thePageInfo = new PageInfo(pageInfo.PageNodeId, pageInfo.PageContentId, pageInfo.PublishmentSystemInfo, pageInfo.TemplateInfo, null); var pageHtml = pageChannelsElementParser.Parse(currentPageIndex, pageCount); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlPageChannelsElementReplaceString, pageHtml)); StlParserManager.ReplacePageElementsInContentPage(pagedBuilder, thePageInfo, stlLabelList, visualInfo.ChannelID, visualInfo.ContentID, currentPageIndex, pageCount); WriteResponse(pagedBuilder, publishmentSystemInfo, thePageInfo, contextInfo, visualInfo); return; } } } else if (StlParserUtility.IsStlElementExists(StlPageSqlContents.ElementName, stlLabelList))//如果标签中存在<stl:pageSqlContents> { var stlElement = StlParserUtility.GetStlElement(StlPageSqlContents.ElementName, stlLabelList); var stlPageSqlContentsElement = stlElement; var stlPageSqlContentsElementReplaceString = stlElement; var pageSqlContentsElementParser = new StlPageSqlContents(stlPageSqlContentsElement, pageInfo, contextInfo, false); var totalNum = 0; var pageCount = pageSqlContentsElementParser.GetPageCount(out totalNum); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == visualInfo.PageIndex) { var thePageInfo = new PageInfo(pageInfo.PageNodeId, pageInfo.PageContentId, pageInfo.PublishmentSystemInfo, pageInfo.TemplateInfo, null); var pageHtml = pageSqlContentsElementParser.Parse(currentPageIndex, pageCount); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlPageSqlContentsElementReplaceString, pageHtml)); StlParserManager.ReplacePageElementsInContentPage(pagedBuilder, thePageInfo, stlLabelList, visualInfo.ChannelID, visualInfo.ContentID, currentPageIndex, pageCount); WriteResponse(pagedBuilder, publishmentSystemInfo, thePageInfo, contextInfo, visualInfo); return; } } } else//无翻页 { WriteResponse(contentBuilder, publishmentSystemInfo, pageInfo, contextInfo, visualInfo); return; } } } catch (Exception ex) { Response.Write(ex.Message); } }
public override Object next() { // blackdown JDK 1.1.8 fails to compile the following line VisualInfo vi = new VisualInfo (owner.display, this, this.offset); inc (16); return vi; }
public override Object next() { VisualInfo visual_info = new VisualInfo (this, 0); inc (8); return visual_info; }
public void SerializeState() { string logicalState = null; string visualState = null; LogicalInfo logicalInfo = null; VisualInfo visualInfo = null; Manager.Register("R", new Module("1", () => new VMTest())); Manager.Register("R", new Module("2", () => new VMTest() { Value = "Test" }, ViewLocator.Default.GetViewTypeName(typeof(View1_BaseTests)))); Manager.Register("R", new Module("3", () => ViewModelSource.Create(() => new VMTest()), typeof(View1_BaseTests))); Manager.Register("R", new Module("4", () => ViewModelSource.Create(() => new VMTest() { Value = "Test" }))); Manager.Inject("R", "1"); Manager.Inject("R", "2"); Manager.Inject("R", "3"); Manager.Inject("R", "4"); ContentControl c = new ContentControl(); UIRegion.SetRegion(c, "R"); Window.Content = c; Window.Show(); Manager.Save(out logicalState, out visualState); logicalInfo = LogicalInfo.Deserialize(logicalState); visualInfo = VisualInfo.Deserialize(visualState); Assert.AreEqual(1, logicalInfo.Regions.Count()); Assert.AreEqual(0, visualInfo.Regions[0].Items.Count()); Assert.AreEqual("1", logicalInfo.Regions[0].SelectedViewModelKey); Func <int, RegionItemInfo> getItem = x => logicalInfo.Regions[0].Items[x]; Assert.AreEqual("1", getItem(0).Key); Assert.AreEqual(null, getItem(0).ViewName); Assert.AreEqual(typeof(VMTest).FullName, getItem(0).ViewModelName); Assert.AreEqual(typeof(VMTest).AssemblyQualifiedName, getItem(0).ViewModelStateType); var vmState = (VMTest)StateSerializer.Default.DeserializeState(getItem(0).ViewModelState.State, Type.GetType(getItem(0).ViewModelStateType)); Assert.AreEqual(null, vmState.Value); Assert.AreEqual("2", getItem(1).Key); Assert.AreEqual(typeof(View1_BaseTests).FullName, getItem(1).ViewName); Assert.AreEqual(typeof(VMTest).FullName, getItem(1).ViewModelName); Assert.AreEqual(typeof(VMTest).AssemblyQualifiedName, getItem(1).ViewModelStateType); vmState = (VMTest)StateSerializer.Default.DeserializeState(getItem(1).ViewModelState.State, Type.GetType(getItem(1).ViewModelStateType)); Assert.AreEqual("Test", vmState.Value); Assert.AreEqual("3", getItem(2).Key); Assert.AreEqual(typeof(View1_BaseTests).FullName, getItem(2).ViewName); Assert.AreEqual("IsPOCOViewModel=True;" + typeof(VMTest).FullName, getItem(2).ViewModelName); Assert.AreNotEqual(typeof(VMTest).AssemblyQualifiedName, getItem(2).ViewModelStateType); Assert.AreEqual(ViewModelSource.Create(() => new VMTest()).GetType().AssemblyQualifiedName, getItem(2).ViewModelStateType); vmState = (VMTest)StateSerializer.Default.DeserializeState(getItem(2).ViewModelState.State, ViewModelSource.Create(() => new VMTest()).GetType()); Assert.AreEqual(null, vmState.Value); Assert.AreEqual("4", getItem(3).Key); Assert.AreEqual(null, getItem(3).ViewName); Assert.AreEqual("IsPOCOViewModel=True;" + typeof(VMTest).FullName, getItem(3).ViewModelName); Assert.AreNotEqual(typeof(VMTest).AssemblyQualifiedName, getItem(3).ViewModelStateType); Assert.AreEqual(ViewModelSource.Create(() => new VMTest()).GetType().AssemblyQualifiedName, getItem(3).ViewModelStateType); vmState = (VMTest)StateSerializer.Default.DeserializeState(getItem(3).ViewModelState.State, ViewModelSource.Create(() => new VMTest()).GetType()); Assert.AreEqual("Test", vmState.Value); }
public void DisableEnable() { ContentControl c1 = new ContentControl(); ContentControl c2 = new ContentControl(); UIRegion.SetRegion(c1, "R1"); UIRegion.SetRegion(c2, "R2"); Manager.Register("R1", new Module("1", () => new VMTest())); Manager.Register("R1", new Module("2", () => new VMTest())); Manager.Register("R2", new Module("1", () => new VMTest())); Manager.Register("R2", new Module("2", () => new VMTest())); Manager.Inject("R1", "1"); Manager.Inject("R1", "2"); Manager.Inject("R2", "1"); Manager.Inject("R2", "2"); string logicalState = null; string visualState = null; Manager.Save(out logicalState, out visualState); var logicalInfo = LogicalInfo.Deserialize(logicalState); var visualInfo = VisualInfo.Deserialize(visualState); Assert.AreEqual(2, logicalInfo.Regions.Count()); Assert.AreEqual("R1", logicalInfo.Regions[0].RegionName); Assert.AreEqual("R2", logicalInfo.Regions[1].RegionName); Assert.AreEqual(2, logicalInfo.Regions[0].Items.Count()); Assert.AreEqual(2, logicalInfo.Regions[1].Items.Count()); Manager.GetRegion("R1").LogicalSerializationMode = LogicalSerializationMode.Disabled; Manager.Save(out logicalState, out visualState); logicalInfo = LogicalInfo.Deserialize(logicalState); visualInfo = VisualInfo.Deserialize(visualState); Assert.AreEqual(2, logicalInfo.Regions.Count()); Assert.AreEqual("R1", logicalInfo.Regions[0].RegionName); Assert.AreEqual("R2", logicalInfo.Regions[1].RegionName); Assert.AreEqual(0, logicalInfo.Regions[0].Items.Count()); Assert.AreEqual(2, logicalInfo.Regions[1].Items.Count()); Manager.GetRegion("R1").LogicalSerializationMode = LogicalSerializationMode.Enabled; Manager.Save(out logicalState, out visualState); logicalInfo = LogicalInfo.Deserialize(logicalState); visualInfo = VisualInfo.Deserialize(visualState); Assert.AreEqual(2, logicalInfo.Regions[0].Items.Count()); Assert.AreEqual(2, logicalInfo.Regions[1].Items.Count()); Manager.GetRegion("R1").SetLogicalSerializationMode("1", LogicalSerializationMode.Disabled); Manager.Save(out logicalState, out visualState); logicalInfo = LogicalInfo.Deserialize(logicalState); visualInfo = VisualInfo.Deserialize(visualState); Assert.AreEqual(1, logicalInfo.Regions[0].Items.Count()); Assert.AreEqual("2", logicalInfo.Regions[0].Items[0].Key); Assert.AreEqual(2, logicalInfo.Regions[1].Items.Count()); Manager.GetRegion("R1").LogicalSerializationMode = LogicalSerializationMode.Disabled; Manager.GetRegion("R1").SetLogicalSerializationMode("2", LogicalSerializationMode.Enabled); Manager.Save(out logicalState, out visualState); logicalInfo = LogicalInfo.Deserialize(logicalState); visualInfo = VisualInfo.Deserialize(visualState); Assert.AreEqual(1, logicalInfo.Regions[0].Items.Count()); Assert.AreEqual("2", logicalInfo.Regions[0].Items[0].Key); Assert.AreEqual(2, logicalInfo.Regions[1].Items.Count()); Manager.GetRegion("R1").SetLogicalSerializationMode("1", null); Manager.GetRegion("R1").SetLogicalSerializationMode("2", null); Manager.Save(out logicalState, out visualState); logicalInfo = LogicalInfo.Deserialize(logicalState); visualInfo = VisualInfo.Deserialize(visualState); Assert.AreEqual(0, logicalInfo.Regions[0].Items.Count()); Assert.AreEqual(2, logicalInfo.Regions[1].Items.Count()); }
private HttpResponseMessage GetResponseMessage(VisualInfo visualInfo) { if (visualInfo.SiteInfo == null || visualInfo.TemplateInfo == null) { return(null); } var siteInfo = visualInfo.SiteInfo; var templateInfo = visualInfo.TemplateInfo; var pageInfo = new PageInfo(visualInfo.ChannelId, visualInfo.ContentId, siteInfo, templateInfo, new Dictionary <string, object>()) { IsLocal = true }; var contextInfo = new ContextInfo(pageInfo) { ContextType = visualInfo.ContextType }; var contentBuilder = new StringBuilder(TemplateManager.GetTemplateContent(siteInfo, templateInfo)); //需要完善,考虑单页模板、内容正文、翻页及外部链接 if (templateInfo.TemplateType == TemplateType.FileTemplate) //单页 { Parser.Parse(pageInfo, contextInfo, contentBuilder, visualInfo.FilePath, true); return(Response(contentBuilder.ToString(), siteInfo)); } if (templateInfo.TemplateType == TemplateType.IndexPageTemplate || templateInfo.TemplateType == TemplateType.ChannelTemplate) //栏目页面 { var nodeInfo = ChannelManager.GetChannelInfo(siteInfo.Id, visualInfo.ChannelId); if (nodeInfo == null) { return(null); } if (nodeInfo.ParentId > 0) { if (!string.IsNullOrEmpty(nodeInfo.LinkUrl)) { PageUtils.Redirect(nodeInfo.LinkUrl); return(null); } } var stlLabelList = StlParserUtility.GetStlLabelList(contentBuilder.ToString()); //如果标签中存在Content var stlContentElement = string.Empty; foreach (var label in stlLabelList) { if (StlParserUtility.IsStlChannelElement(label, ChannelAttribute.PageContent)) { stlContentElement = label; break; } } if (!string.IsNullOrEmpty(stlContentElement))//内容存在 { var innerBuilder = new StringBuilder(stlContentElement); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); var contentAttributeHtml = innerBuilder.ToString(); var pageCount = StringUtils.GetCount(ContentUtility.PagePlaceHolder, contentAttributeHtml) + 1;//一共需要的页数 if (pageCount > 1) { Parser.Parse(pageInfo, contextInfo, contentBuilder, visualInfo.FilePath, true); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { var thePageInfo = pageInfo.Clone(); thePageInfo.IsLocal = true; var index = contentAttributeHtml.IndexOf(ContentUtility.PagePlaceHolder, StringComparison.Ordinal); var length = index == -1 ? contentAttributeHtml.Length : index; if (currentPageIndex == visualInfo.PageIndex) { var pagedContentAttributeHtml = contentAttributeHtml.Substring(0, length); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlContentElement, pagedContentAttributeHtml)); StlParserManager.ReplacePageElementsInChannelPage(pagedBuilder, thePageInfo, stlLabelList, thePageInfo.PageChannelId, currentPageIndex, pageCount, 0); return(Response(pagedBuilder.ToString(), siteInfo)); } if (index != -1) { contentAttributeHtml = contentAttributeHtml.Substring(length + ContentUtility.PagePlaceHolder.Length); } } return(null); } contentBuilder.Replace(stlContentElement, contentAttributeHtml); } if (StlParserUtility.IsStlElementExists(StlPageContents.ElementName, stlLabelList))//如果标签中存在<stl:pageContents> { var stlElement = StlParserUtility.GetStlElement(StlPageContents.ElementName, stlLabelList); var stlElementTranslated = StlParserManager.StlEncrypt(stlElement); var pageContentsElementParser = new StlPageContents(stlElement, pageInfo, contextInfo); var pageCount = pageContentsElementParser.GetPageCount(out var totalNum); Parser.Parse(pageInfo, contextInfo, contentBuilder, visualInfo.FilePath, true); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == visualInfo.PageIndex) { var thePageInfo = pageInfo.Clone(); thePageInfo.IsLocal = true; var pageHtml = pageContentsElementParser.Parse(totalNum, currentPageIndex, pageCount, false); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlElementTranslated, pageHtml)); StlParserManager.ReplacePageElementsInChannelPage(pagedBuilder, thePageInfo, stlLabelList, thePageInfo.PageChannelId, currentPageIndex, pageCount, totalNum); return(Response(pagedBuilder.ToString(), siteInfo)); } } } else if (StlParserUtility.IsStlElementExists(StlPageChannels.ElementName, stlLabelList))//如果标签中存在<stl:pageChannels> { var stlElement = StlParserUtility.GetStlElement(StlPageChannels.ElementName, stlLabelList); var stlElementTranslated = StlParserManager.StlEncrypt(stlElement); var pageChannelsElementParser = new StlPageChannels(stlElement, pageInfo, contextInfo); var pageCount = pageChannelsElementParser.GetPageCount(out var totalNum); Parser.Parse(pageInfo, contextInfo, contentBuilder, visualInfo.FilePath, true); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == visualInfo.PageIndex) { var thePageInfo = pageInfo.Clone(); thePageInfo.IsLocal = true; var pageHtml = pageChannelsElementParser.Parse(currentPageIndex, pageCount); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlElementTranslated, pageHtml)); StlParserManager.ReplacePageElementsInChannelPage(pagedBuilder, thePageInfo, stlLabelList, thePageInfo.PageChannelId, currentPageIndex, pageCount, totalNum); return(Response(pagedBuilder.ToString(), siteInfo)); } } } else if (StlParserUtility.IsStlElementExists(StlPageSqlContents.ElementName, stlLabelList))//如果标签中存在<stl:pageSqlContents> { var stlElement = StlParserUtility.GetStlElement(StlPageSqlContents.ElementName, stlLabelList); var stlElementTranslated = StlParserManager.StlEncrypt(stlElement); var pageSqlContentsElementParser = new StlPageSqlContents(stlElement, pageInfo, contextInfo); var pageCount = pageSqlContentsElementParser.GetPageCount(out var totalNum); Parser.Parse(pageInfo, contextInfo, contentBuilder, visualInfo.FilePath, true); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == visualInfo.PageIndex) { var thePageInfo = pageInfo.Clone(); thePageInfo.IsLocal = true; var pageHtml = pageSqlContentsElementParser.Parse(totalNum, currentPageIndex, pageCount, false); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlElementTranslated, pageHtml)); StlParserManager.ReplacePageElementsInChannelPage(pagedBuilder, thePageInfo, stlLabelList, thePageInfo.PageChannelId, currentPageIndex, pageCount, totalNum); return(Response(pagedBuilder.ToString(), siteInfo)); } } } Parser.Parse(pageInfo, contextInfo, contentBuilder, visualInfo.FilePath, true); return(Response(contentBuilder.ToString(), siteInfo)); } if (templateInfo.TemplateType == TemplateType.ContentTemplate) //内容页面 { if (contextInfo.ContentInfo == null) { return(null); } if (!string.IsNullOrEmpty(contextInfo.ContentInfo.GetString(ContentAttribute.LinkUrl))) { PageUtils.Redirect(contextInfo.ContentInfo.GetString(ContentAttribute.LinkUrl)); return(null); } var stlLabelList = StlParserUtility.GetStlLabelList(contentBuilder.ToString()); if (StlParserUtility.IsStlContentElementWithTypePageContent(stlLabelList))//内容存在 { var stlElement = StlParserUtility.GetStlContentElementWithTypePageContent(stlLabelList); var stlElementTranslated = StlParserManager.StlEncrypt(stlElement); contentBuilder.Replace(stlElement, stlElementTranslated); var innerBuilder = new StringBuilder(stlElement); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); var pageContentHtml = innerBuilder.ToString(); var pageCount = StringUtils.GetCount(ContentUtility.PagePlaceHolder, pageContentHtml) + 1;//一共需要的页数 Parser.Parse(pageInfo, contextInfo, contentBuilder, visualInfo.FilePath, true); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { var index = pageContentHtml.IndexOf(ContentUtility.PagePlaceHolder, StringComparison.Ordinal); var length = index == -1 ? pageContentHtml.Length : index; if (currentPageIndex == visualInfo.PageIndex) { var thePageInfo = pageInfo.Clone(); thePageInfo.IsLocal = true; var pageHtml = pageContentHtml.Substring(0, length); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlElementTranslated, pageHtml)); StlParserManager.ReplacePageElementsInContentPage(pagedBuilder, thePageInfo, stlLabelList, visualInfo.ChannelId, visualInfo.ContentId, currentPageIndex, pageCount); return(Response(pagedBuilder.ToString(), siteInfo)); } if (index != -1) { pageContentHtml = pageContentHtml.Substring(length + ContentUtility.PagePlaceHolder.Length); } } } if (StlParserUtility.IsStlElementExists(StlPageContents.ElementName, stlLabelList))//如果标签中存在<stl:pageContents> { var stlElement = StlParserUtility.GetStlElement(StlPageContents.ElementName, stlLabelList); var stlElementTranslated = StlParserManager.StlEncrypt(stlElement); var pageContentsElementParser = new StlPageContents(stlElement, pageInfo, contextInfo); var pageCount = pageContentsElementParser.GetPageCount(out var totalNum); Parser.Parse(pageInfo, contextInfo, contentBuilder, visualInfo.FilePath, true); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == visualInfo.PageIndex) { var thePageInfo = pageInfo.Clone(); thePageInfo.IsLocal = true; var pageHtml = pageContentsElementParser.Parse(totalNum, currentPageIndex, pageCount, false); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlElementTranslated, pageHtml)); StlParserManager.ReplacePageElementsInContentPage(pagedBuilder, thePageInfo, stlLabelList, visualInfo.ChannelId, visualInfo.ContentId, currentPageIndex, pageCount); return(Response(pagedBuilder.ToString(), siteInfo)); } } } else if (StlParserUtility.IsStlElementExists(StlPageChannels.ElementName, stlLabelList))//如果标签中存在<stl:pageChannels> { var stlElement = StlParserUtility.GetStlElement(StlPageChannels.ElementName, stlLabelList); var stlElementTranslated = StlParserManager.StlEncrypt(stlElement); var pageChannelsElementParser = new StlPageChannels(stlElement, pageInfo, contextInfo); var pageCount = pageChannelsElementParser.GetPageCount(out _); Parser.Parse(pageInfo, contextInfo, contentBuilder, visualInfo.FilePath, true); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == visualInfo.PageIndex) { var thePageInfo = pageInfo.Clone(); thePageInfo.IsLocal = true; var pageHtml = pageChannelsElementParser.Parse(currentPageIndex, pageCount); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlElementTranslated, pageHtml)); StlParserManager.ReplacePageElementsInContentPage(pagedBuilder, thePageInfo, stlLabelList, visualInfo.ChannelId, visualInfo.ContentId, currentPageIndex, pageCount); return(Response(pagedBuilder.ToString(), siteInfo)); } } } else if (StlParserUtility.IsStlElementExists(StlPageSqlContents.ElementName, stlLabelList))//如果标签中存在<stl:pageSqlContents> { var stlElement = StlParserUtility.GetStlElement(StlPageSqlContents.ElementName, stlLabelList); var stlElementTranslated = StlParserManager.StlEncrypt(stlElement); var pageSqlContentsElementParser = new StlPageSqlContents(stlElement, pageInfo, contextInfo); var pageCount = pageSqlContentsElementParser.GetPageCount(out var totalNum); Parser.Parse(pageInfo, contextInfo, contentBuilder, visualInfo.FilePath, true); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == visualInfo.PageIndex) { var thePageInfo = pageInfo.Clone(); thePageInfo.IsLocal = true; var pageHtml = pageSqlContentsElementParser.Parse(totalNum, currentPageIndex, pageCount, false); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlElementTranslated, pageHtml)); StlParserManager.ReplacePageElementsInContentPage(pagedBuilder, thePageInfo, stlLabelList, visualInfo.ChannelId, visualInfo.ContentId, currentPageIndex, pageCount); return(Response(pagedBuilder.ToString(), siteInfo)); } } } Parser.Parse(pageInfo, contextInfo, contentBuilder, visualInfo.FilePath, true); StlParserManager.ReplacePageElementsInContentPage(contentBuilder, pageInfo, stlLabelList, contextInfo.ContentInfo.ChannelId, contextInfo.ContentInfo.Id, 0, 1); return(Response(contentBuilder.ToString(), siteInfo)); } return(null); }
public override void CreateContext(IntPtr wnd_handle, IntPtr drawable, OpenGLContext share) { // Force loading of OpenGL library // This is later used by the OpenGL class to implement extensions. //linker = GetLinker(); display = API.OpenDisplay(IntPtr.Zero); if (display == IntPtr.Zero) { throw new InvalidOperationException("Cannot connect to X server"); } wnd = wnd_handle; int[] attr = { Glx.GLX_X_RENDERABLE, 1, Glx.GLX_DRAWABLE_TYPE, Glx.GLX_WINDOW_BIT, Glx.GLX_RENDER_TYPE, Glx.GLX_RGBA_BIT, Glx.GLX_X_VISUAL_TYPE, Glx.GLX_TRUE_COLOR, Glx.GLX_RED_SIZE, 8, Glx.GLX_GREEN_SIZE, 8, Glx.GLX_BLUE_SIZE, 8, Glx.GLX_ALPHA_SIZE, 0, Glx.GLX_DEPTH_SIZE, 16, //Glx.GLX_STENCIL_SIZE , 8, Glx.GLX_DOUBLEBUFFER, 1, 0, 0 }; API.MapWindow(display, wnd); int def_screen = API.DefaultScreen(display); Console.WriteLine("Display: 0x" + display.ToString("x")); Console.WriteLine("Deault screen: 0x" + def_screen.ToString("x")); int[] elems = new int[] { 0 }; //IntPtr fb = Glx.glXChooseFBConfig(display, def_screen, attr, elems); //if (fb == IntPtr.Zero) //throw new InvalidOperationException("Could not retrieve framebuffer configuration"); Console.WriteLine(elems[0]); //var info_ptr = Glx.glXGetVisualFromFBConfig(display, Marshal.ReadIntPtr(fb)); attr = new int[] { GLX_RGBA, GLX_DEPTH_SIZE, 32, GLX_DOUBLEBUFFER, 0 }; //IntPtr info_ptr = Glx.glXChooseVisual(display, def_screen, attr); var info_ptr = API.DefaultVisual(display, def_screen); if (info_ptr == IntPtr.Zero) { throw new NotSupportedException("OpenGL is not supported."); } VisualInfo info = new VisualInfo(); Marshal.PtrToStructure(info_ptr, info); visual = info_ptr; handle = Glx.glXCreateContext(display, visual, IntPtr.Zero, true); if (handle == IntPtr.Zero) { throw new InvalidOperationException("Unable to create OpenGL context"); } Glx.glXMakeCurrent(display, visual, handle); int[] parameters = new int[] { GLX_CONTEXT_MAJOR_VERSION_ARB, 3, GLX_CONTEXT_MINOR_VERSION_ARB, 2, 0 }; glXCreateContextAttribsARB = GetProc <XCreateContextAttribsARBProc>("glXCreateContextAttribsARB"); if (glXCreateContextAttribsARB == null) { throw new NotSupportedException("OpenGL 3.0 not supported."); } IntPtr new_handle = glXCreateContextAttribsARB(display, info_ptr, share.Handle, true, parameters); if (new_handle == IntPtr.Zero) { throw new NotSupportedException("OpenGL 3.0 not supported."); } Glx.glXMakeCurrent(display, visual, IntPtr.Zero); Glx.glXDestroyContext(display, handle); Glx.glXMakeCurrent(display, visual, new_handle); handle = new_handle; Console.WriteLine("glX Initialization succeded."); }
private HttpResponseMessage GetFileTemplate(VisualInfo visualInfo, PageInfo pageInfo, ContextInfo contextInfo, StringBuilder contentBuilder, SiteInfo siteInfo) { Parser.Parse(pageInfo, contextInfo, contentBuilder, visualInfo.FilePath, true); return(Response(contentBuilder.ToString(), siteInfo)); }
private async Task <FileResult> GetContentTemplateAsync(VisualInfo visualInfo, StringBuilder contentBuilder) { var content = await _parseManager.GetContentAsync(); if (content == null) { return(null); } if (!string.IsNullOrEmpty(content.LinkUrl)) { HttpContext.Response.Redirect(content.LinkUrl); return(null); } var stlLabelList = ParseUtils.GetStlLabels(contentBuilder.ToString()); if (StlParserUtility.IsStlContentElementWithTypePageContent(stlLabelList)) //内容存在 { var stlElement = StlParserUtility.GetStlContentElementWithTypePageContent(stlLabelList); var stlElementTranslated = _parseManager.StlEncrypt(stlElement); contentBuilder.Replace(stlElement, stlElementTranslated); var innerBuilder = new StringBuilder(stlElement); await _parseManager.ParseInnerContentAsync(innerBuilder); var pageContentHtml = innerBuilder.ToString(); var pageCount = StringUtils.GetCount(Constants.PagePlaceHolder, pageContentHtml) + 1; //一共需要的页数 await _parseManager.ParseAsync(contentBuilder, visualInfo.FilePath, true); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { var index = pageContentHtml.IndexOf(Constants.PagePlaceHolder, StringComparison.Ordinal); var length = index == -1 ? pageContentHtml.Length : index; if (currentPageIndex == visualInfo.PageIndex) { var pageHtml = pageContentHtml.Substring(0, length); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlElementTranslated, pageHtml)); await _parseManager.ReplacePageElementsInContentPageAsync(pagedBuilder, stlLabelList, currentPageIndex, pageCount); return(GetResponse(pagedBuilder.ToString())); } if (index != -1) { pageContentHtml = pageContentHtml.Substring(length + Constants.PagePlaceHolder.Length); } } } if (ParseUtils.IsStlElementExists(StlPageContents.ElementName, stlLabelList)) //如果标签中存在<stl:pageContents> { var stlElement = ParseUtils.GetStlElement(StlPageContents.ElementName, stlLabelList); var stlElementTranslated = _parseManager.StlEncrypt(stlElement); var pageContentsElementParser = await StlPageContents.GetAsync(stlElement, _parseManager); var(pageCount, totalNum) = pageContentsElementParser.GetPageCount(); await _parseManager.ParseAsync(contentBuilder, visualInfo.FilePath, true); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == visualInfo.PageIndex) { var pageHtml = await pageContentsElementParser.ParseAsync(totalNum, currentPageIndex, pageCount, false); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlElementTranslated, pageHtml)); await _parseManager.ReplacePageElementsInContentPageAsync(pagedBuilder, stlLabelList, currentPageIndex, pageCount); return(GetResponse(pagedBuilder.ToString())); } } } else if (ParseUtils.IsStlElementExists(StlPageChannels.ElementName, stlLabelList)) //如果标签中存在<stl:pageChannels> { var stlElement = ParseUtils.GetStlElement(StlPageChannels.ElementName, stlLabelList); var stlElementTranslated = _parseManager.StlEncrypt(stlElement); var pageChannelsElementParser = await StlPageChannels.GetAsync(stlElement, _parseManager); var pageCount = pageChannelsElementParser.GetPageCount(out _); await _parseManager.ParseAsync(contentBuilder, visualInfo.FilePath, true); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == visualInfo.PageIndex) { var pageHtml = await pageChannelsElementParser.ParseAsync(currentPageIndex, pageCount); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlElementTranslated, pageHtml)); await _parseManager.ReplacePageElementsInContentPageAsync(pagedBuilder, stlLabelList, currentPageIndex, pageCount); return(GetResponse(pagedBuilder.ToString())); } } } else if (ParseUtils.IsStlElementExists(StlPageSqlContents.ElementName, stlLabelList) ) //如果标签中存在<stl:pageSqlContents> { var stlElement = ParseUtils.GetStlElement(StlPageSqlContents.ElementName, stlLabelList); var stlElementTranslated = _parseManager.StlEncrypt(stlElement); var pageSqlContentsElementParser = await StlPageSqlContents.GetAsync(stlElement, _parseManager); var pageCount = pageSqlContentsElementParser.GetPageCount(out var totalNum); await _parseManager.ParseAsync(contentBuilder, visualInfo.FilePath, true); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == visualInfo.PageIndex) { var pageHtml = await pageSqlContentsElementParser.ParseAsync(totalNum, currentPageIndex, pageCount, false); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlElementTranslated, pageHtml)); await _parseManager.ReplacePageElementsInContentPageAsync(pagedBuilder, stlLabelList, currentPageIndex, pageCount); return(GetResponse(pagedBuilder.ToString())); } } } await _parseManager.ParseAsync(contentBuilder, visualInfo.FilePath, true); await _parseManager.ReplacePageElementsInContentPageAsync(contentBuilder, stlLabelList, 0, 1); return(GetResponse(contentBuilder.ToString())); }
private HttpResponseMessage GetChannelTemplate(VisualInfo visualInfo, SiteInfo siteInfo, StringBuilder contentBuilder, PageInfo pageInfo, ContextInfo contextInfo) { var nodeInfo = ChannelManager.GetChannelInfo(siteInfo.Id, visualInfo.ChannelId); if (nodeInfo == null) { return(null); } if (nodeInfo.ParentId > 0) { if (!string.IsNullOrEmpty(nodeInfo.LinkUrl)) { PageUtils.Redirect(nodeInfo.LinkUrl); return(null); } } var stlLabelList = StlParserUtility.GetStlLabelList(contentBuilder.ToString()); //如果标签中存在Content var stlContentElement = string.Empty; foreach (var label in stlLabelList) { if (StlParserUtility.IsStlChannelElement(label, ChannelAttribute.PageContent)) { stlContentElement = label; break; } } if (!string.IsNullOrEmpty(stlContentElement)) //内容存在 { var innerBuilder = new StringBuilder(stlContentElement); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); var contentAttributeHtml = innerBuilder.ToString(); var pageCount = StringUtils.GetCount(ContentUtility.PagePlaceHolder, contentAttributeHtml) + 1; //一共需要的页数 if (pageCount > 1) { Parser.Parse(pageInfo, contextInfo, contentBuilder, visualInfo.FilePath, true); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { var thePageInfo = pageInfo.Clone(); thePageInfo.IsLocal = true; var index = contentAttributeHtml.IndexOf(ContentUtility.PagePlaceHolder, StringComparison.Ordinal); var length = index == -1 ? contentAttributeHtml.Length : index; if (currentPageIndex == visualInfo.PageIndex) { var pagedContentAttributeHtml = contentAttributeHtml.Substring(0, length); var pagedBuilder = new StringBuilder(contentBuilder.ToString() .Replace(stlContentElement, pagedContentAttributeHtml)); StlParserManager.ReplacePageElementsInChannelPage(pagedBuilder, thePageInfo, stlLabelList, thePageInfo.PageChannelId, currentPageIndex, pageCount, 0); return(Response(pagedBuilder.ToString(), siteInfo)); } if (index != -1) { contentAttributeHtml = contentAttributeHtml.Substring(length + ContentUtility.PagePlaceHolder.Length); } } return(null); } contentBuilder.Replace(stlContentElement, contentAttributeHtml); } if (StlParserUtility.IsStlElementExists(StlPageContents.ElementName, stlLabelList)) //如果标签中存在<stl:pageContents> { var stlElement = StlParserUtility.GetStlElement(StlPageContents.ElementName, stlLabelList); var stlElementTranslated = StlParserManager.StlEncrypt(stlElement); var pageContentsElementParser = new StlPageContents(stlElement, pageInfo, contextInfo); var pageCount = pageContentsElementParser.GetPageCount(out var totalNum); Parser.Parse(pageInfo, contextInfo, contentBuilder, visualInfo.FilePath, true); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == visualInfo.PageIndex) { var thePageInfo = pageInfo.Clone(); thePageInfo.IsLocal = true; var pageHtml = pageContentsElementParser.Parse(totalNum, currentPageIndex, pageCount, false); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlElementTranslated, pageHtml)); StlParserManager.ReplacePageElementsInChannelPage(pagedBuilder, thePageInfo, stlLabelList, thePageInfo.PageChannelId, currentPageIndex, pageCount, totalNum); return(Response(pagedBuilder.ToString(), siteInfo)); } } } else if (StlParserUtility.IsStlElementExists(StlPageChannels.ElementName, stlLabelList)) //如果标签中存在<stl:pageChannels> { var stlElement = StlParserUtility.GetStlElement(StlPageChannels.ElementName, stlLabelList); var stlElementTranslated = StlParserManager.StlEncrypt(stlElement); var pageChannelsElementParser = new StlPageChannels(stlElement, pageInfo, contextInfo); var pageCount = pageChannelsElementParser.GetPageCount(out var totalNum); Parser.Parse(pageInfo, contextInfo, contentBuilder, visualInfo.FilePath, true); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == visualInfo.PageIndex) { var thePageInfo = pageInfo.Clone(); thePageInfo.IsLocal = true; var pageHtml = pageChannelsElementParser.Parse(currentPageIndex, pageCount); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlElementTranslated, pageHtml)); StlParserManager.ReplacePageElementsInChannelPage(pagedBuilder, thePageInfo, stlLabelList, thePageInfo.PageChannelId, currentPageIndex, pageCount, totalNum); return(Response(pagedBuilder.ToString(), siteInfo)); } } } else if (StlParserUtility.IsStlElementExists(StlPageSqlContents.ElementName, stlLabelList) ) //如果标签中存在<stl:pageSqlContents> { var stlElement = StlParserUtility.GetStlElement(StlPageSqlContents.ElementName, stlLabelList); var stlElementTranslated = StlParserManager.StlEncrypt(stlElement); var pageSqlContentsElementParser = new StlPageSqlContents(stlElement, pageInfo, contextInfo); var pageCount = pageSqlContentsElementParser.GetPageCount(out var totalNum); Parser.Parse(pageInfo, contextInfo, contentBuilder, visualInfo.FilePath, true); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == visualInfo.PageIndex) { var thePageInfo = pageInfo.Clone(); thePageInfo.IsLocal = true; var pageHtml = pageSqlContentsElementParser.Parse(totalNum, currentPageIndex, pageCount, false); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlElementTranslated, pageHtml)); StlParserManager.ReplacePageElementsInChannelPage(pagedBuilder, thePageInfo, stlLabelList, thePageInfo.PageChannelId, currentPageIndex, pageCount, totalNum); return(Response(pagedBuilder.ToString(), siteInfo)); } } } Parser.Parse(pageInfo, contextInfo, contentBuilder, visualInfo.FilePath, true); return(Response(contentBuilder.ToString(), siteInfo)); }
private async Task <FileResult> GetChannelTemplateAsync(VisualInfo visualInfo, StringBuilder contentBuilder) { var nodeInfo = await _channelRepository.GetAsync(visualInfo.ChannelId); if (nodeInfo == null) { return(null); } if (nodeInfo.ParentId > 0) { if (!string.IsNullOrEmpty(nodeInfo.LinkUrl)) { HttpContext.Response.Redirect(nodeInfo.LinkUrl); return(null); } } var stlLabelList = ParseUtils.GetStlLabels(contentBuilder.ToString()); //如果标签中存在Content var stlContentElement = string.Empty; foreach (var label in stlLabelList) { if (StlParserUtility.IsStlChannelElement(label, StlParserUtility.PageContent)) { stlContentElement = label; break; } } if (!string.IsNullOrEmpty(stlContentElement)) //内容存在 { var innerBuilder = new StringBuilder(stlContentElement); await _parseManager.ParseInnerContentAsync(innerBuilder); var contentAttributeHtml = innerBuilder.ToString(); var pageCount = StringUtils.GetCount(Constants.PagePlaceHolder, contentAttributeHtml) + 1; //一共需要的页数 if (pageCount > 1) { await _parseManager.ParseAsync(contentBuilder, visualInfo.FilePath, true); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { var index = contentAttributeHtml.IndexOf(Constants.PagePlaceHolder, StringComparison.Ordinal); var length = index == -1 ? contentAttributeHtml.Length : index; if (currentPageIndex == visualInfo.PageIndex) { var pagedContentAttributeHtml = contentAttributeHtml.Substring(0, length); var pagedBuilder = new StringBuilder(contentBuilder.ToString() .Replace(stlContentElement, pagedContentAttributeHtml)); await _parseManager.ReplacePageElementsInChannelPageAsync(pagedBuilder, stlLabelList, currentPageIndex, pageCount, 0); return(GetResponse(pagedBuilder.ToString())); } if (index != -1) { contentAttributeHtml = contentAttributeHtml.Substring(length + Constants.PagePlaceHolder.Length); } } return(null); } contentBuilder.Replace(stlContentElement, contentAttributeHtml); } if (ParseUtils.IsStlElementExists(StlPageContents.ElementName, stlLabelList)) //如果标签中存在<stl:pageContents> { var stlElement = ParseUtils.GetStlElement(StlPageContents.ElementName, stlLabelList); var stlElementTranslated = _parseManager.StlEncrypt(stlElement); var pageContentsElementParser = await StlPageContents.GetAsync(stlElement, _parseManager); var(pageCount, totalNum) = pageContentsElementParser.GetPageCount(); await _parseManager.ParseAsync(contentBuilder, visualInfo.FilePath, true); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == visualInfo.PageIndex) { var pageHtml = await pageContentsElementParser.ParseAsync(totalNum, currentPageIndex, pageCount, false); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlElementTranslated, pageHtml)); await _parseManager.ReplacePageElementsInChannelPageAsync(pagedBuilder, stlLabelList, currentPageIndex, pageCount, totalNum); return(GetResponse(pagedBuilder.ToString())); } } } else if (ParseUtils.IsStlElementExists(StlPageChannels.ElementName, stlLabelList)) //如果标签中存在<stl:pageChannels> { var stlElement = ParseUtils.GetStlElement(StlPageChannels.ElementName, stlLabelList); var stlElementTranslated = _parseManager.StlEncrypt(stlElement); var pageChannelsElementParser = await StlPageChannels.GetAsync(stlElement, _parseManager); var pageCount = pageChannelsElementParser.GetPageCount(out var totalNum); await _parseManager.ParseAsync(contentBuilder, visualInfo.FilePath, true); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == visualInfo.PageIndex) { var pageHtml = await pageChannelsElementParser.ParseAsync(currentPageIndex, pageCount); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlElementTranslated, pageHtml)); await _parseManager.ReplacePageElementsInChannelPageAsync(pagedBuilder, stlLabelList, currentPageIndex, pageCount, totalNum); return(GetResponse(pagedBuilder.ToString())); } } } //如果标签中存在<stl:pageSqlContents> else if (ParseUtils.IsStlElementExists(StlPageSqlContents.ElementName, stlLabelList)) { var stlElement = ParseUtils.GetStlElement(StlPageSqlContents.ElementName, stlLabelList); var stlElementTranslated = _parseManager.StlEncrypt(stlElement); var pageSqlContentsElementParser = await StlPageSqlContents.GetAsync(stlElement, _parseManager); var pageCount = pageSqlContentsElementParser.GetPageCount(out var totalNum); await _parseManager.ParseAsync(contentBuilder, visualInfo.FilePath, true); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == visualInfo.PageIndex) { var pageHtml = await pageSqlContentsElementParser.ParseAsync(totalNum, currentPageIndex, pageCount, false); var pagedBuilder = new StringBuilder(contentBuilder.ToString().Replace(stlElementTranslated, pageHtml)); await _parseManager.ReplacePageElementsInChannelPageAsync(pagedBuilder, stlLabelList, currentPageIndex, pageCount, totalNum); return(GetResponse(pagedBuilder.ToString())); } } } await _parseManager.ParseAsync(contentBuilder, visualInfo.FilePath, true); return(GetResponse(contentBuilder.ToString())); }
private async Task <FileResult> GetFileTemplateAsync(VisualInfo visualInfo, StringBuilder contentBuilder) { await _parseManager.ParseAsync(contentBuilder, visualInfo.FilePath, true); return(GetResponse(contentBuilder.ToString())); }
IEnumerator PlayerAttack(int moveDir) { List <BasicEnemyAI> enemiesToKill = new List <BasicEnemyAI>(); List <Transform> attackAnimObjs = new List <Transform>(); List <Vector3[]> dijkPoints = new List <Vector3[]>(); if (playerGridCell.cellNeighbours[(moveDir + 2) % 6] != null && playerGridCell.cellNeighbours[(moveDir + 2) % 6].entity != null && playerGridCell.cellNeighbours[(moveDir + 2) % 6].entity.tag == "Enemy") { enemiesToKill.Add(playerGridCell.cellNeighbours[(moveDir + 2) % 6].entity.GetComponent <BasicEnemyAI>()); } if (playerGridCell.cellNeighbours[(moveDir + 4) % 6] != null && playerGridCell.cellNeighbours[(moveDir + 4) % 6].entity != null && playerGridCell.cellNeighbours[(moveDir + 4) % 6].entity.tag == "Enemy") { enemiesToKill.Add(playerGridCell.cellNeighbours[(moveDir + 4) % 6].entity.GetComponent <BasicEnemyAI>()); } for (int i = 0; i < enemiesToKill.Count; i++) { dijkPoints.Add(new Vector3[4] { (player.transform.position), enemiesToKill[i].transform.position, playerGridCell.transform.position, playerGridCell.transform.position }); attackAnimObjs.Add(Instantiate(attackAnimObj, dijkPoints[i][0], Quaternion.identity).transform); } if (playerGridCell.cellNeighbours[moveDir] != null && playerGridCell.cellNeighbours[moveDir].entity != null && playerGridCell.cellNeighbours[moveDir].entity.tag == "Enemy") { if (enemiesToKill.Count != 0) { for (int i = 0; i < enemiesToKill.Count; i++) { dijkPoints[i][3] = playerGridCell.cellNeighbours[moveDir].transform.position; } } else { dijkPoints.Add(new Vector3[2] { player.transform.position, playerGridCell.cellNeighbours[moveDir].transform.position }); attackAnimObjs.Add(Instantiate(attackAnimObj, dijkPoints[0][0], Quaternion.identity).transform); } enemiesToKill.Add(playerGridCell.cellNeighbours[moveDir].entity.GetComponent <BasicEnemyAI>()); } for (int i = 0; i < enemiesToKill.Count; i++) { StartCoroutine(enemiesToKill[i].Die(VisualInfo.deathExpansionRatio)); } float progress = 0; while (true) { progress += (playerMoveSpeed * Time.deltaTime) / (2 * HexMetrics.innerRadius); for (int i = 0; i < attackAnimObjs.Count; i++) { attackAnimObjs[i].position = VisualInfo.GetBezierCurvePoint(dijkPoints[i], progress); } if (progress >= 1) { for (int i = 0; i < attackAnimObjs.Count; i++) { Destroy(attackAnimObjs[i].gameObject); //enemiesToKill[i].Die(); } yield return(true); break; } yield return(null); } }
private void WriteResponse(StringBuilder contentBuilder, PublishmentSystemInfo publishmentSystemInfo, PageInfo pageInfo, ContextInfo contextInfo, VisualInfo visualInfo) { StlUtility.ParseStl(publishmentSystemInfo, pageInfo, contextInfo, contentBuilder, visualInfo.FilePath, true);//生成页面 Response.ContentEncoding = Encoding.GetEncoding(publishmentSystemInfo.Additional.Charset); Response.Write(contentBuilder.ToString()); }