From e7be495f7f3600ed8f0887345105ec54c2a6d137 Mon Sep 17 00:00:00 2001 From: ntr Date: Wed, 23 Aug 2023 12:56:28 +1000 Subject: [PATCH 1/7] server init --- Assets/Src/ShipControls.cs | 6 +-- Assets/Src/UI/ControlsUI.cs | 2 +- Server/.env | 3 ++ Server/.gitignore | 47 ++++++++++++++++++++++ Server/Controllers/CompletionController.cs | 20 +++++++++ Server/Dockerfile | 15 +++++++ Server/Models/Completion.cs | 9 +++++ Server/Program.cs | 21 ++++++++++ Server/Properties/launchSettings.json | 41 +++++++++++++++++++ Server/Repositories/SpaceRaceDbContext.cs | 16 ++++++++ Server/appsettings.Development.json | 11 +++++ Server/appsettings.json | 9 +++++ Server/docker-compose.yaml | 18 +++++++++ TODO.md | 1 - 14 files changed, 213 insertions(+), 6 deletions(-) create mode 100644 Server/.env create mode 100644 Server/.gitignore create mode 100644 Server/Controllers/CompletionController.cs create mode 100644 Server/Dockerfile create mode 100644 Server/Models/Completion.cs create mode 100644 Server/Program.cs create mode 100644 Server/Properties/launchSettings.json create mode 100644 Server/Repositories/SpaceRaceDbContext.cs create mode 100644 Server/appsettings.Development.json create mode 100644 Server/appsettings.json create mode 100644 Server/docker-compose.yaml diff --git a/Assets/Src/ShipControls.cs b/Assets/Src/ShipControls.cs index 96b3bef..e72320c 100755 --- a/Assets/Src/ShipControls.cs +++ b/Assets/Src/ShipControls.cs @@ -28,6 +28,8 @@ public class ShipControls : MonoBehaviour { public PowerUnit powerUnit = new(); + public float Speed => rigidBody.velocity.magnitude; + void Start() { Cursor.lockState = CursorLockMode.Locked; rigidBody = GetComponent(); @@ -160,10 +162,6 @@ public class ShipControls : MonoBehaviour { timing.StartTimer(); } - public float Speed() { - return rigidBody.velocity.magnitude; - } - public void Damage(float amt, string src) { Debug.Log($"Damage {amt} from {src}"); diff --git a/Assets/Src/UI/ControlsUI.cs b/Assets/Src/UI/ControlsUI.cs index 2c20050..0640ed5 100644 --- a/Assets/Src/UI/ControlsUI.cs +++ b/Assets/Src/UI/ControlsUI.cs @@ -93,7 +93,7 @@ public class ControlsUI : MonoBehaviour { return; } - speed.text = $"{ship.Speed():0}"; + speed.text = $"{ship.Speed:0}"; shield.detail = ship.powerUnit.ShieldPct switch { "100" => "", string pct => pct, diff --git a/Server/.env b/Server/.env new file mode 100644 index 0000000..c40525f --- /dev/null +++ b/Server/.env @@ -0,0 +1,3 @@ +POSTGRES_USER="spacerace" +POSTGRES_DB="spacerace" +POSTGRES_PASSWORD="zoomzoom" diff --git a/Server/.gitignore b/Server/.gitignore new file mode 100644 index 0000000..0249a7c --- /dev/null +++ b/Server/.gitignore @@ -0,0 +1,47 @@ +db/ + +# ----------------- + +*.swp +*.*~ +project.lock.json +.DS_Store +*.pyc +nupkg/ + +# Visual Studio Code +.vscode/ + +# Rider +.idea/ + +# Visual Studio +.vs/ + +# Fleet +.fleet/ + +# Code Rush +.cr/ + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +build/ +bld/ +[Bb]in/ +[Oo]bj/ +[Oo]ut/ +msbuild.log +msbuild.err +msbuild.wrn \ No newline at end of file diff --git a/Server/Controllers/CompletionController.cs b/Server/Controllers/CompletionController.cs new file mode 100644 index 0000000..7fb8dbe --- /dev/null +++ b/Server/Controllers/CompletionController.cs @@ -0,0 +1,20 @@ +using Microsoft.AspNetCore.Mvc; + +using Server.Models; + +namespace Server.Controllers; + +[ApiController] +[Route("[controller]")] +public class CompletionController : ControllerBase { + private readonly ILogger _logger; + + public CompletionController(ILogger logger) { + _logger = logger; + } + + [HttpGet(Name = "GetCompletion")] + public IEnumerable Get() { + return Enumerable.Range(1, 5).Select(index => new CompletionDTO()).ToArray(); + } +} diff --git a/Server/Dockerfile b/Server/Dockerfile new file mode 100644 index 0000000..bd42c23 --- /dev/null +++ b/Server/Dockerfile @@ -0,0 +1,15 @@ +FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build-env +WORKDIR /App + +# stops restore during build +COPY Server.csproj ./ +RUN dotnet restore + +COPY . ./ +RUN dotnet publish -c Release -o out + +# Build runtime image +FROM mcr.microsoft.com/dotnet/aspnet:7.0 +WORKDIR /App +COPY --from=build-env /App/out . +ENTRYPOINT ["dotnet", "DotNet.Docker.dll"] diff --git a/Server/Models/Completion.cs b/Server/Models/Completion.cs new file mode 100644 index 0000000..2dfe597 --- /dev/null +++ b/Server/Models/Completion.cs @@ -0,0 +1,9 @@ +namespace Server.Models; + +public class CompletionDTO { + public DateTimeOffset Date { get; set; } + public Guid Id { get; set; } + public Guid UserId { get; set; } + public string Map { get; set; } + public double Time { get; set; } +} diff --git a/Server/Program.cs b/Server/Program.cs new file mode 100644 index 0000000..77c889c --- /dev/null +++ b/Server/Program.cs @@ -0,0 +1,21 @@ +using Microsoft.EntityFrameworkCore; + +using Server; + +var builder = WebApplication.CreateBuilder(args); + +builder.Services.AddControllers(); +builder.Services.AddDbContextPool(options => { + options.UseNpgsql( + builder.Configuration.GetConnectionString("SpaceRace"), + assembly => assembly.MigrationsAssembly(typeof(SpaceRaceDbContext).Assembly.FullName) + ); +}); + +var app = builder.Build(); + +app.UseHttpsRedirection(); +app.UseAuthorization(); +app.MapControllers(); + +app.Run(); diff --git a/Server/Properties/launchSettings.json b/Server/Properties/launchSettings.json new file mode 100644 index 0000000..5c40582 --- /dev/null +++ b/Server/Properties/launchSettings.json @@ -0,0 +1,41 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:58932", + "sslPort": 44337 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "http://localhost:5212", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "https://localhost:7246;http://localhost:5212", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Server/Repositories/SpaceRaceDbContext.cs b/Server/Repositories/SpaceRaceDbContext.cs new file mode 100644 index 0000000..adf29bc --- /dev/null +++ b/Server/Repositories/SpaceRaceDbContext.cs @@ -0,0 +1,16 @@ +using Microsoft.EntityFrameworkCore; + +namespace Server; + +public class SpaceRaceDbContext : DbContext { + public DbSet Completions { get; set; } + public SpaceRaceDbContext(DbContextOptions options) : base(options) {} +} + +public class Completion { + public DateTimeOffset Date { get; set; } + public Guid Id { get; set; } + public Guid UserId { get; set; } + public string Map { get; set; } + public double Time { get; set; } +} diff --git a/Server/appsettings.Development.json b/Server/appsettings.Development.json new file mode 100644 index 0000000..dc27707 --- /dev/null +++ b/Server/appsettings.Development.json @@ -0,0 +1,11 @@ +{ + "ConnectionStrings": { + "SpaceRace": "Server=pg;Port=5432;Database=spacerace;User Id=spacerace;Password=zoomzoom", + }, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/Server/appsettings.json b/Server/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/Server/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/Server/docker-compose.yaml b/Server/docker-compose.yaml new file mode 100644 index 0000000..b95cc19 --- /dev/null +++ b/Server/docker-compose.yaml @@ -0,0 +1,18 @@ +services: + pg: + image: postgres:latest + environment: + POSTGRES_USER: '${POSTGRES_USER}' + POSTGRES_DB: '${POSTGRES_DB}' + POSTGRES_PASSWORD: '${POSTGRES_PASSWORD}' + ports: + - '45432:5432' + volumes: + - "./db:/var/lib/postgresql/data" + + server: + environment: + CONNECTIONSTRINGS__SPACERACE: "Server=pg;Port=5432;Database=${POSTGRES_DB};User Id=${POSTGRES_USER};Password=${POSTGRES_PASSWORD}" + build: + context: . + dockerfile: ./Dockerfile diff --git a/TODO.md b/TODO.md index 055b6db..c5c489c 100644 --- a/TODO.md +++ b/TODO.md @@ -1,7 +1,6 @@ # SpaceRace! - controls UI - - output boost indicators - controls diagram From a69a376325a4e4942e9b6f624a0b6e1f24a17589 Mon Sep 17 00:00:00 2001 From: ntr Date: Wed, 23 Aug 2023 13:06:00 +1000 Subject: [PATCH 2/7] boost cooldowns --- Server/Controllers/CompletionController.cs | 12 ++++++++++-- Server/Dockerfile | 2 +- Server/docker-compose.yaml | 20 ++++++++++++++++++-- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/Server/Controllers/CompletionController.cs b/Server/Controllers/CompletionController.cs index 7fb8dbe..b410211 100644 --- a/Server/Controllers/CompletionController.cs +++ b/Server/Controllers/CompletionController.cs @@ -8,13 +8,21 @@ namespace Server.Controllers; [Route("[controller]")] public class CompletionController : ControllerBase { private readonly ILogger _logger; + private SpaceRaceDbContext _db; - public CompletionController(ILogger logger) { + public CompletionController(ILogger logger, SpaceRaceDbContext db) { _logger = logger; + _db = db; } [HttpGet(Name = "GetCompletion")] public IEnumerable Get() { - return Enumerable.Range(1, 5).Select(index => new CompletionDTO()).ToArray(); + return _db.Completions.Select(c => new CompletionDTO { + Id = c.Id, + UserId = c.UserId, + Map = c.Map, + Time = c.Time, + Date = c.Date, + }); } } diff --git a/Server/Dockerfile b/Server/Dockerfile index bd42c23..7e1e498 100644 --- a/Server/Dockerfile +++ b/Server/Dockerfile @@ -12,4 +12,4 @@ RUN dotnet publish -c Release -o out FROM mcr.microsoft.com/dotnet/aspnet:7.0 WORKDIR /App COPY --from=build-env /App/out . -ENTRYPOINT ["dotnet", "DotNet.Docker.dll"] +ENTRYPOINT ["dotnet", "Server.dll"] diff --git a/Server/docker-compose.yaml b/Server/docker-compose.yaml index b95cc19..cfbc6a1 100644 --- a/Server/docker-compose.yaml +++ b/Server/docker-compose.yaml @@ -7,12 +7,28 @@ services: POSTGRES_PASSWORD: '${POSTGRES_PASSWORD}' ports: - '45432:5432' - volumes: - - "./db:/var/lib/postgresql/data" + + # server: + # ports: + # - '40080:80' + # environment: + # CONNECTIONSTRINGS__SPACERACE: "Server=pg;Port=5432;Database=${POSTGRES_DB};User Id=${POSTGRES_USER};Password=${POSTGRES_PASSWORD}" + # build: + # context: . + # dockerfile: ./Dockerfile + # command: dotnet watch server: + depends_on: + - 'pg' + ports: + - '40080:80' environment: CONNECTIONSTRINGS__SPACERACE: "Server=pg;Port=5432;Database=${POSTGRES_DB};User Id=${POSTGRES_USER};Password=${POSTGRES_PASSWORD}" build: context: . dockerfile: ./Dockerfile + command: dotnet watch + volumes: + - "./:/App" + From 8b1b4f8ac6b5f3c20da376018f8fc323075c6cbb Mon Sep 17 00:00:00 2001 From: ntr Date: Wed, 23 Aug 2023 13:39:13 +1000 Subject: [PATCH 3/7] adding completions --- Server/Controllers/CompletionController.cs | 17 +++++- .../20230823032740_Beginninging.Designer.cs | 58 +++++++++++++++++++ .../Migrations/20230823032740_Beginninging.cs | 47 +++++++++++++++ .../SpaceRaceDbContextModelSnapshot.cs | 55 ++++++++++++++++++ Server/Models/Completion.cs | 9 --- Server/Models/CompletionDTO.cs | 9 +++ Server/Program.cs | 13 +++++ Server/Properties/launchSettings.json | 10 ++-- Server/Repositories/SpaceRaceDbContext.cs | 5 +- Server/appsettings.Development.json | 2 +- Server/docker-compose.yaml | 5 +- 11 files changed, 210 insertions(+), 20 deletions(-) create mode 100644 Server/Migrations/20230823032740_Beginninging.Designer.cs create mode 100644 Server/Migrations/20230823032740_Beginninging.cs create mode 100644 Server/Migrations/SpaceRaceDbContextModelSnapshot.cs delete mode 100644 Server/Models/Completion.cs create mode 100644 Server/Models/CompletionDTO.cs diff --git a/Server/Controllers/CompletionController.cs b/Server/Controllers/CompletionController.cs index b410211..831ed03 100644 --- a/Server/Controllers/CompletionController.cs +++ b/Server/Controllers/CompletionController.cs @@ -15,7 +15,7 @@ public class CompletionController : ControllerBase { _db = db; } - [HttpGet(Name = "GetCompletion")] + [HttpGet()] public IEnumerable Get() { return _db.Completions.Select(c => new CompletionDTO { Id = c.Id, @@ -25,4 +25,19 @@ public class CompletionController : ControllerBase { Date = c.Date, }); } + + [HttpPost()] + public async Task Post(CompletionDTO dto) { + Completion v = new Completion { + Id = Guid.NewGuid(), + UserId = Guid.NewGuid(), + Map = dto.Map, + Time = dto.Time, + Date = DateTimeOffset.UtcNow, + }; + + _db.Completions.Add(v); + await _db.SaveChangesAsync(); + return v; + } } diff --git a/Server/Migrations/20230823032740_Beginninging.Designer.cs b/Server/Migrations/20230823032740_Beginninging.Designer.cs new file mode 100644 index 0000000..ffca26a --- /dev/null +++ b/Server/Migrations/20230823032740_Beginninging.Designer.cs @@ -0,0 +1,58 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Server; + +#nullable disable + +namespace Server.Migrations +{ + [DbContext(typeof(SpaceRaceDbContext))] + [Migration("20230823032740_Beginninging")] + partial class Beginninging + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Server.Completion", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Date") + .HasColumnType("timestamp with time zone"); + + b.Property("Map") + .IsRequired() + .HasColumnType("text"); + + b.Property("Time") + .HasColumnType("double precision"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("Map"); + + b.HasIndex("UserId"); + + b.ToTable("Completions"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Server/Migrations/20230823032740_Beginninging.cs b/Server/Migrations/20230823032740_Beginninging.cs new file mode 100644 index 0000000..f28929b --- /dev/null +++ b/Server/Migrations/20230823032740_Beginninging.cs @@ -0,0 +1,47 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Server.Migrations +{ + /// + public partial class Beginninging : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Completions", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + Date = table.Column(type: "timestamp with time zone", nullable: false), + UserId = table.Column(type: "uuid", nullable: false), + Map = table.Column(type: "text", nullable: false), + Time = table.Column(type: "double precision", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Completions", x => x.Id); + }); + + migrationBuilder.CreateIndex( + name: "IX_Completions_Map", + table: "Completions", + column: "Map"); + + migrationBuilder.CreateIndex( + name: "IX_Completions_UserId", + table: "Completions", + column: "UserId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Completions"); + } + } +} diff --git a/Server/Migrations/SpaceRaceDbContextModelSnapshot.cs b/Server/Migrations/SpaceRaceDbContextModelSnapshot.cs new file mode 100644 index 0000000..86cf5d3 --- /dev/null +++ b/Server/Migrations/SpaceRaceDbContextModelSnapshot.cs @@ -0,0 +1,55 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Server; + +#nullable disable + +namespace Server.Migrations +{ + [DbContext(typeof(SpaceRaceDbContext))] + partial class SpaceRaceDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Server.Completion", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Date") + .HasColumnType("timestamp with time zone"); + + b.Property("Map") + .IsRequired() + .HasColumnType("text"); + + b.Property("Time") + .HasColumnType("double precision"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("Map"); + + b.HasIndex("UserId"); + + b.ToTable("Completions"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Server/Models/Completion.cs b/Server/Models/Completion.cs deleted file mode 100644 index 2dfe597..0000000 --- a/Server/Models/Completion.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Server.Models; - -public class CompletionDTO { - public DateTimeOffset Date { get; set; } - public Guid Id { get; set; } - public Guid UserId { get; set; } - public string Map { get; set; } - public double Time { get; set; } -} diff --git a/Server/Models/CompletionDTO.cs b/Server/Models/CompletionDTO.cs new file mode 100644 index 0000000..e47b25b --- /dev/null +++ b/Server/Models/CompletionDTO.cs @@ -0,0 +1,9 @@ +namespace Server.Models; + +public class CompletionDTO { + public DateTimeOffset Date { get; set; } + public Guid Id { get; set; } + public Guid UserId { get; set; } + public string Map { get; set; } + public double Time { get; set; } +} diff --git a/Server/Program.cs b/Server/Program.cs index 77c889c..3cf1645 100644 --- a/Server/Program.cs +++ b/Server/Program.cs @@ -14,8 +14,21 @@ builder.Services.AddDbContextPool(options => { var app = builder.Build(); +UpdateDatabase(app); + app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers(); app.Run(); + +void UpdateDatabase(IApplicationBuilder app) { + try { + using var serviceScope = app.ApplicationServices.GetRequiredService().CreateScope(); + using var context = serviceScope.ServiceProvider.GetService(); + context?.Database.Migrate(); + } catch (Exception e) { + Console.Error.WriteLine("Error migrating db. {0}", e); + System.Environment.Exit(1); + } +} diff --git a/Server/Properties/launchSettings.json b/Server/Properties/launchSettings.json index 5c40582..b26525b 100644 --- a/Server/Properties/launchSettings.json +++ b/Server/Properties/launchSettings.json @@ -4,7 +4,7 @@ "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { - "applicationUrl": "http://localhost:58932", + "applicationUrl": "http://0.0.0.0:58932", "sslPort": 44337 } }, @@ -13,8 +13,8 @@ "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, - "launchUrl": "swagger", - "applicationUrl": "http://localhost:5212", + "launchUrl": "", + "applicationUrl": "http://0.0.0.0:80", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } @@ -23,8 +23,8 @@ "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, - "launchUrl": "swagger", - "applicationUrl": "https://localhost:7246;http://localhost:5212", + "launchUrl": "", + "applicationUrl": "https://0.0.0.0:7246;http://0.0.0.0:5212", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/Server/Repositories/SpaceRaceDbContext.cs b/Server/Repositories/SpaceRaceDbContext.cs index adf29bc..c300c2f 100644 --- a/Server/Repositories/SpaceRaceDbContext.cs +++ b/Server/Repositories/SpaceRaceDbContext.cs @@ -1,4 +1,5 @@ using Microsoft.EntityFrameworkCore; +using System.ComponentModel.DataAnnotations; namespace Server; @@ -7,10 +8,12 @@ public class SpaceRaceDbContext : DbContext { public SpaceRaceDbContext(DbContextOptions options) : base(options) {} } +[Index(nameof(UserId))] +[Index(nameof(Map))] public class Completion { public DateTimeOffset Date { get; set; } public Guid Id { get; set; } public Guid UserId { get; set; } - public string Map { get; set; } + [Required] public string Map { get; set; } public double Time { get; set; } } diff --git a/Server/appsettings.Development.json b/Server/appsettings.Development.json index dc27707..a32e316 100644 --- a/Server/appsettings.Development.json +++ b/Server/appsettings.Development.json @@ -1,6 +1,6 @@ { "ConnectionStrings": { - "SpaceRace": "Server=pg;Port=5432;Database=spacerace;User Id=spacerace;Password=zoomzoom", + "SpaceRace": "Server=localhost;Port=45432;Database=spacerace;User Id=spacerace;Password=zoomzoom", }, "Logging": { "LogLevel": { diff --git a/Server/docker-compose.yaml b/Server/docker-compose.yaml index cfbc6a1..8178adf 100644 --- a/Server/docker-compose.yaml +++ b/Server/docker-compose.yaml @@ -19,16 +19,15 @@ services: # command: dotnet watch server: + image: mcr.microsoft.com/dotnet/sdk:7.0 depends_on: - 'pg' ports: - '40080:80' environment: CONNECTIONSTRINGS__SPACERACE: "Server=pg;Port=5432;Database=${POSTGRES_DB};User Id=${POSTGRES_USER};Password=${POSTGRES_PASSWORD}" - build: - context: . - dockerfile: ./Dockerfile command: dotnet watch + working_dir: "/App" volumes: - "./:/App" From 5862419e324c5619e7189b48e8bdf846a5825007 Mon Sep 17 00:00:00 2001 From: ntr Date: Wed, 23 Aug 2023 19:16:40 +1000 Subject: [PATCH 4/7] todo --- TODO.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/TODO.md b/TODO.md index c5c489c..6d51c33 100644 --- a/TODO.md +++ b/TODO.md @@ -1,7 +1,5 @@ # SpaceRace! -- controls UI - - controls diagram - shield regen bug @@ -37,4 +35,8 @@ - pings ship - clears slowly to show most often used line +- track around star + +- track on rings of saturn + - whatever song opens tozzi's delayed mix is bgm \ No newline at end of file From 56736cb37606de9e72b1aa1bb6aff0688e195ce3 Mon Sep 17 00:00:00 2001 From: ntr Date: Wed, 23 Aug 2023 19:22:44 +1000 Subject: [PATCH 5/7] projfile --- Server/.gitignore | 3 +++ Server/Server.csproj | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 Server/Server.csproj diff --git a/Server/.gitignore b/Server/.gitignore index 0249a7c..fa7d057 100644 --- a/Server/.gitignore +++ b/Server/.gitignore @@ -1,5 +1,8 @@ db/ +# unity ignores these +!*.csproj + # ----------------- *.swp diff --git a/Server/Server.csproj b/Server/Server.csproj new file mode 100644 index 0000000..0c09921 --- /dev/null +++ b/Server/Server.csproj @@ -0,0 +1,19 @@ + + + + net7.0 + disable + enable + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + From 4e44f33204eef31c4d582673a8656f33e045e4fc Mon Sep 17 00:00:00 2001 From: ntr Date: Wed, 23 Aug 2023 19:31:31 +1000 Subject: [PATCH 6/7] prod yaml --- Server/common.yaml | 9 +++++++++ Server/docker-compose.PROD.yaml | 16 ++++++++++++++++ Server/docker-compose.yaml | 20 +++----------------- 3 files changed, 28 insertions(+), 17 deletions(-) create mode 100644 Server/common.yaml create mode 100644 Server/docker-compose.PROD.yaml diff --git a/Server/common.yaml b/Server/common.yaml new file mode 100644 index 0000000..3167d7c --- /dev/null +++ b/Server/common.yaml @@ -0,0 +1,9 @@ +services: + pg: + image: postgres:latest + environment: + POSTGRES_USER: '${POSTGRES_USER}' + POSTGRES_DB: '${POSTGRES_DB}' + POSTGRES_PASSWORD: '${POSTGRES_PASSWORD}' + ports: + - '45432:5432' diff --git a/Server/docker-compose.PROD.yaml b/Server/docker-compose.PROD.yaml new file mode 100644 index 0000000..c9d01fe --- /dev/null +++ b/Server/docker-compose.PROD.yaml @@ -0,0 +1,16 @@ +services: + pg: + extends: + file: common.yaml + service: pg + + server: + ports: + - '40080:80' + depends_on: + - 'pg' + environment: + CONNECTIONSTRINGS__SPACERACE: "Server=pg;Port=5432;Database=${POSTGRES_DB};User Id=${POSTGRES_USER};Password=${POSTGRES_PASSWORD}" + build: + context: . + dockerfile: ./Dockerfile diff --git a/Server/docker-compose.yaml b/Server/docker-compose.yaml index 8178adf..a89d960 100644 --- a/Server/docker-compose.yaml +++ b/Server/docker-compose.yaml @@ -1,22 +1,8 @@ services: pg: - image: postgres:latest - environment: - POSTGRES_USER: '${POSTGRES_USER}' - POSTGRES_DB: '${POSTGRES_DB}' - POSTGRES_PASSWORD: '${POSTGRES_PASSWORD}' - ports: - - '45432:5432' - - # server: - # ports: - # - '40080:80' - # environment: - # CONNECTIONSTRINGS__SPACERACE: "Server=pg;Port=5432;Database=${POSTGRES_DB};User Id=${POSTGRES_USER};Password=${POSTGRES_PASSWORD}" - # build: - # context: . - # dockerfile: ./Dockerfile - # command: dotnet watch + extends: + file: common.yaml + service: pg server: image: mcr.microsoft.com/dotnet/sdk:7.0 From 09bb5bb1f114889d0c83a93fb6a523e2ff51e1a6 Mon Sep 17 00:00:00 2001 From: ntr Date: Thu, 24 Aug 2023 11:09:57 +1000 Subject: [PATCH 7/7] fix power unit shield bug --- Assets/Src/PowerUnit.cs | 25 +++++++++++++++++++------ ProjectSettings/ProjectSettings.asset | 3 ++- TODO.md | 10 ++++++---- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/Assets/Src/PowerUnit.cs b/Assets/Src/PowerUnit.cs index 4423ee7..6fa1dbf 100644 --- a/Assets/Src/PowerUnit.cs +++ b/Assets/Src/PowerUnit.cs @@ -32,14 +32,16 @@ public class PowerUnit { static float initialShieldMax = 5000f; float shieldCurrent = initialShieldMax; float shieldMax = initialShieldMax; - float shieldRegen = 10f; // * 100 ticks per second = 5s fully recharge + static float shieldBoostIncrease = 1000f; + static float shieldBoostAmount = 1000f; public float Shield => shieldCurrent; - public float ShieldMax => shieldMax; public string ShieldPct => $"{((shieldCurrent / shieldMax) * 100f):0}"; - float ShieldRegen => BoostActive.Count switch { - 0 => (shieldMax / 5f) * Time.fixedDeltaTime, - _ => 0f, + + bool UsingMovementBoost => BoostActive.Any(b => b.output != Output.Shield); + float ShieldRegen => UsingMovementBoost switch { + false => (shieldMax / 5f) * Time.fixedDeltaTime, + true => 0f, }; // Boost @@ -80,6 +82,8 @@ public class PowerUnit { if (boostAvailable < boostDurationSeconds) return; BoostActive.Add((output, Time.timeAsDouble + boostDurationSeconds)); boostAvailable -= boostDurationSeconds; + + if (output == Output.Shield) ShieldsBoost(); } public void Tick() { @@ -104,7 +108,7 @@ public class PowerUnit { boostProgress = Math.Max(0f, next); if (delta > 0f) boostAvailable = boostProgress; - shieldMax = initialShieldMax + BoostActive.Count(b => b.output == Output.Shield) * 1000f; + ShieldsSetMax(); shieldCurrent = Math.Min(shieldCurrent + ShieldRegen, shieldMax); } @@ -113,4 +117,13 @@ public class PowerUnit { shieldCurrent = shieldCurrent - amt; return shieldCurrent < 0f; } + + void ShieldsBoost() { + ShieldsSetMax(); + shieldCurrent = Math.Min(shieldCurrent + shieldBoostIncrease, shieldMax); + } + + void ShieldsSetMax() { + shieldMax = initialShieldMax + BoostActive.Count(b => b.output == Output.Shield) * shieldBoostAmount; + } } \ No newline at end of file diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 77e4ef3..dcbe2de 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -134,7 +134,8 @@ PlayerSettings: vulkanEnableCommandBufferRecycling: 1 loadStoreDebugModeEnabled: 0 bundleVersion: 0.1 - preloadedAssets: [] + preloadedAssets: + - {fileID: 11400000, guid: 020903acd8b50dd45a683fb9312ba7af, type: 2} metroInputSource: 0 wsaTransparentSwapchain: 0 m_HolographicPauseOnTrackingLoss: 1 diff --git a/TODO.md b/TODO.md index 6d51c33..fc68363 100644 --- a/TODO.md +++ b/TODO.md @@ -1,13 +1,15 @@ # SpaceRace! -- controls diagram +- post times to server + - in theory yes + - rename completions to laps with migration -- shield regen bug +- controls diagram + - mouse / controller sens + - invert y - git lfs -- post times to server - - models - liquidator - cruise craft racing