internal void CancelConstruction()
        {
            if (this.IsConstructing)
            {
                bool wasUpgrading = IsUpgrading();
                this.IsConstructing = false;
                if (wasUpgrading)
                {
                    SetUpgradeLevel(UpgradeLevel);
                }
                Construction_Item        bd = GetConstructionItemData();
                Files.CSV_Logic.Resource rd = bd.GetBuildResource(UpgradeLevel + 1);
                int cost          = bd.GetBuildCost(UpgradeLevel + 1);
                int multiplier    = (CSV.Tables.Get(Gamefile.Globals).GetData("BUILD_CANCEL_MULTIPLIER") as Globals).NumberValue;
                int resourceCount = (int)((cost * multiplier * (long)1374389535) >> 32);
                resourceCount = Math.Max((resourceCount >> 5) + (resourceCount >> 31), 0);
                this.Level.Avatar.Resources.Plus(rd.GetGlobalID(), resourceCount);

                if (Builder_Village)
                {
                    this.Level.BuilderVillageWorkerManager.DeallocateWorker(this);
                }
                else
                {
                    this.Level.VillageWorkerManager.DeallocateWorker(this);
                }

                if (UpgradeLevel == -1)
                {
                    this.Level.GameObjectManager.RemoveGameObject(this);
                }
            }
        }
Пример #2
0
        public Combat_Component(Construction_Item ci) : base(ci)
        {
            Item = ci;

            if (ci.ClassId == 4 || ci.ClassId == 11)
            {
                var td = (Traps)ci.Data;
                if (td.HasAltMode)
                {
                    AltTrapAttackMode = true;
                }

                if (td.DirectionCount > 0)
                {
                    AltDirectionMode = true;
                }
            }
            else if (ci.ClassId == 0 || ci.ClassId == 7)
            {
                var bd = (Buildings)ci.Data;

                if (bd.AmmoCount > 0)
                {
                    Ammo = bd.AmmoCount;
                }

                if (bd.AltAttackMode)
                {
                    AltAttackMode = true;
                }

                if (bd.AimRotateStep > 0)
                {
                    AimRotateStep = true;
                }
            }
        }
Пример #3
0
 internal void CancelConstruction()
 {
     if (this.IsConstructing)
     {
         bool wasUpgrading = IsUpgrading();
         this.IsConstructing = false;
         if (wasUpgrading)
         {
             SetUpgradeLevel(UpgradeLevel);
         }
         Construction_Item bd = GetConstructionItemData();
         Resource          rd = bd.GetBuildResource(UpgradeLevel + 1);
         int cost             = bd.GetBuildCost(UpgradeLevel + 1);
         int multiplier       = (CSV.Tables.Get(Gamefile.Globals).GetData("BUILD_CANCEL_MULTIPLIER") as Globals).NumberValue;
         int resourceCount    = (int)((cost * multiplier * (long)1374389535) >> 32);
         resourceCount = Math.Max((resourceCount >> 5) + (resourceCount >> 31), 0);
         //this.Level.CommodityCountChangeHelper(0, rd, resourceCount);
         //this.Level.WorkerManager.DeallocateWorker(this);
         if (UpgradeLevel == -1)
         {
             this.Level.GameObjectManager.RemoveGameObject(this);
         }
     }
 }