public void SpawnMobiles(GameState state) { var mobiles = state.Mobiles; var spawnXs = state.Map.InitialSpawnXs.Shuffle().Take(mobiles.Count).ToArray(); for (var i = 0; i < mobiles.Count; i++) { var mobile = mobiles[i]; var spawnX = spawnXs[i]; int spawnY; if (!state.Map.TryFindTopmostPixel(spawnX, out spawnY)) { throw GameExceptions.BadSpawn(state.Map, spawnX); } state.PushEvent(new SpawnEvent(mobile.Id, spawnX, spawnY, true)); } }