Example #1
0
        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;
        }