private void SetFreezeValue(float value, Creep creep) { if (!FreezeValues.ContainsKey(creep)) { FreezeValues.Add(creep, 0); } FreezeValues[creep] = value; }
public void CustomCreepUpdate(Creep creep, GameTime gameTime) { double freezeTime = FreezeTimes[creep]; float freezeValue = FreezeValues[creep]; if (freezeTime > 0) { if (creep.InitialSpeed * freezeValue < creep.Speed) { creep.Speed = creep.InitialSpeed * freezeValue; } freezeTime -= gameTime.ElapsedGameTime.TotalMilliseconds; FreezeTimes[creep] = (float)freezeTime; if (freezeTime <= 0) { RestoreCreepSpeed(creep); creep.CustomUpdate -= CustomCreepUpdate; FreezeValues.Remove(creep); FreezeTimes.Remove(creep); FrozenCreeps.Remove(creep); } } }