private void GenerateRandomGameObject() { var number = rand.Next(100); var y = rand.Next((int)(FieldHeight - 1 - FieldHeight * 0.16)); var velocity = GetVelocityInPixelsPerSecond(); if (GameObjects.Count < 3) { if (number < 15) { GameObjects.Add(new BirthControl(y, velocity)); } else if (number < 30) { GameObjects.Add(new Blood(y, velocity)); } else if (CanOtherSpermSpawn() && number < 45) { GameObjects.Add(new OtherSperm(y, velocity)); } else if (GameObjects.All(e => !(e is IntrauterineDevice)) && number < 60) { GameObjects.Add(new IntrauterineDevice(velocity)); } else if (number < 80) { GameObjects.Add(new Dna(y, velocity, Sperm)); } else if (number < 90 && ShieldMaxTimeInSeconds > 0 && !Sperm.IsShieldActivated) { GameObjects.Add(new Shield(y, velocity)); } else if (number < 100 && MagnetMaxTimeInSeconds > 0 && !Sperm.IsMagnetActivated) { GameObjects.Add(new Magnet(y, velocity)); } } }
public void Update(GameTime gameTime) { foreach (var system in _globalUpdateSystems) { system.Method(gameTime, system.RequiredComponents.Length == 0 ? GameObjects : GameObjects.All(system.RequiredComponents)); } _debugTime -= gameTime.GetElapsedSeconds(); if (_debugTime <= 0f) { _debugTime += 0.333f; foreach (var gameObject in GameObjects) { _debugger.Post("gameobjects", gameObject); } } _currentScene?.Update(gameTime, GameObjects); }
private bool CanOtherSpermSpawn() { return(GameObjects .All(e => !(e is OtherSperm) && !(e is IntrauterineDevice))); }