add map history

This commit is contained in:
Michael Simard
2021-01-11 09:35:42 -06:00
parent 83e99a8ae5
commit 38453355dd
3 changed files with 58 additions and 1 deletions

View File

@@ -24,6 +24,8 @@ struct StatsController: RouteCollection {
statsRoute.post("logMatch", use: logMatch)
statsRoute.get("history","page",":page", use: history)
statsRoute.get("history", use: history)
statsRoute.get("maps", use: mapRecords)
}
@@ -626,6 +628,45 @@ struct StatsController: RouteCollection {
// }
}
func mapRecords(req: Request) throws -> EventLoopFuture<[MapRecord]> {
return Match.query(on: req.db).all().map { (matches) -> [MapRecord] in
let mapStats = self.getMapStats(matches: matches)
let sortedMaps = self.mapsSortedByBest(records: mapStats)
let records = sortedMaps.map { (mapId) -> MapRecord in
return MapRecord(map: MapData.allMaps[mapId]!, stats: mapStats[mapId]!, ratio:mapStats[mapId]!.winLossRatio)
}
var wins:Double = 0
var loss:Double = 0
for record in records {
print("\(record.map.name) \(record.stats.record) \(record.ratio)")
wins = wins + Double(record.stats.totalWins)
loss = loss + Double(record.stats.totalLosses)
}
let ratio = wins / loss
return records
}
}
func mapsSortedByBest (records :[ Int:Stats] ) -> [ Int ]
{
return records.keys.sorted { (map1, map2) -> Bool in
return records[map1]?.getRatioDouble() ?? 0.0 < records[map2]?.getRatioDouble() ?? 0.0
}.reversed()
}
func getBestMap (records :[ Int:Stats] ) -> Int {
let maps = records.keys.sorted { (map1, map2) -> Bool in

View File

@@ -7,7 +7,7 @@
import Foundation
struct Map: Hashable {
struct Map: Hashable, Codable {
var id: Int
var name:String
var imageName:String

View File

@@ -0,0 +1,16 @@
//
// MapRecord.swift
// App
//
// Created by Michael Simard on 1/10/21.
//
import Foundation
import Vapor
import Fluent
struct MapRecord: Content {
var map:Map
var stats:Stats
var ratio:String
}