コード例 #1
0
        public void Detect(Player player, List <Tile> levelTiles, List <Grass> levelGrass, List <Ledge> levelLedges, List <Building> levelBuildings, List <Enemy> levelEnemies, List <Exit> levelExits)
        {
            Rectangle playerBox = player.state.GetBoundingBox(player.position);

            foreach (Tile tile in levelTiles)
            {
                Rectangle tileBox = tile.GetBoundingBox();
                if (tileBox.Intersects(playerBox) && tile.collision)
                {
                    tileResponse.PlayerTileCollide(player, tile);
                    if (tile.sign)
                    {
                        game.level.DisplayInfo(tile.signTex);
                    }
                }
                else if (!tileBox.Intersects(playerBox) && tile.sign)
                {
                    game.level.displaySign = false;
                }
            }
            foreach (Grass grass in levelGrass)
            {
                Rectangle grassBox = grass.GetBoundingBox();
                if (grassBox.Intersects(playerBox) && !grass.intersected)
                {
                    grass.intersected = true;
                    grassResponse.PlayerTileCollide(grass);
                }
                if (!grassBox.Intersects(playerBox))
                {
                    grass.intersected = false;
                }
            }
            foreach (Ledge ledge in levelLedges)
            {
                Rectangle ledgeBox = ledge.GetBoundingBox();
                if (ledgeBox.Intersects(playerBox))
                {
                    ledgeResponse.PlayerTileCollide(player, ledge);
                }
            }
            foreach (Building building in levelBuildings)
            {
                Rectangle buildingBox = building.GetBoundingBox();
                if (buildingBox.Intersects(playerBox))
                {
                    buildingResponse.PlayerTileCollide(player, building);
                }
            }
            foreach (Enemy enemy in levelEnemies)
            {
                Rectangle enemyBox = enemy.state.GetBoundingBox(enemy.position);
                if (enemyBox.Intersects(playerBox))
                {
                    enemyResponse.PlayerEnemyCollide(player, enemy);
                }
            }
            foreach (Exit exit in levelExits)
            {
                Rectangle exitBox = exit.sprite.GetBoundingBox(exit.position);
                if (exitBox.Intersects(playerBox))
                {
                    exitResponse.PlayerTileCollide(player, exit);
                }
            }
        }