Exemple #1
0
        public XElement ToXElement()
        {
            XElement OSChemaElement    = new XElement("Model");
            XElement OTablesElement    = new XElement("Tables");
            XElement ODatabasesElement = new XElement("Databases");

            OSChemaElement.Add(OTablesElement);
            OSChemaElement.Add(ODatabasesElement);
            foreach (String OKey in FAdddionalMetadata.Keys)
            {
                OSChemaElement.Add(new XAttribute(OKey, FAdddionalMetadata[OKey]));
            }
            foreach (Table OTable in FTables.Values)
            {
                OTablesElement.Add(OTable.ToXElement());
            }
            foreach (Database ODatabase in FDatabases.Values)
            {
                ODatabasesElement.Add(ODatabase.ToXElement());
            }
            return(OSChemaElement);
        }
    private void Start()
    {
        grid = GetComponentInParent <TableGrid>();

        while (numberOfTablesToSpawn > 0 && failsafe > 0)
        {
            Vector2     spawnPosition = new Vector2(Random.Range(0, grid.sizeX), Random.Range(0, grid.sizeY));
            TableObject tableToSpawn  = tables[Random.Range(0, tables.Count)];

            if (!grid.CheckIfcanSpawn(spawnPosition, tableToSpawn.addedLocations))
            {
                failsafe--;
                //get a new position table combo
                continue;
            }

            bool canSpawn = true;

            foreach (Vector2 chairLocation in tableToSpawn.seatLocations)
            {
                Vector2 charLocation = new Vector2(spawnPosition.x + chairLocation.x, spawnPosition.y + chairLocation.y);
                if (!grid.CheckIfcanSpawn(charLocation, tableToSpawn.chair.addedLocations))
                {
                    failsafe--;
                    canSpawn = false;
                    break;
                }
            }

            if (canSpawn)
            {
                failsafe = failsafeMax;

                //Spawn the table
                GameObject table       = (GameObject)Instantiate(tablePrefab, transform);
                OTable     tableObject = table.GetComponent <OTable>();
                tableObject.location  = spawnPosition;
                tableObject.tableType = tableToSpawn;

                //Set the table spawn location to blocking
                grid.AddTileToLocation(spawnPosition, TileContent.Blocking);

                //if the table is bigger than one square set all tiles as blocking
                Vector2 location;
                foreach (Vector2 tableLocations in tableToSpawn.addedLocations)
                {
                    location = new Vector2(spawnPosition.x + tableLocations.x, spawnPosition.y + tableLocations.y);

                    grid.AddTileToLocation(location, TileContent.Blocking);
                }

                //Set all seat tiles to seat
                foreach (Vector2 chairLocation in tableToSpawn.seatLocations)
                {
                    location = new Vector2(spawnPosition.x + chairLocation.x, spawnPosition.y + chairLocation.y);

                    grid.AddTileToLocation(location, TileContent.Seat);

                    Vector2 longChairLocation;
                    foreach (Vector2 extendedSeat in tableToSpawn.chair.addedLocations)
                    {
                        longChairLocation = new Vector2(location.x + extendedSeat.x, location.y + extendedSeat.y);

                        grid.AddTileToLocation(longChairLocation, TileContent.Seat);
                    }
                }

                numberOfTablesToSpawn--;
            }
        }
    }