Pong highscore frontend.

This commit is contained in:
Michael 2017-05-02 16:03:32 -04:00
parent 73402c31a6
commit 13ad0ff4f3
5 changed files with 114 additions and 0 deletions

View file

@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using Project_Unite.Models;
namespace Project_Unite.Controllers
{
public class StatsController : Controller
{
// GET: Stats
public ActionResult Pong(int id = 1)
{
var db = new ApplicationDbContext();
var highscores = new List<PongHighscore>();
foreach(var user in db.Users)
{
highscores.Add(new PongHighscore
{
UserId = user.Id,
Level = user.Pong_HighestLevel,
CodepointsCashout = user.Pong_HighestCodepointsCashout
});
}
int pagecount = highscores.GetPageCount(10);
if (id > pagecount || id < 1)
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
var pages = highscores.OrderByDescending(x=>x.Level).ToArray().GetItemsOnPage(id, 10);
var model = new PongStatsViewModel
{
Highscores = pages,
CurrentPage = id,
PageCount = 10
};
return View(model);
}
}
}

View file

@ -39,6 +39,10 @@ public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<Applicat
}
public int Pong_HighestLevel { get; set; }
public int Pong_HighestCodepointsCashout { get; set; }
public ForumPost[] UnreadPosts
{
get

View file

@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Project_Unite.Models
{
public class PongHighscore
{
public string UserId { get; set; }
public int CodepointsCashout { get; set; }
public int Level { get; set; }
}
public class PongStatsViewModel
{
public int PageCount { get; set; }
public int CurrentPage { get; set; }
public List<PongHighscore> Highscores { get; set; }
}
}

View file

@ -263,6 +263,7 @@
<Compile Include="Controllers\OAuth2Controller.cs" />
<Compile Include="Controllers\ProfilesController.cs" />
<Compile Include="Controllers\SkinsController.cs" />
<Compile Include="Controllers\StatsController.cs" />
<Compile Include="Controllers\WikiControllerController.cs" />
<Compile Include="Global.asax.cs">
<DependentUpon>Global.asax</DependentUpon>
@ -444,6 +445,7 @@
<Compile Include="Models\IdentityModels.cs" />
<Compile Include="Models\ManageViewModels.cs" />
<Compile Include="Models\Notification.cs" />
<Compile Include="Models\PongHighscore.cs" />
<Compile Include="Models\Role.cs" />
<Compile Include="Models\SearchModels.cs" />
<Compile Include="Models\Skin.cs" />
@ -583,6 +585,7 @@
<Content Include="Views\Bugs\ViewCategory.cshtml" />
<Content Include="Views\Bugs\ViewBug.cshtml" />
<Content Include="Views\Bugs\PostBug.cshtml" />
<Content Include="Views\Stats\Pong.cshtml" />
</ItemGroup>
<ItemGroup>
<Folder Include="App_Data\" />

View file

@ -0,0 +1,42 @@
@model Project_Unite.Models.PongStatsViewModel
@{
ViewBag.Title = "Pong - Highscores";
}
<h2>Pong highscores</h2>
<p>One of the apps in ShiftOS is a recreation of Pong where the game is split into levels that are 60 minutes in length.</p>
<p>You can earn Codepoints in Pong by either beating the AI, or surviving a level. You can cash out at the end of the level. Just be ware, if the ball gets past you, you lose all those Codepoints.</p>
<p>Below is a list of everyone's Pong scores - the top players at the top of the list.</p>
<table class="table-condensed">
<tr>
<th>User</th>
<th>Level</th>
<th>Codepoints</th>
</tr>
@foreach(var entry in Model.Highscores)
{
<tr>
<td>@Html.UserLink(entry.UserId)</td>
<td>@entry.Level</td>
<td>@entry.CodepointsCashout CP</td>
</tr>
}
</table>
<ul class="pagination">
@for(int i = 1; i <= Model.PageCount; i++)
{
@if (i == Model.CurrentPage)
{
<li class="active">@Html.ActionLink(i.ToString(), "Pong", "Stats", null, new { id = i })</li>
}
else
{
<li>@Html.ActionLink(i.ToString(), "Pong", "Stats", null, new { id = i })</li>
}
}
</ul>