Exemple #1
0
 public static void AutoShip()
 {
     LoadShips.LoadAllShips();
     UnloadShips.UnloadAllShips();
     SendShips.SendShipsDestination(Core.Config.shipdesttype);
 }
        public List <SendShips> CheckPlayerReady(string player_id)
        {
            Player p = _dm.Ps.GetPlayer(convertId(player_id));

            if (p.state != (sbyte)Player_States.readytoplay)
            {
                return(null);
            }

            Room r     = _dm.Rs.GetRoom(p.roomid);
            var  ships = new List <SendShips>();

            sbyte singledesk = 1, doubledesk = 1, tripledesk = 1;

            for (int y = 0; y < p.field.Length; y++)
            {
                for (int x = 0; x < p.field.Length; x++)
                {
                    if (p.field[y][x] == (sbyte)Field_Cell_States.ship)
                    {
                        bool fl = true;
                        if (x - 1 >= 0 && p.field[y][x - 1] == (sbyte)Field_Cell_States.ship)
                        {
                            fl = false;
                        }
                        else
                        if (y - 1 >= 0 && p.field[y - 1][x] == (sbyte)Field_Cell_States.ship)
                        {
                            fl = false;
                        }


                        if (fl)
                        {
                            sbyte deskcount = 1;
                            char  align     = 'n';
                            int   i         = x + 1;
                            while (i < p.field.Length && p.field[y][i] == (sbyte)Field_Cell_States.ship)
                            {
                                align = 'h';
                                deskcount++;
                                i++;
                            }

                            if (align != 'h')
                            {
                                i = y + 1;
                                while (i < p.field.Length && p.field[i][x] == (sbyte)Field_Cell_States.ship)
                                {
                                    align = 'v';
                                    deskcount++;
                                    i++;
                                }
                            }

                            SendShips s = new SendShips();

                            s.x     = (sbyte)x;
                            s.y     = (sbyte)y;
                            s.align = align;
                            switch (deskcount)
                            {
                            case 1: s.shipname = "singledesk" + singledesk.ToString(); singledesk++; break;

                            case 2: s.shipname = "doubledesk" + doubledesk.ToString(); doubledesk++;; break;

                            case 3: s.shipname = "tripledesk" + tripledesk.ToString(); tripledesk++;; break;

                            case 4: s.shipname = "fourdesk";  break;
                            }
                            ships.Add(s);
                        }
                    }
                }
            }



            return(ships);
        }