|
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- using CIG;
- using SUISS.Core.Utilities;
-
- public class BalloonManager : ICanSerialize
- {
- public BalloonManager()
- {
- this._cashBalloonFactory = new CashBalloonFactory();
- this._cityAdvisorBalloonFactory = new CityAdvisorBalloonFactory();
- this._xpBalloonFactory = new XPBalloonFactory();
- this.CollectFactories();
- }
-
- public BalloonManager(StorageDictionary storage)
- {
- this._storage = storage;
- if (this._storage.Contains("CashBalloonFactoryStorage"))
- {
- this._cashBalloonFactory = new CashBalloonFactory(this._storage.GetStorageDict("CashBalloonFactoryStorage"));
- }
- if (this._storage.Contains("CityAdvisorBalloonFactoryStorage"))
- {
- this._cityAdvisorBalloonFactory = new CityAdvisorBalloonFactory(this._storage.GetStorageDict("CityAdvisorBalloonFactoryStorage"));
- }
- if (this._storage.Contains("XPBalloonFactoryStorage"))
- {
- this._xpBalloonFactory = new XPBalloonFactory(this._storage.GetStorageDict("XPBalloonFactoryStorage"));
- }
- this.CollectFactories();
- }
-
- //[DebuggerBrowsable(DebuggerBrowsableState.Never)]
- public event BalloonManager.BalloonSpawnedEventHandler BalloonSpawnedEvent;
-
- private void FireBalloonSpawnedEvent(Balloon balloon)
- {
- if (this.BalloonSpawnedEvent != null)
- {
- this.BalloonSpawnedEvent(balloon);
- }
- }
-
- //[DebuggerBrowsable(DebuggerBrowsableState.Never)]
- public event BalloonManager.BalloonExpiredEventHandler BalloonExpiredEvent;
-
- private void FireBalloonExpiredEvent(Balloon balloon)
- {
- if (this.BalloonExpiredEvent != null)
- {
- this.BalloonExpiredEvent(balloon);
- }
- }
-
- //[DebuggerBrowsable(DebuggerBrowsableState.Never)]
- public event BalloonManager.BalloonCollectedEventHandler BalloonCollectedEvent;
-
- private void FireBalloonCollectedEvent(Balloon balloon)
- {
- if (this.BalloonCollectedEvent != null)
- {
- this.BalloonCollectedEvent(balloon);
- }
- }
-
- public Balloon SpawnBalloon(BalloonFactory factory)
- {
- Balloon balloon = factory.ProduceBalloon();
- if (balloon != null)
- {
- balloon.CollectedEvent += this.OnBalloonCollected;
- balloon.ExpiredEvent += this.OnBalloonExpired;
- this.FireBalloonSpawnedEvent(balloon);
- }
- return balloon;
- }
-
- public BalloonFactory PickRandomVehicleBalloonFactory()
- {
- List<BalloonFactory> list = this._vehicleBalloonFactories.FindAll((BalloonFactory x) => x.CanProduce());
- if (list.Count > 0)
- {
- return list.PickRandom<BalloonFactory>();
- }
- return null;
- }
-
- private void CollectFactories()
- {
- this._vehicleBalloonFactories.Add(this._cashBalloonFactory);
- this._vehicleBalloonFactories.Add(this._cityAdvisorBalloonFactory);
- this._vehicleBalloonFactories.Add(this._xpBalloonFactory);
- }
-
- private void OnBalloonExpired(Balloon balloon)
- {
- balloon.CollectedEvent -= this.OnBalloonCollected;
- balloon.ExpiredEvent -= this.OnBalloonExpired;
- this.FireBalloonExpiredEvent(balloon);
- }
-
- private void OnBalloonCollected(Balloon balloon)
- {
- balloon.CollectedEvent -= this.OnBalloonCollected;
- balloon.ExpiredEvent -= this.OnBalloonExpired;
- this.FireBalloonCollectedEvent(balloon);
- }
-
- public StorageDictionary Serialize()
- {
- if (this._storage == null)
- {
- this._storage = new StorageDictionary();
- }
- this._storage.Set<CashBalloonFactory>("CashBalloonFactoryStorage", this._cashBalloonFactory);
- this._storage.Set<CityAdvisorBalloonFactory>("CityAdvisorBalloonFactoryStorage", this._cityAdvisorBalloonFactory);
- this._storage.Set<XPBalloonFactory>("XPBalloonFactoryStorage", this._xpBalloonFactory);
- return this._storage;
- }
-
- private readonly List<BalloonFactory> _vehicleBalloonFactories = new List<BalloonFactory>();
-
- private CashBalloonFactory _cashBalloonFactory;
-
- private CityAdvisorBalloonFactory _cityAdvisorBalloonFactory;
-
- private XPBalloonFactory _xpBalloonFactory;
-
- private const string CashBalloonFactoryStorageKey = "CashBalloonFactoryStorage";
-
- private const string CityAdvisorBalloonFactoryStorageKey = "CityAdvisorBalloonFactoryStorage";
-
- private const string XPBalloonFactoryStorageKey = "XPBalloonFactoryStorage";
-
- private StorageDictionary _storage;
-
- public delegate void BalloonSpawnedEventHandler(Balloon balloon);
-
- public delegate void BalloonExpiredEventHandler(Balloon balloon);
-
- public delegate void BalloonCollectedEventHandler(Balloon balloon);
- }
|