Esempio n. 1
0
        public ExtMarchUnit(ExtStep step, WCFMarchUnit wcfMarchUnit)
        {
            Step         = step;
            WCFMarchUnit = wcfMarchUnit;

            ExtUnit = Step.Game.ViewUnit.Single(p => p.WCFUnit.Id == WCFMarchUnit.Unit);
        }
Esempio n. 2
0
        private void UserControl_Drop(object sender, DragEventArgs e)
        {
            e.Handled = true;

            if (TerrainView.UpdateGamePoint(e, this))
            {
                return;
            }

            if (_Unit.Step.Game.SelectedOrder == null || _Unit.Step.Game.SelectedOrder.WCFOrder.OrderType != "Усиление_власти_0_специальный")
            {
                return;
            }

            //только тип юнита
            ExtUnitType dropUnitType = (e.Data.GetData(typeof(ExtUnitType)) as ExtUnitType);

            if (dropUnitType == null)
            {
                return;
            }

            if (_Unit.Step.Game.SelectedOrder.ExtTerrain != _Unit.ExtTerrain)
            {
                App.Agot2.errorView.ShowByDispatcher(App.GetResources("text_notify"), App.GetResources("validation_consolidate5"));
                return;
            }
            if (_Unit.WCFUnit.UnitType != "Пеший_воин")
            {
                App.Agot2.errorView.ShowByDispatcher(App.GetResources("text_notify"), App.GetResources("validation_consolidate6"));
                return;
            }
            if (dropUnitType.WCFUnitType.Name == "Пеший_воин")
            {
                App.Agot2.errorView.ShowByDispatcher(App.GetResources("text_notify"), App.GetResources("validation_consolidate7"));
                return;
            }
            if (dropUnitType.WCFUnitType.Name == "Корабль")
            {
                App.Agot2.errorView.ShowByDispatcher(App.GetResources("text_notify"), App.GetResources("validation_consolidate8"));
                return;
            }

            _Unit.TempUnitType = dropUnitType;

            WCFMarchUnit WCFMarchUnit = _Unit.Step.Game.ClientStep.ExtMarch.WCFMarch.MarchUnit.SingleOrDefault(p => p.Unit == _Unit.WCFUnit.Id);

            if (WCFMarchUnit == null)
            {
                WCFMarchUnit = new WCFMarchUnit();
                _Unit.Step.Game.ClientStep.ExtMarch.WCFMarch.MarchUnit.Add(WCFMarchUnit);
            }

            WCFMarchUnit.Unit     = _Unit.WCFUnit.Id;
            WCFMarchUnit.Terrain  = _Unit.TempTerrain.WCFTerrain.Name;
            WCFMarchUnit.UnitType = _Unit.TempUnitType.WCFUnitType.Name;

            _Unit.Step.Game.ClientStep.ExtMarch.SumCost++;
        }
        private bool TerrainDrop(DragEventArgs e)
        {
            if (TerrainView.UpdateGamePoint(e, this))
            {
                return(false);
            }

            ExtTerrain dropTerrain = e.Data.GetData(typeof(ExtTerrain)) as ExtTerrain;

            if (dropTerrain == null)
            {
                return(false);
            }

            _Terrain.Game.ClientStep.ExtMarch.WCFMarch.MarchUnit.Clear();
            foreach (var item in dropTerrain.Unit)
            {
                ExtTerrain moveTerrain = null;

                if (item.TempTerrain != item.ExtTerrain)
                {
                    moveTerrain = item.TempTerrain;
                }
                if (item.IsSelected)
                {
                    moveTerrain = _Terrain;
                }
                if (moveTerrain == null)
                {
                    continue;
                }

                if (CheckMove(item, moveTerrain))
                {
                    WCFMarchUnit _WCFMarchUnit = new WCFMarchUnit();
                    _WCFMarchUnit.Terrain  = moveTerrain.WCFTerrain.Name;
                    _WCFMarchUnit.Unit     = item.WCFUnit.Id;
                    _WCFMarchUnit.UnitType = item.WCFUnit.UnitType;
                    _Terrain.Game.ClientStep.ExtMarch.WCFMarch.MarchUnit.Add(_WCFMarchUnit);

                    item.TempTerrain = moveTerrain;
                }
                else
                {
                    item.TempTerrain = null;
                }

                item.IsSelected = false;
            }

            if (!HoldTerrain(dropTerrain))
            {
                _Terrain.Game.ClientStep.ExtGameUserInfo.ExtPowerCounter.Remove(dropTerrain.PowerCounter);
                _Terrain.Game.ClientStep.ExtMarch.WCFMarch.IsTerrainHold = false;
                _Terrain.Game.OnPropertyChanged("ViewPowerCounter");
            }

            return(true);
        }
        private bool UnitTypeDrop(DragEventArgs e)
        {
            ExtUnitType dropUnitType = (e.Data.GetData(typeof(ExtUnitType)) as ExtUnitType);

            if (dropUnitType == null)
            {
                return(false);
            }

            if (_Terrain.ExtGarrison != null && _Terrain.ExtHolderUser != _Terrain.Game.ClientGameUser)
            {
                return(true);
            }

            if (dropUnitType.WCFUnitType.Cost > (_Terrain.Game.SelectedOrder.ExtTerrain.WCFTerrain.Strength - _Terrain.Game.ClientStep.ExtMarch.SumCost))
            {
                App.Agot2.errorView.ShowByDispatcher(App.GetResources("text_notify"), App.GetResources("validation_consolidate1"));
                return(true);
            }

            if (dropUnitType.WCFUnitType.Name != "Корабль" && _Terrain.Game.SelectedOrder.ExtTerrain != _Terrain)
            {
                App.Agot2.errorView.ShowByDispatcher(App.GetResources("text_notify"), App.GetResources("validation_consolidate2"));
                return(true);
            }

            if (dropUnitType.WCFUnitType.Name == "Корабль")
            {
                if (!_Terrain.Game.SelectedOrder.ExtTerrain.JoinTerrainCol.Contains(_Terrain) || _Terrain.WCFTerrain.TerrainType == "Земля")
                {
                    App.Agot2.errorView.ShowByDispatcher(App.GetResources("text_notify"), App.GetResources("validation_consolidate3"));
                    return(true);
                }
                if (_Terrain.ExtHolderUser != null && _Terrain.ExtHolderUser != _Terrain.Game.ClientGameUser)
                {
                    App.Agot2.errorView.ShowByDispatcher(App.GetResources("text_notify"), App.GetResources("validation_consolidate4"));
                    return(true);
                }
            }

            WCFUnit unit = new WCFUnit();

            unit.UnitType = dropUnitType.WCFUnitType.Name;
            unit.Terrain  = _Terrain.WCFTerrain.Name;
            unit.Step     = _Terrain.Game.ClientStep.WCFStep.Id;

            ExtUnit extUnit = new ExtUnit(_Terrain.Game.ClientStep, unit);

            if (!CheckMove(extUnit, _Terrain))
            {
                return(true);
            }

            WCFMarchUnit wcfMarchUnit = new WCFMarchUnit();

            wcfMarchUnit.Unit     = extUnit.WCFUnit.Id;
            wcfMarchUnit.Terrain  = extUnit.TempTerrain.WCFTerrain.Name;
            wcfMarchUnit.UnitType = extUnit.TempUnitType.WCFUnitType.Name;

            _Terrain.Game.ClientStep.ExtGameUserInfo.ExtUnit.Add(extUnit);
            _Terrain.Game.ClientStep.ExtMarch.WCFMarch.MarchUnit.Add(wcfMarchUnit);
            _Terrain.Game.ClientStep.ExtMarch.SumCost += dropUnitType.WCFUnitType.Cost;
            return(true);
        }