public void OnPost() { IsStatus = true; // Get, parse and check player id query param if (!GetPlayer()) { return; } // Get, parse and check ship id query param if (!GetShip()) { return; } // Get, parse and check post form data if (!ParsePostForm(out var sX, out var sY, out var sDir)) { BackBtnHref = $"?player={PlayerId}&placement=manual&ship={ShipId}"; IsError = true; return; } // Check if it's a valid placement spot if (!InputValidator.CheckValidShipPlacementLoc(Player, Ship.Size, sX, sY, sDir, out var pos, out var dir)) { IsError = true; StatusMsg = "Invalid location"; BackBtnHref = $"?player={PlayerId}&placement=manual&ship={ShipId}"; return; } Ship.SetLocation(pos, dir); Ship.IsPlaced = true; StatusMsg = $"{Ship.Type} placed successfully!"; BackBtnHref = $"?player={PlayerId}&placement=manual&ship={ShipId + 1}"; MainTitle = $"Creating ship {ShipId + 1}/{Player.Ships.Count} for {Player.Name}"; IsDisplayBoard = true; }