/// <summary> /// スポナー読み込み /// </summary> /// <param name="count"></param> public static void Load(ref int count) { try { Spawners.ClearOnScheduler(); foreach (Coordinate coor in _spawnerCoordinates) { // 実際の座標と画像のピクセル数から画像上のスポナー位置を計算 // 画像のサイズが変わると壊れます() var X = (coor.X + 1502.5) / 1664; var Z = (coor.Z + 114.5) / 247; var isBroken = new Spawner(coor, World.WorldData).IsBroken; Application.Current.Dispatcher.Invoke(() => { Spawners.Add(new SpawnerPointer() { Center = new Point(X, Z), IsBroken = isBroken }); BrokenCount.Value = Spawners.Where(x => x.IsBroken).Count(); BrokenRate.Value = (BrokenCount.Value / 247.0) * 100; }); World.LoadingProgress.Value = (++count / 297.0) * 100; } } catch { Reset(); throw; } }
private void HandleCellSpawns(Patch patch) { GD.Print("Number of species in this patch = ", patch.SpeciesInPatch.Count); foreach (var entry in patch.SpeciesInPatch) { var species = entry.Key; if (species.Population <= 0) { GD.Print(entry.Key.FormattedName, " population <= 0. Skipping Cell Spawn in patch."); continue; } var density = 1.0f / (Constants.STARTING_SPAWN_DENSITY - Math.Min(Constants.MAX_SPAWN_DENSITY, species.Population * 5)); var name = species.ID.ToString(CultureInfo.InvariantCulture); HandleSpawnHelper(chunkSpawners, name, density, () => { var spawner = new CreatedSpawner(name); spawner.Spawner = Spawners.MakeMicrobeSpawner(species, compoundCloudSystem, currentGame); spawnSystem.AddSpawnType(spawner.Spawner, density, Constants.MICROBE_SPAWN_RADIUS); return(spawner); }); } }
void Update() { if (highScoreText != null) { highScoreText.text = "highscore: " + PlayerPrefs.GetInt("HighScore", 0).ToString(); } if (currentsieText != null) { currentsieText.text = "coints: " + PlayerPrefs.GetInt("Currentsie", 0).ToString(); } if (scoreText != null) { scoreText.text = "Level " + levelToLoadNumber.ToString(); if (levelToLoadNumber >= 1) { spawnerTop.SetActive(true); } if (levelToLoadNumber >= 2) { spawnerBothem.SetActive(true); } if (levelToLoadNumber >= 3) { spawnerRight.SetActive(true); } if (levelToLoadNumber >= 4) { spawnerLeft.SetActive(true); } if (levelToLoadNumber >= 5) { Spawners spawner = spawnerTop.transform.GetComponent <Spawners>(); spawner.UpdateState(true); } if (levelToLoadNumber >= 6) { Spawners spawner = spawnerBothem.transform.GetComponent <Spawners>(); spawner.UpdateState(true); } } if (resetEverything) { PlayerPrefs.SetInt("HighScore", 0); PlayerPrefs.SetInt("Currentsie", 0); } }
/**public void AddEnemy(Enemy enemy, int spawnerId) { * Spawner spawner = Spawners.Find(p => p.Id == spawnerId); * spawner.AddEnemy(enemy); * }**/ private void CleanUp() { //Remove objects outside the screen AllDrawableGameObjects.RemoveAll(go => (go.Position.X <0 || go.Position.X> GeneralSettings.screenWidth + go.Width || go.Position.Y <0 || go.Position.Y> GeneralSettings.screenHeight + go.Height)); //remove killed objts AllDrawableGameObjects.RemoveAll(o => o is KillableGameObject && ((KillableGameObject)o).Dead); //Remove spawner if all its enemies has spawned Spawners.RemoveAll(s => s.Enemies.Count == 0); }
public override void Create(List <IGameObject> avoidObjects, bool avoidSelf = true) { for (int i = 0; i < SpawnersAmount; i++) { Spawner spawner = new Spawner(gridSize, minBorderMargin, minMarginBetween, avoidObjects); Spawners.Add(spawner); if (avoidSelf) { avoidObjects.Add(spawner); } } }
// Look through all spawnwers and set myLaneSpawner if found void SetMyLaneSpawner() { Spawners[] spawnerArray = GameObject.FindObjectsOfType <Spawners>(); foreach (Spawners spawner in spawnerArray) { if (spawner.transform.position.y == transform.position.y) { myLaneSpawners = spawner; return; } } }
private void HandleCloudSpawns(BiomeConditions biome) { GD.Print("Number of clouds in this patch = ", biome.Compounds.Count); foreach (var entry in biome.Compounds) { HandleSpawnHelper(chunkSpawners, entry.Key.InternalName, entry.Value.Density, () => { var spawner = new CreatedSpawner(entry.Key.InternalName); spawner.Spawner = Spawners.MakeCompoundSpawner(entry.Key, compoundCloudSystem, entry.Value.Amount); spawnSystem.AddSpawnType(spawner.Spawner, entry.Value.Density, Constants.CLOUD_SPAWN_RADIUS); return(spawner); }); } }
private void HandleChunkSpawns(BiomeConditions biome) { GD.Print("Number of chunks in this patch = ", biome.Chunks.Count); foreach (var entry in biome.Chunks) { HandleSpawnHelper(chunkSpawners, entry.Value.Name, entry.Value.Density, () => { var spawner = new CreatedSpawner(entry.Value.Name); spawner.Spawner = Spawners.MakeChunkSpawner(entry.Value, compoundCloudSystem); spawnSystem.AddSpawnType(spawner.Spawner, (int)entry.Value.Density, Constants.MICROBE_SPAWN_RADIUS); return(spawner); }); } }
public void AddSpawner(Spawner spawner) { Spawners.Add(spawner); }
void Awake() { instance = this; }
public static void AddSpawner(GEntity Spawner) { Spawners.Add(Spawner); }
private void FirstWave() { //First greeting enemy (plan is to display a greeting message using black_old_face.png within the UI) Spawners.Add ( new EnemySpawner ( x: (float)Field.Size.Width / 2 , y: 20 , remainingEnemies: 1 , spawnCallback: spawner => spawner.PlaceActor(new Lakebeam()) ) ); //First Bomb to give Player some small target to fire on AddDualSpawner ( percentDelay: 2 , enemies: 1 , spawnCallback: spawner => { var enemy = new Doomday(Field.Player); spawner.PlaceActor(enemy); } ); //Wave of Lakebeams for the opportunity of quickly upgrading the basic weapon AddDualSpawner ( percentDelay: 6 , enemies: 4 , spawnCallback: spawner => { var enemy = new Lakebeam(); spawner.PlaceActor(enemy); } ); //Wave of bombs AddDualSpawner ( percentDelay: 16 , enemies: 5 , spawnCallback: spawner => { var enemy = new Doomday(Field.Player); spawner.PlaceActor(enemy); } ); //Two Venomflares to make it more interesting Spawners.Add ( new DelayedStart ( actsDelay: 0 , percentDelay: 26 , spawner: new EnemySpawner ( //Spawns in the 1/3 of the Field x: (float)Field.Size.Width / 3 , y: 0 , remainingEnemies: 1 , spawnCallback: spawner => spawner.PlaceActor(new Venomflare()) ) ) ); Spawners.Add ( new DelayedStart ( actsDelay: 0 , percentDelay: 26 , spawner: new EnemySpawner ( //Spawns in the 2/3 of the Field x: 2 * (float)Field.Size.Width / 3 , y: 0 , remainingEnemies: 1 , spawnCallback: spawner => spawner.PlaceActor(new Venomflare()) ) ) ); //Waveghosts that will rotate around AddDualSpawner ( percentDelay: 36 , y: (float)Field.Size.Height / 2 , enemies: 2 , spawnCallback: spawner => spawner.PlaceActor(new Waveghost()) ); //Larger wave of Lakebeams AddDualSpawner ( percentDelay: 50 , enemies: 8 , spawnCallback: spawner => { var enemy = new Lakebeam(); spawner.PlaceActor(enemy); } ); //Last small wave of bombs AddDualSpawner ( percentDelay: 60 , enemies: 4 , spawnCallback: spawner => { var enemy = new Doomday(Field.Player); spawner.PlaceActor(enemy); } ); //Final battle before boss appears AddDualSpawner ( percentDelay: 75 , y: (float)Field.Size.Height / 2 , enemies: 4 , spawnCallback: spawner => spawner.PlaceActor(new Waveghost()) ); //The Boss Spawners.Add ( new DelayedStart ( actsDelay: 0 , percentDelay: 95 , spawner: new EnemySpawner ( x: (float)Field.Size.Width / 2 , y: 0 , remainingEnemies: 1 , spawnCallback: spawner => { var boss = new DarkspringTheTwisted(); spawner.PlaceActor(boss); //Boss will be spawned outside of the field and comes in afterwards boss.Y -= (float)boss.Height / 2; } ) ) ); }
/// <summary> /// データをリセット /// </summary> public static void Reset() { Spawners.ClearOnScheduler(); BrokenCount.Value = 0; BrokenRate.Value = 0; }
// Start is called before the first frame update void Start() { spawnControl = FindObjectOfType <Spawners>(); startTimer = timer; }
internal static void CombatDirector_SetNextSpawnAsBoss(On.RoR2.CombatDirector.orig_SetNextSpawnAsBoss orig, CombatDirector self) { orig(self); var selected = CurrentRun.nextBoss; selected.spawnCard.directorCreditCost = (int)((self.monsterCredit / CurrentRun.nextBossCount) / Spawners.GetTierDef(CurrentRun.nextBossElite).costMultiplier); self.OverrideCurrentMonsterCard(selected); self.SetFieldValue<CombatDirector.EliteTierDef>("currentActiveEliteTier", Spawners.GetTierDef(CurrentRun.nextBossElite)); self.SetFieldValue<EliteIndex>("currentActiveEliteIndex", CurrentRun.nextBossElite); Log.Message($"{selected.spawnCard.name} cost has been set to {selected.cost} for {CurrentRun.nextBossCount} {CurrentRun.nextBossElite} bosses with available credit: {self.monsterCredit}",Log.LogLevel.Info); CurrentRun.nextBossCount = 1; CurrentRun.nextBossElite = EliteIndex.None; On.RoR2.CombatDirector.SetNextSpawnAsBoss -= CombatDirector_SetNextSpawnAsBoss; }
private void InitializeSpawners() { Spawners.Add(Cardboard.Spawner); }