[BUG-94] Türen immer öffnen

This commit is contained in:
hydrant
2021-04-29 17:09:53 +02:00
parent 07c6da7031
commit 1a6e22823c
5 changed files with 2215 additions and 3 deletions

View File

@@ -22,6 +22,7 @@ namespace ReallifeGamemode.Database.Entities
public float Y { get; set; }
public float Z { get; set; }
public float Radius { get; set; }
public bool AlwaysOpen { get; set; }
[NotMapped]
public Vector3 Position => new Vector3(X, Y, Z);

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,23 @@
using Microsoft.EntityFrameworkCore.Migrations;
namespace ReallifeGamemode.Database.Migrations
{
public partial class AddDoorAlwaysOpenFlag : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<bool>(
name: "AlwaysOpen",
table: "Doors",
nullable: false,
defaultValue: false);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "AlwaysOpen",
table: "Doors");
}
}
}

View File

@@ -398,6 +398,9 @@ namespace ReallifeGamemode.Database.Migrations
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<bool>("AlwaysOpen")
.HasColumnType("tinyint(1)");
b.Property<string>("Category")
.HasColumnType("longtext CHARACTER SET utf8mb4");

View File

@@ -24,7 +24,7 @@ namespace ReallifeGamemode.Server.Managers
{
foreach (Door door in dbContext.Doors)
{
_doorColShapes[door.Id] = NAPI.ColShape.CreateSphereColShape(door.Position, 30f);
_doorColShapes[door.Id] = NAPI.ColShape.CreateSphereColShape(door.Position, door.AlwaysOpen ? 200f : 30f);
}
}
}
@@ -63,7 +63,7 @@ namespace ReallifeGamemode.Server.Managers
player.SendNotification(notStr, true);
NAPI.Pools.GetAllPlayers().ForEach(p => p.TriggerEvent("changeDoorState", d.Model, d.X, d.Y, d.Z, (d.Locked ? 1 : 0), 0.0f, 0.0f, 0.0f));
NAPI.Pools.GetAllPlayers().ForEach(p => UpdateDoorState(p, d));
}
}
dbContext.SaveChanges();
@@ -80,9 +80,14 @@ namespace ReallifeGamemode.Server.Managers
using (var dbContext = new DatabaseContext())
{
Door door = dbContext.Doors.Where(d => d.Id == doorId).First();
player.TriggerEvent("changeDoorState", door.Model, door.X, door.Y, door.Z, (door.Locked ? 1 : 0), 0.0f, 0.0f, 0.0f);
UpdateDoorState(player, door);
}
}
}
private static void UpdateDoorState(Player player, Door door)
{
player.TriggerEvent("changeDoorState", door.Model, door.X, door.Y, door.Z, (door.Locked || door.AlwaysOpen ? 1 : 0), 0.0f, 0.0f, door.AlwaysOpen ? 1.0f : 0.0f);
}
}
}