示例#1
0
        /// <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;
            }
        }