Exemple #1
0
        /// <summary>
        ///     技術アプリケーションを複製する
        /// </summary>
        /// <returns>複製した技術アプリケーション</returns>
        public ITechItem Clone()
        {
            TechItem item = new TechItem
            {
                Id = Techs.GetNewId(Id + 10),
                Name = Config.GetTempKey(),
                ShortName = Config.GetTempKey(),
                Desc = Config.GetTempKey(),
                PictureName = PictureName,
                Year = Year
            };

            // 文字列設定
            Config.SetText(item.Name, Config.GetText(Name), Game.TechTextFileName);
            Config.SetText(item.ShortName, Config.GetText(ShortName), Game.TechTextFileName);
            Config.SetText(item.Desc, Config.GetText(Desc), Game.TechTextFileName);

            // 座標リスト
            foreach (TechPosition position in Positions)
            {
                item.Positions.Add(position.Clone());
            }

            // 小研究リスト
            foreach (TechComponent component in Components)
            {
                item.Components.Add(component.Clone());
            }
            foreach (TechComponent component in item.Components)
            {
                component.Id = item.GetNewComponentId(item.Id + 1);
            }

            // 必要技術リスト
            foreach (RequiredTech required in AndRequiredTechs)
            {
                item.AndRequiredTechs.Add(required.Clone());
            }
            foreach (RequiredTech required in OrRequiredTechs)
            {
                item.OrRequiredTechs.Add(required.Clone());
            }

            // 技術効果リスト
            foreach (Command command in Effects)
            {
                item.Effects.Add(new Command(command));
            }

            return item;
        }