public void AddPowerup(PowerupType type) { if (powerups.ContainsKey(type) && type != PowerupType.ULTIMATE) { powerups[type].AddTime(); return; } // usuwanie steerblock powerupa if (type != PowerupType.STEERBLOCK && powerups.ContainsKey(PowerupType.STEERBLOCK)) { SteerBlock sb = (SteerBlock)powerups[PowerupType.STEERBLOCK]; sb.PowerupEnd(this); powerups.Remove(PowerupType.STEERBLOCK); } Powerup thePowerup = null; // Tutaj w switch przydalo by sie ogarniac priorytet powerupow // np jak masz slowa to sie nie da speedup -> powerupy sie anuluja? switch (type) { case PowerupType.SPEEDUP: { if (powerups.ContainsKey(PowerupType.SLOWDOWN)) { powerups.Remove(PowerupType.SLOWDOWN); } Speedup powerup = new Speedup(); SpeedupData sd; if (powerupsData.ContainsKey(PowerupType.SPEEDUP)) { sd = (SpeedupData)powerupsData[PowerupType.SPEEDUP]; } else { sd = Resources.Load <SpeedupData>("ScriptableData/SpeedupData"); powerupsData.Add(PowerupType.SPEEDUP, sd); } powerup.speedupData = sd; powerup.AddTime(); powerups.Add(PowerupType.SPEEDUP, powerup); thePowerup = powerup; break; } case PowerupType.SLOWDOWN: { if (powerups.ContainsKey(PowerupType.SPEEDUP)) { powerups.Remove(PowerupType.SPEEDUP); } SlowDown powerup = new SlowDown(); SlowDownData sd; if (powerupsData.ContainsKey(PowerupType.SLOWDOWN)) { sd = (SlowDownData)powerupsData[PowerupType.SLOWDOWN]; } else { sd = Resources.Load <SlowDownData>("ScriptableData/SlowdownData"); powerupsData.Add(PowerupType.SLOWDOWN, sd); } powerup.slowDownData = sd; powerup.AddTime(); powerups.Add(PowerupType.SLOWDOWN, powerup); thePowerup = powerup; break; } case PowerupType.STEERBLOCK: { SteerBlock powerup = new SteerBlock(); SteerBlockData sd; if (powerupsData.ContainsKey(PowerupType.STEERBLOCK)) { sd = (SteerBlockData)powerupsData[PowerupType.STEERBLOCK]; } else { sd = Resources.Load <SteerBlockData>("ScriptableData/SteerBlockData"); powerupsData.Add(PowerupType.STEERBLOCK, sd); } powerup.steerBlockData = sd; powerup.AddTime(); powerups.Add(PowerupType.STEERBLOCK, powerup); thePowerup = powerup; break; } case PowerupType.GHOST: { Ghost powerup = new Ghost(); GhostData gd; if (powerupsData.ContainsKey(PowerupType.GHOST)) { gd = (GhostData)powerupsData[PowerupType.GHOST]; } else { gd = Resources.Load <GhostData>("ScriptableData/GhostData"); powerupsData.Add(PowerupType.GHOST, gd); } powerup.ghostData = gd; powerup.AddTime(); powerups.Add(PowerupType.GHOST, powerup); thePowerup = powerup; break; } case PowerupType.ULTIMATE: { powerups.Remove(PowerupType.ULTIMATE); Ultimate powerup = new Ultimate(); UltimateData ud; if (powerupsData.ContainsKey(PowerupType.ULTIMATE)) { ud = (UltimateData)powerupsData[PowerupType.ULTIMATE]; } else { ud = Resources.Load <UltimateData>("ScriptableData/UltimateData"); powerupsData.Add(PowerupType.ULTIMATE, ud); } powerup.ultimateData = ud; powerup.AddTime(); powerups.Add(PowerupType.ULTIMATE, powerup); thePowerup = powerup; break; } case PowerupType.SHIELD: { thePowerup = new Shield(); break; } default: Debug.LogError("Unknown PowerupType"); return; } thePowerup.PowerupStart(this); GameManager.Instance.AddPowerupScore(); }