public static void UpdateIsComplete(this GameConfigurationViewModel item)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }

            item.IsComplete = item.PlayerPresets.Count >= ViewModelConstants.MinPlayerCount;
        }
        public static GameConfigurationViewModel Clone(this GameConfigurationViewModel item)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }

            var viewModel = ServiceLocator.Container.Resolve <GameConfigurationViewModel>();

            viewModel.CopyFrom(item);

            return(viewModel);
        }
        public static void OnPlayerPresetsChanged(this GameConfigurationViewModel item)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }

            item.IsPlayerCanBeAdded = item.PlayerPresets.Count < ModuleConstants.MaxPlayerCount;
            item.UpdateIsComplete();

            // Update colors.
            for (var i = 0; i < item.PlayerPresets.Count; i++)
            {
                item.PlayerPresets[i].Color = (PlayerColors)i;
            }
        }
        public static void CopyFrom(this GameConfigurationViewModel target, GameConfigurationViewModel source)
        {
            if (target == null)
            {
                throw new ArgumentNullException(nameof(target));
            }

            if (source == null)
            {
                throw new ArgumentNullException(nameof(source));
            }

            if (ReferenceEquals(target, source))
            {
                throw new ArgumentException(nameof(source));
            }

            var name = source.Name;

            if (string.IsNullOrWhiteSpace(name))
            {
                name = target.Id.GetHead();
            }
            else
            {
                var words = name.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

                name = string.Join(" ", words);
            }

            // TODO: Copy fields here.
            target.SaveTime         = source.SaveTime;
            target.Name             = name;
            target.MaxWinPoints     = source.MaxWinPoints;
            target.MaxLoyaltyPoints = source.MaxLoyaltyPoints;

            target.PlayerPresets.ReplaceAll(source.PlayerPresets.Select(x =>
            {
                var vm = ServiceLocator.Container.Resolve <PlayerPresetViewModel>();

                // TODO: Copy fields here.
                vm.Race  = target.RaceMap[x.Race.Value];
                vm.Color = x.Color;

                return(vm);
            }));
        }
        public static bool HasDifference(this GameConfigurationViewModel item1, GameConfigurationViewModel item2)
        {
            if (item1 == null)
            {
                throw new ArgumentNullException(nameof(item1));
            }

            if (item2 == null)
            {
                throw new ArgumentNullException(nameof(item2));
            }

            if (ReferenceEquals(item1, item2))
            {
                throw new ArgumentException(nameof(item2));
            }

            // TODO: Compare fields here.
            if (item1.Name != item2.Name ||
                item1.MaxWinPoints != item2.MaxWinPoints ||
                item1.MaxLoyaltyPoints != item2.MaxLoyaltyPoints ||
                item1.PlayerPresets.Count != item2.PlayerPresets.Count)
            {
                return(true);
            }

            for (var i = 0; i < item1.PlayerPresets.Count; i++)
            {
                var playerPreset1 = item1.PlayerPresets[i];
                var playerPreset2 = item2.PlayerPresets[i];

                // TODO: Compare fields here.
                if (playerPreset1.Race.Value != playerPreset2.Race.Value ||
                    playerPreset1.Color != playerPreset2.Color)
                {
                    return(true);
                }
            }

            return(false);
        }
Exemple #6
0
        public static GameConfigurationDataModel ToDataModel(this GameConfigurationViewModel item)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }

            return(new GameConfigurationDataModel
            {
                // TODO: Copy fields here.
                Id = item.Id,
                SaveTime = item.SaveTime,
                Name = item.Name,
                WinPointTrackerSize = item.MaxWinPoints,
                LoyaltyTrackerSize = item.MaxLoyaltyPoints,

                PlayerPresets = item.PlayerPresets.Select(x => new PlayerPresetDataModel
                {
                    // TODO: Copy fields here.
                    Race = x.Race.Value,
                    Color = x.Color
                }).ToArray()
            });
        }