/// <summary> /// Add a game asset. /// </summary> /// Will throw an exception if the asset is different from the asset type chosen for this buy point. /// <param name="asset"></param> public virtual void AddGameAsset(AbstractGameAsset asset) { if (ChosenGameAssetTemplate != AbstractGameAsset.None && asset.Type != ChosenGameAssetTemplate.Type) { throw new Exception( string.Format( "Tried to add game asset {0} to a buy point which has chosen {1}", asset, ChosenGameAssetTemplate.Type)); } lock (GameAssets) { GameAssets.Add(asset.Uuid, asset); switch (asset.Type) { case AbstractGameAssetType.Crops: ChosenGameAssetTemplate = Crops.Template; Cropss.Add((Crops)asset); break; case AbstractGameAssetType.Houses: ChosenGameAssetTemplate = Houses.Template; Housess.Add((Houses)asset); break; case AbstractGameAssetType.Factory: ChosenGameAssetTemplate = Factory.Template; Factories.Add((Factory)asset); break; default: throw new Exception(string.Format("Unrecognized asset {0}", asset)); } lock (Game.GameAssets) Game.GameAssets[asset.Uuid] = asset; } }