19 changed files with 178 additions and 246 deletions
Binary file not shown.
@ -1,57 +0,0 @@
|
||||
@page "/notes/coop-holdout" |
||||
|
||||
<div class="page"> |
||||
<PageContainerComponent> |
||||
<LayoutNoteContentComponent> |
||||
@if (note.IsPreAlpha) { |
||||
<AlertComponent> |
||||
<Title>Pre Alpha</Title> |
||||
<Message>This note refers to content that is in pre-alpha. It won't be accurate in future updates to IGP.</Message> |
||||
</AlertComponent> |
||||
} |
||||
|
||||
<div class="paper"> |
||||
<div style="display: flex; flex-direction: row;"> |
||||
<span style="font-weight: bold; font-style:italic;">@note.Section</span> |
||||
<div style="flex: 1"></div> |
||||
<span style="font-weight: bold; font-style:italic;">Last Updated on @note.LastUpdated</span> |
||||
</div> |
||||
<div> |
||||
<div id="@note.DEPRECATED_Id()" style="font-weight: bold; font-size: 1.4rem;">@note.Name</div> |
||||
<div style="white-space:break-spaces;">@((MarkupString)note.Description)</div> |
||||
</div> |
||||
<br/> |
||||
</div> |
||||
|
||||
</LayoutNoteContentComponent> |
||||
</PageContainerComponent> |
||||
|
||||
</div> |
||||
<style> |
||||
.page { |
||||
display: flex; |
||||
flex-direction: column; |
||||
padding: 16px; |
||||
gap: 16px; |
||||
|
||||
} |
||||
|
||||
.paper { |
||||
padding: 24px; |
||||
overflow-x:hidden; |
||||
background-color:var(--paper); |
||||
} |
||||
|
||||
@@media only screen and (max-width: 1025px) { |
||||
.page { |
||||
display: flex; |
||||
flex-direction: column; |
||||
padding: 2px; |
||||
gap: 2px; |
||||
} |
||||
} |
||||
</style> |
||||
|
||||
@code { |
||||
readonly NoteModel note = NoteModel.Notes["79d80c48-67d4-4945-a3ed-7c7803b5f6b5"]; |
||||
} |
||||
@ -1,50 +0,0 @@
|
||||
--- |
||||
href: /notes/example title: Example |
||||
--- |
||||
|
||||
Information contained in this note is based on this <a href="https://www.youtube.com/watch?v=XkAgOCIz3DE">YouTube, |
||||
Reference Video</a>. |
||||
|
||||
<img width="420" style="margin: auto; border:2px solid black;" src="notes/coop-holdout/OpenBases.png" /> |
||||
<div style="margin: auto; text-align:center;"><b>Open Bases</b></div> |
||||
|
||||
On this map, you start with around 500 alloy and 100 ether. You are probably going to want to expand to the bases in the |
||||
marked order, given the density of defending enemies shown on the minimap. |
||||
|
||||
You should know that these are all standard bases that will mine out in 10 minutes. Giving a total of 18,000 alloy and |
||||
7,200 ether. Plus an additional 6,000 alloy from the starting Bastion. In the late game, you will have zero income, |
||||
aside from pyre. |
||||
|
||||
|
||||
<img width="420" style="margin: auto; border:2px solid black;" src="notes/coop-holdout/EnemySpawns.png" /> |
||||
<div style="margin: auto; text-align:center;"><b>Enemy Spawn Areas</b></div> |
||||
|
||||
The first enemy wave will spawn at 1 minute, and every 2 minutes after will spawn a new wave. These waves are small, and |
||||
won't be a threat until the 15-minute mark. |
||||
|
||||
<img width="420" style="margin: auto; border:2px solid black;" src="notes/coop-holdout/DefendPoints.png" /> |
||||
<div style="margin: auto; text-align:center;"><b>Pyre Towers</b></div> |
||||
|
||||
You have till then to take all 5 of your bases, and set a defensive line at the outer Pyre towers. |
||||
|
||||
The spawn size post the 15-minute mark does become rather large. You may be tempted to fall back and abandon forward |
||||
bases, but the waves will stack if not dealt with. Eventually, more units than the game can handle, so ensure outer pyre |
||||
towers are held. Try to take them back if you lose them. |
||||
|
||||
<img width="420" style="margin: auto; border:2px solid black;" src="notes/coop-holdout/Pyre.png" /> |
||||
<div style="margin: auto; text-align:center;"><b>Pyre Camps</b></div> |
||||
|
||||
When you have the time you are also going to need to take the 4 pyre camps spread around the map. It will probably be |
||||
ideal to split your army in half, to protect your two outer towers, and just have a small force of Ichors or Dervishes |
||||
to clear the camps quickly. |
||||
|
||||
<img width="420" style="margin: auto; border:2px solid black;" src="notes/coop-holdout/Multipliers.png" /> |
||||
<div style="margin: auto; text-align:center;"><b>Multipliers</b></div> |
||||
|
||||
If you have additional free time, you can take out the Altar of the Worthys on the edges of the map to double your |
||||
current more multiplier: 2, 4, 8, to the max of 16. Amber Wombs will also spawn, with a pack of enemies to defend them. |
||||
Killing an Amber Womb will increase your score, but also spawn random friendly and enemy units. With this spawning, it's |
||||
possible to go past the supply cap. |
||||
|
||||
But really, these optional objectives can be completely ignored, so you can just focus on surviving for as long as |
||||
possible. |
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@
|
||||
[{"Id":1,"CreatedDate":"2022-03-30T00:00:00","UpdatedDate":"2022-03-30T00:00:00","Name":"Setup","Section":"Getting Started","Description":"# Setup\n\nThis document will contain general setup notes for the project.\n\n## Prerequisite\n\nTo understand content in this document, it is recommended to have some software development experience. Particularly using GitHub and Visual Studio.\n\n- [GitHub Documentation](https://docs.github.com/en/get-started)\n\n- [Visual Studio Documentation](https://visualstudio.microsoft.com/vs/getting-started/)\n\nTo make updates to this website, it is recommended to understand HTML/CSS and C#.\n\n- [C# Documentation](https://docs.microsoft.com/en-us/dotnet/csharp/)\n- [Mozilla\u0027s HTML Documentation](https://developer.mozilla.org/en-US/docs/Learn/HTML/Introduction_to_HTML/Getting_started)\n- [W3SCHOOLS\u0027 HTML Documentation](https://www.w3schools.com/html/)\n\nFurther, you should understand the product and clients this website is for. So it is recommended to play \u0022Immortal: Gates of Pyre\u0022.\n- [IGP Website](https://gatesofpyre.com/) \n - **Please Note:** This product currently has restricted access with it is in a pre-alpha state. If you are not aware or interested in IGP, I recommend to wait for product release. Otherwise, check out their discord for steps of getting access.\n\n\n## Installation\n\nDownload and install Visual Studio preview.\n\nhttps://visualstudio.microsoft.com/vs/preview/\n\nWhen installing, ensure you have selected \u0022Workloads | **ASP.NET and web development**\u0022 and \u0022Individual components | **.NET WebAssembly build tools**\u0022.\n\n## Download Project\n\nGet this project from GitHub. \n\n\u0060\u0060\u0060bash\ngit clone https://github.com/JonathanMcCaffrey/IGP-Fan-Reference.git\n\u0060\u0060\u0060\n\n## Project Tree\n\u0060\u0060\u0060\nC:.\n\u251C\u2500\u2500\u2500.github\n\u2502 \u2514\u2500\u2500\u2500workflows # Workflows to deploy website\n\u251C\u2500\u2500\u2500Components # Components used be website\n\u251C\u2500\u2500\u2500Contexts\n\u251C\u2500\u2500\u2500IGP\n\u2502 \u251C\u2500\u2500\u2500Pages # Website pages\n\u2502 \u2514\u2500\u2500\u2500wwwroot \n\u2502 \u251C\u2500\u2500\u2500css\n\u2502 \u251C\u2500\u2500\u2500generated # Files generated by IGP_Convert. Do not edit\n\u2502 \u251C\u2500\u2500\u2500image\n\u2502 \u251C\u2500\u2500\u2500javascript\n\u2502 \u2514\u2500\u2500\u2500markdown\n\u2502 \u2514\u2500\u2500\u2500documentation # Documentation files\n\u251C\u2500\u2500\u2500IGP_Convert # Converts SQL into JSON for Blazor Wasm\n\u251C\u2500\u2500\u2500Model # Data models\n\u2514\u2500\u2500\u2500Services # Web services\n\u0060\u0060\u0060\n\n## Running\n\n- Open \u0060IGP/IGP.sln\u0060. \n- Click the green RUN button in Visual Studio.\n- A local copy of the IGP Website should have launched on your machine.\n\n\n## Publishing\n\n**Important:** publishing new version of the website will not occur until issue [39528](https://github.com/dotnet/aspnetcore/issues/39528) in dotnet/aspnetcore is resolved.\n\n\nCode committed to the \u0060main\u0060 branch will automatically be deployed to [production](https://www.igpfanreference.com/).\n\nCode committed to the \u0060develop\u0060 branch will automatically be deployed to [development](https://calm-mud-04916b210.1.azurestaticapps.net/).\n\n*This is handle via the files in \u0060.github/workflow\u0060. Look into these [GitHub Actions Documents](https://docs.github.com/en/actions) if curious about how this CI system works.*\n\n\n## Troubleshooting\n\nNothing that some good internet searches cannot resolved. But you can also contact the project maintainer on [IGP Fan Reference](https://discord.gg/uMq8bMGeeN) Discord.\n\n"}] |
||||
@ -0,0 +1 @@
|
||||
[{"Id":1,"LastUpdated":"2022-02-18T00:00:00","Name":"Coop Holdout, Some distant place (Nuath)","Section":"Coop","Description":"Information contained in this note is based on this \u003Ca href=\u0022https://www.youtube.com/watch?v=XkAgOCIz3DE\u0022\u003EYouTube, Reference Video\u003C/a\u003E.\n\n\u003Cimg width=\u0022420\u0022 style=\u0022margin: auto; border:2px solid black;\u0022 src=\u0022image/notes/coop-holdout/OpenBases.png\u0022 /\u003E\n\u003Cdiv style=\u0022margin: auto; text-align:center;\u0022\u003E\u003Cb\u003EOpen Bases\u003C/b\u003E\u003C/div\u003E\n\nOn this map, you start with around 500 alloy and 100 ether. You are probably going to want to expand to the bases in the marked order, given the density of defending enemies shown on the minimap.\n\nYou should know that these are all standard bases that will mine out in 10 minutes. Giving a total of 18,000 alloy and 7,200 ether. Plus an additional 6,000 alloy from the starting Bastion. In the late game, you will have zero income, aside from pyre.\n\n\n\u003Cimg width=\u0022420\u0022 style=\u0022margin: auto; border:2px solid black;\u0022 src=\u0022image/notes/coop-holdout/EnemySpawns.png\u0022 /\u003E\n\u003Cdiv style=\u0022margin: auto; text-align:center;\u0022\u003E\u003Cb\u003EEnemy Spawn Areas\u003C/b\u003E\u003C/div\u003E\n\nThe first enemy wave will spawn at 1 minute, and every 2 minutes after will spawn a new wave. These waves are small, and won\u0027t be a threat until the 15-minute mark.\n\n\u003Cimg width=\u0022420\u0022 style=\u0022margin: auto; border:2px solid black;\u0022 src=\u0022image/notes/coop-holdout/DefendPoints.png\u0022 /\u003E\n\u003Cdiv style=\u0022margin: auto; text-align:center;\u0022\u003E\u003Cb\u003EPyre Towers\u003C/b\u003E\u003C/div\u003E\n\nYou have till then to take all 5 of your bases, and set a defensive line at the outer Pyre towers.\n\nThe spawn size post the 15-minute mark does become rather large. You may be tempted to fall back and abandon forward bases, but the waves will stack if not dealt with. Eventually, more units than the game can handle, so ensure outer pyre towers are held. Try to take them back if you lose them.\n\n\u003Cimg width=\u0022420\u0022 style=\u0022margin: auto; border:2px solid black;\u0022 src=\u0022image/notes/coop-holdout/Pyre.png\u0022 /\u003E\n\u003Cdiv style=\u0022margin: auto; text-align:center;\u0022\u003E\u003Cb\u003EPyre Camps\u003C/b\u003E\u003C/div\u003E\n\nWhen you have the time you are also going to need to take the 4 pyre camps spread around the map. It will probably be ideal to split your army in half, to protect your two outer towers, and just have a small force of Ichors or Dervishes to clear the camps quickly.\n\n\u003Cimg width=\u0022420\u0022 style=\u0022margin: auto; border:2px solid black;\u0022 src=\u0022image/notes/coop-holdout/Multipliers.png\u0022 /\u003E\n\u003Cdiv style=\u0022margin: auto; text-align:center;\u0022\u003E\u003Cb\u003EMultipliers\u003C/b\u003E\u003C/div\u003E\n\nIf you have additional free time, you can take out the Altar of the Worthys on the edges of the map to double your current more multiplier: 2, 4, 8, to the max of 16. Amber Wombs will also spawn, with a pack of enemies to defend them. Killing an Amber Womb will increase your score, but also spawn random friendly and enemy units. With this spawning, it\u0027s possible to go past the supply cap.\n\n\nBut really, these optional objectives can be completely ignored, so you can just focus on surviving for as long as possible.","IsHidden":false,"IsPreAlpha":false}] |
||||
@ -1 +1 @@
|
||||
[{"Id":1,"Name":"Database UX Patch","Date":"2022-03-13T00:00:00","ChangeModels":[],"Important":"False"},{"Id":2,"Name":"Thrum Stats Hotfix","Date":"2022-03-12T00:00:00","ChangeModels":[],"Important":"False"},{"Id":3,"Name":"Memory Tester Patch","Date":"2022-03-01T00:00:00","ChangeModels":[],"Important":"False"},{"Id":4,"Name":"Hide Pyre Hotfix","Date":"2022-02-20T00:00:00","ChangeModels":[],"Important":"False"},{"Id":5,"Name":"Stream Patch","Date":"2022-02-20T00:00:00","ChangeModels":[],"Important":"False"},{"Id":6,"Name":"Agile UI Hotfix","Date":"2022-02-20T00:00:00","ChangeModels":[],"Important":"False"},{"Id":7,"Name":"Armor Patch","Date":"2022-02-19T00:00:00","ChangeModels":[],"Important":"False"},{"Id":8,"Name":"Home Page Patch","Date":"2022-02-19T00:00:00","ChangeModels":[],"Important":"False"},{"Id":9,"Name":"Mobile Menu Hotfix 2","Date":"2022-02-19T00:00:00","ChangeModels":[],"Important":"False"},{"Id":10,"Name":"Mobile Menu Hotfix","Date":"2022-02-19T00:00:00","ChangeModels":[],"Important":"False"},{"Id":11,"Name":"Mobile Menu Patch","Date":"2022-02-19T00:00:00","ChangeModels":[],"Important":"False"},{"Id":12,"Name":"0.0.6.8375a Patch","Date":"2022-02-18T00:00:00","ChangeModels":[],"Important":"True"},{"Id":13,"Name":"Google Tracking Hotfix","Date":"2022-02-18T00:00:00","ChangeModels":[],"Important":"False"},{"Id":14,"Name":"Privacy Policy Patch","Date":"2022-02-17T00:00:00","ChangeModels":[],"Important":"False"},{"Id":15,"Name":"Home Page Quick Hotfix","Date":"2022-02-16T00:00:00","ChangeModels":[],"Important":"False"},{"Id":16,"Name":"Early Agile Patch","Date":"2022-02-16T00:00:00","ChangeModels":[],"Important":"False"},{"Id":17,"Name":"Form Text Rendering Hotfix","Date":"2022-02-15T00:00:00","ChangeModels":[],"Important":"False"},{"Id":18,"Name":"Reducing Timing Interval Hotfix","Date":"2022-02-15T00:00:00","ChangeModels":[],"Important":"False"},{"Id":19,"Name":"Changelog Patch","Date":"2022-02-14T00:00:00","ChangeModels":[],"Important":"False"},{"Id":20,"Name":"SQL Patch","Date":"2022-03-26T00:00:00","ChangeModels":[],"Important":"False"},{"Id":21,"Name":"Stream Patch","Date":"2022-03-30T00:00:00","ChangeModels":[],"Important":"False"},{"Id":22,"Name":"0.0.6.8900a Patch","Date":"2022-03-30T00:00:00","ChangeModels":[],"Important":"True"}] |
||||
[{"Id":1,"Name":"Database UX Patch","Date":"2022-03-13T00:00:00","ChangeModels":[],"Important":"False"},{"Id":2,"Name":"Thrum Stats Hotfix","Date":"2022-03-12T00:00:00","ChangeModels":[],"Important":"False"},{"Id":3,"Name":"Memory Tester Patch","Date":"2022-03-01T00:00:00","ChangeModels":[],"Important":"False"},{"Id":4,"Name":"Hide Pyre Hotfix","Date":"2022-02-20T00:00:00","ChangeModels":[],"Important":"False"},{"Id":5,"Name":"Stream Patch","Date":"2022-02-20T00:00:00","ChangeModels":[],"Important":"False"},{"Id":6,"Name":"Agile UI Hotfix","Date":"2022-02-20T00:00:00","ChangeModels":[],"Important":"False"},{"Id":7,"Name":"Armor Patch","Date":"2022-02-19T00:00:00","ChangeModels":[],"Important":"False"},{"Id":8,"Name":"Home Page Patch","Date":"2022-02-19T00:00:00","ChangeModels":[],"Important":"False"},{"Id":9,"Name":"Mobile Menu Hotfix 2","Date":"2022-02-19T00:00:00","ChangeModels":[],"Important":"False"},{"Id":10,"Name":"Mobile Menu Hotfix","Date":"2022-02-19T00:00:00","ChangeModels":[],"Important":"False"},{"Id":11,"Name":"Mobile Menu Patch","Date":"2022-02-19T00:00:00","ChangeModels":[],"Important":"False"},{"Id":12,"Name":"0.0.6.8375a Patch","Date":"2022-02-18T00:00:00","ChangeModels":[],"Important":"True"},{"Id":13,"Name":"Google Tracking Hotfix","Date":"2022-02-18T00:00:00","ChangeModels":[],"Important":"False"},{"Id":14,"Name":"Privacy Policy Patch","Date":"2022-02-17T00:00:00","ChangeModels":[],"Important":"False"},{"Id":15,"Name":"Home Page Quick Hotfix","Date":"2022-02-16T00:00:00","ChangeModels":[],"Important":"False"},{"Id":16,"Name":"Early Agile Patch","Date":"2022-02-16T00:00:00","ChangeModels":[],"Important":"False"},{"Id":17,"Name":"Form Text Rendering Hotfix","Date":"2022-02-15T00:00:00","ChangeModels":[],"Important":"False"},{"Id":18,"Name":"Reducing Timing Interval Hotfix","Date":"2022-02-15T00:00:00","ChangeModels":[],"Important":"False"},{"Id":19,"Name":"Changelog Patch","Date":"2022-02-14T00:00:00","ChangeModels":[],"Important":"False"},{"Id":20,"Name":"SQL Patch","Date":"2022-03-26T00:00:00","ChangeModels":[],"Important":"False"},{"Id":21,"Name":"Stream Patch","Date":"2022-03-30T00:00:00","ChangeModels":[],"Important":"False"},{"Id":22,"Name":"0.0.6.8900a Patch","Date":"2022-03-30T00:00:00","ChangeModels":[],"Important":"True"},{"Id":23,"Name":"Database Links Patch","Date":"2022-04-01T00:00:00","ChangeModels":[],"Important":"False"}] |
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,13 @@
|
||||
using System; |
||||
|
||||
namespace Model.Documentation; |
||||
|
||||
public class DocumentationModel |
||||
{ |
||||
public int Id { get; set; } |
||||
public DateTime CreatedDate { get; set; } |
||||
public DateTime UpdatedDate { get; set; } |
||||
public string Name { get; set; } |
||||
public string Section { get; set; } |
||||
public string Description { get; set; } |
||||
} |
||||
@ -0,0 +1,68 @@
|
||||
|
||||
|
||||
using System.Net.Http.Json; |
||||
using Model.Immortal.Notes; |
||||
using Model.Work.Git; |
||||
|
||||
#if NO_SQL |
||||
|
||||
#else |
||||
using Contexts; |
||||
using Microsoft.EntityFrameworkCore; |
||||
#endif |
||||
|
||||
namespace Services.Work; |
||||
|
||||
public class NoteService : INoteService { |
||||
private readonly HttpClient httpClient; |
||||
|
||||
private bool isLoaded; |
||||
|
||||
|
||||
private event Action _onChange; |
||||
|
||||
private void NotifyDataChanged() { |
||||
_onChange?.Invoke(); |
||||
} |
||||
|
||||
public NoteService(HttpClient httpClient) { |
||||
this.httpClient = httpClient; |
||||
} |
||||
|
||||
public List<NoteModel> NoteModels { get; set; } |
||||
|
||||
|
||||
public void Subscribe(Action action) { |
||||
_onChange += action; |
||||
} |
||||
|
||||
public void Unsubscribe(Action action) { |
||||
_onChange -= action; |
||||
} |
||||
|
||||
public bool IsLoaded() { |
||||
return isLoaded; |
||||
} |
||||
|
||||
|
||||
|
||||
public async Task Load() { |
||||
|
||||
if (isLoaded) { |
||||
return; |
||||
} |
||||
|
||||
NoteModels = (await httpClient.GetFromJsonAsync<NoteModel[]>("generated/NoteModels.json")).ToList(); |
||||
|
||||
|
||||
isLoaded = true; |
||||
|
||||
NotifyDataChanged(); |
||||
} |
||||
|
||||
|
||||
public void Update() { |
||||
NotifyDataChanged(); |
||||
} |
||||
|
||||
} |
||||
Loading…
Reference in new issue