Beispiel #1
0
 public static void BuildPropertyAttributes(this PartBuilder builder, Type type, ref List <Tuple <object, List <Attribute> > > configuredMembers)
 {
     builder.GetType()
     .GetMethod(nameof(BuildPropertyAttributes), BindingFlags.NonPublic | BindingFlags.Instance)
     .Invoke(builder, new object[] { type, configuredMembers });
 }
Beispiel #2
0
 public static bool BuildConstructorAttributes(this PartBuilder builder, Type type, ref List <Tuple <object, List <Attribute> > > configuredMembers)
 {
     return((bool)builder.GetType()
            .GetMethod(nameof(BuildConstructorAttributes), BindingFlags.NonPublic | BindingFlags.Instance)
            .Invoke(builder, new object[] { type, configuredMembers }));
 }
Beispiel #3
0
 public static IEnumerable <Attribute> BuildTypeAttributes(this PartBuilder builder, Type type)
 {
     return((IEnumerable <Attribute>)builder.GetType()
            .GetMethod(nameof(BuildTypeAttributes), BindingFlags.NonPublic | BindingFlags.Instance)
            .Invoke(builder, new object[] { type }));
 }
Beispiel #4
0
        public BuildViewModel(GTTcpClient client, PlayerListViewModel playerList, ShipLayout layout)
        {
            _playerList = playerList;
            _playerList.SynchronizeListWithClient();
            _playerList.LostConnection += PlayerList_LostConnection;

            _lastPickResolved      = true;
            _currentAlien          = Personnel.None;
            BuildingEnded          = false;
            _pickablePartsLock     = new object();
            _client                = client;
            _client.PartPicked    += Client_PartPicked;
            _client.PartPutBack   += Client_PartPutBack;
            _client.PartTaken     += Client_PartTaken;
            _client.BuildingEnded += Client_BuildingEnded;
            _client.FlightBegun   += Client_FlightBegun;

            ToggleReadyContent = "Építkezés befejezése";
            _ship     = new Ship(layout, _client.Player);
            ShipParts = new ObservableCollection <BuildPartViewModel>();

            _ship.PartRemoved += Ship_PartRemoved;

            for (int i = 0; i < 11; ++i)
            {
                for (int j = 0; j < 11; ++j)
                {
                    ShipParts.Add(new BuildPartViewModel
                    {
                        ShipRow      = i,
                        ShipColumn   = j,
                        IsValidField = _ship.IsValidField(i, j)
                    });
                }
            }

            foreach (BuildPartViewModel item in ShipParts)
            {
                item.PartClickCommand = new DelegateCommand(param => !_client.IsReady, param => ShipPartClick(param as BuildPartViewModel));
            }

            Part cockpit = _ship.GetCockpit();
            BuildPartViewModel cockpitViewModel = ShipParts.First(p => p.ShipRow == cockpit.Row && p.ShipColumn == cockpit.Column);

            cockpitViewModel.Part             = cockpit;
            cockpitViewModel.PartImage        = PartBuilder.GetPartImage(cockpit);
            cockpitViewModel.PartClickCommand = new DelegateCommand(param => false, param => { });

            PickableParts = new ObservableCollection <BuildPartViewModel>();
            for (int i = 0; i < 10; ++i)
            {
                for (int j = 0; j < 14; ++j)
                {
                    PickableParts.Add(new BuildPartViewModel
                    {
                        BuildRow     = i,
                        BuildColumn  = j,
                        IsValidField = true
                    });
                }
            }

            foreach (BuildPartViewModel item in PickableParts)
            {
                item.PartClickCommand = new DelegateCommand(param => !_client.IsReady && !_buildingEnded, param =>
                {
                    if (!_lastPickResolved)
                    {
                        return;
                    }
                    _lastPickResolved = false;
                    if (SelectedPart != null)
                    {
                        PutBackSelected();
                    }
                    BuildPartViewModel pickedPart = param as BuildPartViewModel;
                    _client.PickPart(pickedPart.BuildRow, pickedPart.BuildColumn);
                    SelectedPart = pickedPart;
                });
            }

            PutBackSelectedCommand = new DelegateCommand(param => SelectedPart != null && !_client.IsReady, param => PutBackSelected());

            RotateSelectedCommand = new DelegateCommand(param => SelectedPart != null && !_client.IsReady && !(SelectedPart.Part is Engine), param => RotateSelected(int.Parse(param as string)));

            ToggleReadyCommand = new DelegateCommand(param => !_buildingEnded || !_client.IsReady, param =>
            {
                try
                {
                    if (SelectedPart != null)
                    {
                        PutBackSelected();
                    }
                    if (!_client.IsReady && _buildingEnded)
                    {
                        _ship.FillCabins();
                        _client.StartFlightStage(_ship.Firepower, _ship.Enginepower, _ship.CrewCount, _ship.StorageSize, _ship.Batteries);
                        return;
                    }

                    _client.ToggleReady(ServerStage.Build);
                    ToggleReadyContent = (_client.IsReady, _buildingEnded) switch
                    {
                        (true, _) => "Mégsem kész",
                        (false, true) => "Tovább a repülésre",
                        (false, false) => "Építkezés befejezése"
                    };
                }
        public void AddStock_Throws_On_Negative_Value()
        {
            var testPart = PartBuilder.ReturnDefaultPart();

            Assert.Throws <ArgumentOutOfRangeException>(() => testPart.AddStock(-12));
        }
 public void ReportImportingPart(PartBuilder part)
 {
     this.ImportingParts.Add(part);
 }