Beispiel #1
0
        public ExtUnit(ExtStep step, WCFUnit wcfUnit)
        {
            Step    = step;
            WCFUnit = wcfUnit;

            ExtTerrain  = MainWindow.ClientInfo.WorldData.Terrain.Single(p => p.WCFTerrain.Name == WCFUnit.Terrain);
            ExtUnitType = MainWindow.ClientInfo.WorldData.UnitType.Single(p => p.WCFUnitType.Name == WCFUnit.UnitType);
        }
        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);
        }