Exemple #1
0
        void ParseMissionSpriteArray(MissionSet set, List <Sprite> missionSprites)
        {
            while (missionSprites.Count > 0)
            {
                Sprite currentSprite = missionSprites[0];
                missionSprites.RemoveAt(0);
                string currentSide;
                string currentSpriteName = SplitSideFromName(currentSprite.name, out currentSide);

                int i = 0;
                for (i = 0; i < missionSprites.Count; i++)
                {
                    string missionSide;
                    string missionSpriteName = SplitSideFromName(missionSprites[i].name, out missionSide);

                    if (missionSpriteName == currentSpriteName && currentSide != missionSide)
                    {
                        break;
                    }
                }

                if (i < missionSprites.Count)
                {
                    AddMission(set, currentSpriteName, currentSide == "Front" ? currentSprite : missionSprites[i], currentSide == "Back" ? missionSprites[i] : currentSprite);
                    missionSprites.RemoveAt(i);
                }
            }
        }
        private void AddIcon(int houseIndex, MissionSet set, short regionID, string[] unitDescriptions)
        {
            if (regionID <= 0 || houseIndex < 0 || houseIndex > _iconSprite.Length)
            {
                return;
            }

            if (ParentForm is GameForm f)
            {
                // regionIDs are one-based
                int regIndex = regionID - 1;

                SpriteBox sp = new SpriteBox();
                // Add first
                _missionBoxes.Add(sp);
                spTerritories.Controls.Add(sp);

                sp.BaseImage = _iconSprite[houseIndex];
                sp.Click    += (o, e) => { AudioEngine.Click(); f.Push(new MissionBriefingScreen(set, unitDescriptions), TransitionStyle.FADE_BLACK); };

                float2 iconLoc = _centers[regIndex];
                float2 sz      = spTerritories.Size.ToFloat2() / _territoryBitmapSize.ToFloat2() * _iconSprite[houseIndex].Size.ToFloat2() * ICON_SCALE;
                float2 loc     = spTerritories.Size.ToFloat2() * iconLoc / _territoryBitmapSize.ToFloat2() - sz / 2;

                sp.Location = loc.ToPoint();
                sp.Size     = sz.ToSize();
            }
        }
        private async Task <List <MissionSetAzure> > GenerateMissionDependentLinks(MissionSet missionSet, MissionSetAzure missionSetAzure)
        {
            if (missionSet.Missions == null)
            {
                return(new List <MissionSetAzure>());
            }
            var orderedMissionIds =
                missionSet.Missions.OrderBy(m => m.Order)
                .Where(t => !string.IsNullOrEmpty(t.Mission?.Id))
                .Select(m => m.Mission.Id)
                .Distinct()
                .ToList();
            var query = new QueryOptions <Mission>
            {
                Expand = new List <string> {
                    "PersonQualities"
                },
            };
            var missions =
                (await MissionRepository.GetMissions(query)).Where(m => orderedMissionIds.Contains(m.Id)).ToList();
            var  validOrderedMissionIds = orderedMissionIds.Where(o => missions.Any(m => m.Id == o));
            byte order        = 0;
            var  missionLinks =
                validOrderedMissionIds.Select(t => MissionSetAzure.CreateMissionLink(missionSet.Id, t, order++));
            var personQualitiesLinks = GeneratePersonQualitiesLinks(missionSet, missions);
            var allLinks             = missionLinks.Concat(personQualitiesLinks);

            FillAgesForMissionSet(missions, missionSetAzure);
            await RefreshBackReferencesForMissions(missions, missionSet.Id);

            return(allLinks.ToList());
        }
        /// <summary>
        ///     Updates the MissionSet.
        /// </summary>
        /// <param name="missionSet">
        ///     The MissionSet.
        /// </param>
        /// <returns>
        ///     Task{OperationResult}.
        /// </returns>
        public async Task <OperationResult> UpdateMissionSet(MissionSet missionSet)
        {
            var relatedEntities =
                await
                _azureManager.GetEntitiesAsync(new TableQuery <MissionSetAzure>().Where(missionSet.Id.GetFilterById()));

            var missionSetAzure = relatedEntities.FirstOrDefault(m => m.IsMissionSetEntity);

            if (missionSetAzure == null)
            {
                return(new OperationResult(OperationResultStatus.Error, "Can't find MissionSet for update"));
            }

            var updatedMissionSet = missionSet.ToAzureModel();

            updatedMissionSet.CopyToTableEntity(missionSetAzure);

            var entitiesToDelete = relatedEntities.Where(m => !m.IsMissionSetEntity).ToList();

            await ClearBackReferenceForMissionsExcludedFromMissionSet(entitiesToDelete, missionSet);

            var entitiesToAdd = await GenerateMissionDependentLinks(missionSet, missionSetAzure);

            var entitiesToUpdate = AzureTableExtensions.FilterUpdatableLinks(entitiesToAdd, entitiesToDelete);

            entitiesToUpdate.Add(missionSetAzure);

            return(await _azureManager.UpdateEntityBatchAsync(entitiesToUpdate, entitiesToAdd, entitiesToDelete));
        }
        /// <summary>
        ///     Adds the MissionSet.
        /// </summary>
        /// <param name="missionSet">
        ///     The MissionSet.
        /// </param>
        /// <returns>
        ///     Task{AddResult}.
        /// </returns>
        public async Task <IdResult> AddMissionSet(MissionSet missionSet)
        {
            missionSet.Id = Guid.NewGuid().ToString();
            await Task.Factory.StartNew(() => _allMissionsSets.Add(missionSet));

            return(new IdResult(missionSet.Id));
        }
Exemple #6
0
        /// <summary>
        /// To the azure model.
        /// </summary>
        /// <param name="missionSet">The mission set.</param>
        /// <returns>MissionSetAzure.</returns>
        public static MissionSetAzure ToAzureModel(this MissionSet missionSet)
        {
            var azureModel = new MissionSetAzure();

            missionSet.CopyTo(azureModel);
            azureModel.AgeFrom = missionSet.AgeFrom;
            azureModel.AgeTo   = missionSet.AgeTo;
            return(azureModel);
        }
        public MissionBriefingScreen(MissionSet mission, string[] unitDescriptions = null)
        {
            InitializeComponent();
            Dock = DockStyle.Fill;

            spBriefing.TextCacheUpdated += UpdateControls;
            _mission  = mission;
            _unitDesc = unitDescriptions;
            _imgSize  = spImage.Size;

            SetKeyAction(Keys.Escape, () => { if (spBack.Enabled)
                                              {
                                                  SpBack_Click(null, null);
                                              }
                         }, "Return to previous menu");
            SetKeyAction(Keys.Left, () => { if (spPrevItem.Enabled)
                                            {
                                                SpPrevItem_Click(null, null);
                                            }
                         }, "Previous item");
            SetKeyAction(Keys.Right, () => { if (spNextItem.Enabled)
                                             {
                                                 SpNextItem_Click(null, null);
                                             }
                         }, "Next item");
            SetKeyAction(Keys.Up, () => { if (spPrevPage.Enabled)
                                          {
                                              SpPrevPage_Click(null, null);
                                          }
                         }, "Previous page");
            SetKeyAction(Keys.Down, () => { if (spNextPage.Enabled)
                                            {
                                                SpNextPage_Click(null, null);
                                            }
                         }, "Next page");
            SetKeyAction(Keys.Enter, () => { if (spStart.Enabled)
                                             {
                                                 SpStart_Click(null, null);
                                             }
                         }, "Begin the mission");
            SetKeyAction(Keys.D1, () => { if (spEasy.Enabled)
                                          {
                                              SpEasy_Click(null, null);
                                          }
                         }, "Set Easy Difficulty");
            SetKeyAction(Keys.D2, () => { if (spNormal.Enabled)
                                          {
                                              SpNormal_Click(null, null);
                                          }
                         }, "Set Normal Difficulty");
            SetKeyAction(Keys.D3, () => { if (spHard.Enabled)
                                          {
                                              SpHard_Click(null, null);
                                          }
                         }, "Set Hard Difficulty");
        }
        private async Task ClearBackReferenceForMissionsExcludedFromMissionSet(
            List <MissionSetAzure> linksToBeDeleted,
            MissionSet missionSet)
        {
            var currentMissions  = linksToBeDeleted.Where(l => l.IsMissionLink).Select(l => l.MissionId);
            var includedMissions =
                (missionSet.Missions ?? new List <MissionWithOrder>()).Select(m => m.Mission.Id);
            var missionsToClearBackReference = currentMissions.Where(m => !includedMissions.Contains(m)).ToList();

            await ClearBackReference(missionsToClearBackReference);
        }
        private void SetMission(MissionSet mission, string[] unitDescriptions = null)
        {
            _mission  = mission;
            _unitDesc = unitDescriptions;

            spTitle.Text   = _mission.Info.Name;
            _briefingItems = GetBriefings();

            UpdateDifficulty(_mission.Difficulty);
            UpdateItem();
        }
        /// <summary>
        ///     Updates the MissionSet.
        /// </summary>
        /// <param name="missionSet">
        ///     The MissionSet.
        /// </param>
        /// <returns>
        ///     Task{OperationResult}.
        /// </returns>
        public async Task <OperationResult> UpdateMissionSet(MissionSet missionSet)
        {
            var existingMission = await Task.FromResult(_allMissionsSets.FirstOrDefault(ms => ms.Id == missionSet.Id));

            if (existingMission == null)
            {
                return(OperationResult.NotFound);
            }

            missionSet.CopyTo(existingMission);
            return(new OperationResult(OperationResultStatus.Success));
        }
Exemple #11
0
 public void LaunchGame(MissionSet missionSet)
 {
     if (!Handle(_mount.MountFiles(missionSet.Source)))
     {
         return;
     }
     if (!Handle(_mount.WriteSpawnFile(missionSet)))
     {
         return;
     }
     _gameProcess = _mount.RunSpawn(GAME_LOG_OUT, GAME_LOG_ERR);
 }
        public Vision2Client(Vision2Options options, Vision2Token token)
        {
            System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12 | System.Net.SecurityProtocolType.Tls11;

            _missionSet              = new MissionSet(token, options.ApiUrl);
            _fundSet                 = new FundSet(token, options.ApiUrl);
            _individualSet           = new IndividualSet(token, options.ApiUrl);
            _volunteerParticipantSet = new VolunteerParticipantSet(token, options.ApiUrl);
            _volunteerOpportunitySet = new VolunteerOpportunitySet(token, options.ApiUrl);
            _volunteerRoleSet        = new VolunteerRoleSet(token, options.ApiUrl);
            _paymentSet              = new PaymentSet(token, options.ApiUrl);
            _designationSet          = new DesignationSet(token, options.ApiUrl);
        }
Exemple #13
0
        /// <summary>
        /// Froms the azure model.
        /// </summary>
        /// <param name="azureModel">The azure model.</param>
        /// <returns>MissionSet.</returns>
        public static MissionSet FromAzureModel(this MissionSetAzure azureModel)
        {
            if (azureModel == null)
            {
                return(null);
            }

            var domainModel = new MissionSet();

            azureModel.CopyTo(domainModel);
            domainModel.AgeFrom = (byte?)azureModel.AgeFrom;
            domainModel.AgeTo   = (byte?)azureModel.AgeTo;
            return(domainModel);
        }
Exemple #14
0
        public CampaignStageInfo GetStage(MissionSet set)
        {
            for (int i = 0; i < Stages.Length; i++)
            {
                for (int m = 0; m < Stages[i].Missions.Length; m++)
                {
                    if (Stages[i].Missions[m].MissionID == set.Identifier.ID)
                    {
                        return(Stages[i]);
                    }
                }
            }

            return(default);
Exemple #15
0
        void AddMission(MissionSet set, string name, Sprite front, Sprite back)
        {
            Assert.IsNotNull(front);
            Assert.IsNotNull(back);

            List <Card> setCards;

            if (!missions.TryGetValue(set, out setCards))
            {
                setCards = new List <Card>();
                missions.Add(set, setCards);
            }

            setCards.Add(new Card(name, front, back));
        }
Exemple #16
0
        internal static MissionSetUI ConvertToUi(this MissionSet missionSetDomain)
        {
            if (missionSetDomain == null)
            {
                return(null);
            }

            return(new MissionSetUI
            {
                Id = missionSetDomain.Id,
                Name = missionSetDomain.Name,
                Missions =
                    missionSetDomain.Missions?.OrderBy(m => m.Order)
                    .Select(p => p.Mission.Id).ToList(),
            });
        }
        /// <summary>
        ///     Adds the MissionSet.
        /// </summary>
        /// <param name="missionSet">
        ///     The MissionSet.
        /// </param>
        /// <returns>
        ///     Task{AddResult}.
        /// </returns>
        public async Task <IdResult> AddMissionSet(MissionSet missionSet)
        {
            missionSet.Id = Guid.NewGuid().ToString("N");
            var azureModel   = missionSet.ToAzureModel();
            var missionLinks = await GenerateMissionDependentLinks(missionSet, azureModel);

            var batch = new List <MissionSetAzure> {
                azureModel
            };

            if (missionLinks.Any())
            {
                batch.AddRange(missionLinks);
            }

            return(await _azureManager.AddEntityBatchAsync(batch));
        }
        private IEnumerable <MissionSetAzure> GeneratePersonQualitiesLinks(
            MissionSet missionSet,
            IEnumerable <Mission> missions)
        {
            var allPersonQualitiesGrouped =
                missions.Where(m => m.PersonQualities != null)
                .SelectMany(m => m.PersonQualities)
                .GroupBy(p => p.PersonQualityId);
            var personQualitiesLinks =
                allPersonQualitiesGrouped.Select(
                    g =>
                    MissionSetAzure.CreateLinkToPersonQuality(
                        missionSet.Id,
                        g.Key,
                        g.Sum(p => p.Score)));

            return(personQualitiesLinks);
        }
Exemple #19
0
        public MountResult WriteSpawnFile(MissionSet mission)
        {
            SpawnerFile spfile = new SpawnerFile
            {
                Scenario        = RESERVED_MISSION_NAME,
                MySideID        = (int)mission.Info.House,
                MissionNumber   = mission.Info.MissionNumber,
                DifficultyLevel = (int)mission.Difficulty,
                Seed            = new Random().Next(2147483647)
            };

            try
            {
                spfile.WriteToFile(SpawnerPath);
            }
            catch (Exception ex)
            {
                return(new MountResult(MountErrorType.SPAWNER_WRITE_ERROR, Resource.Strings.MountError_SPAWNER_WRITE_ERROR, ex));
            }
            return(new MountResult(MountErrorType.SUCCESS));
        }
Exemple #20
0
        internal MissionSet ConvertToDomain()
        {
            var missionSet = new MissionSet
            {
                // Common
                Id   = Id,
                Name = Name,
            };

            if (Missions != null)
            {
                var order = (byte)0;
                var missionsWithScores =
                    Missions.Distinct().Select(m => new MissionWithOrder {
                    Mission = new Mission(m), Order = order++
                }).ToList();

                missionSet.Missions = missionsWithScores;
            }

            return(missionSet);
        }
Exemple #21
0
 /// <summary>
 ///     Adds the new MissionSet.
 /// </summary>
 /// <param name="misionSet">The mision.</param>
 /// <returns>Task{AddResult}.</returns>
 public Task <IdResult> AddNewMissionSet(MissionSet misionSet)
 {
     return(_missionSetRepository.AddMissionSet(misionSet));
 }
Exemple #22
0
 /// <summary>
 ///     Updates the MissionSet.
 /// </summary>
 /// <param name="mision">The mision.</param>
 /// <returns>Task{OperationResult}.</returns>
 public Task <OperationResult> UpdateMissionSet(MissionSet mision)
 {
     return(_missionSetRepository.UpdateMissionSet(mision));
 }
Exemple #23
0
 public void SetSelectedMissionSet(MissionSet selectedMissionSet) => this.selectedMissionSet        = selectedMissionSet;
Exemple #24
0
 public List <string> GetMissionNames(MissionSet set)
 {
     return(missions[set].Select(mission => mission.Name).ToList());
 }
Exemple #25
0
 public Card GetMissionCard(MissionSet set, string name)
 {
     return(missions[set].FirstOrDefault(card => card.Name == name));
 }
Exemple #26
0
 void Awake()
 {
     mission    = GameObject.Find("MissionGuide").GetComponent <MissionLocationFlagController>();
     elemission = GameObject.Find("spfloorPlane").GetComponent <MissionSet>();
 }
Exemple #27
0
        public MountResult ImportMissions <T>(string directoryPath, out Registry <T, MissionSet[]> sortedMissions, Func <MissionSet, T> filter)
        {
            sortedMissions = new Registry <T, MissionSet[]>();
            Registry <T, List <MissionSet> > temp = new Registry <T, List <MissionSet> >();

            if (directoryPath == null || !Directory.Exists(directoryPath) || File.Exists(directoryPath))
            {
                return(new MountResult(MountErrorType.INVALID_DIRECTORY, Resource.Strings.MountError_INVALID_DIRECTORY.F(directoryPath)));
            }

            List <string> errorList = new List <string>();

            foreach (string p in Directory.GetFiles(directoryPath, "*" + RULESFILE_EXT, SearchOption.AllDirectories))
            {
                try
                {
                    string dir  = Path.GetDirectoryName(p);
                    string name = Path.GetFileNameWithoutExtension(p);

                    string sMap = MAPFILE_FORMAT.F(dir, name);
                    string sMis = MISFILE_FORMAT.F(dir, name);
                    string sMod = MODFILE_FORMAT.F(dir, name);

                    // Ignore the set if either the map or the mis file does not exist
                    if (!File.Exists(sMap) || !File.Exists(sMis))
                    {
                        continue;
                    }

                    // The mod file is optional, exclude it if not present
                    if (!File.Exists(sMod))
                    {
                        sMod = null;
                    }

                    MissionSourceInfo srcInfo = new MissionSourceInfo(sMap, sMis, p, sMod);

                    // load rules file into memory (if some error occurs, ignore this set)
                    MapRulesFile rulf = new MapRulesFile();
                    try
                    {
                        rulf.ReadFromFile(p);
                        MissionInfo misInfo = rulf.RetrieveInfo();
                        MissionSet  set     = new MissionSet(misInfo, srcInfo);

                        T t = filter(set);
                        if (t != null)
                        {
                            if (temp.Contains(t))
                            {
                                temp[t].Add(set);
                            }
                            else
                            {
                                temp.Add(t, new List <MissionSet> {
                                    set
                                });
                            }
                        }
                    }
                    catch
                    {
                        errorList.Add(p);
                        continue;
                    }
                }
                catch
                {
                    errorList.Add(p);
                    continue;
                }
            }

            foreach (T t in temp.GetKeys())
            {
                sortedMissions.Put(t, temp[t].ToArray());
            }

            if (errorList.Count > 0)
            {
                return(new MountResult(MountErrorType.PARTIAL_ERROR, Resource.Strings.MountError_PARTIAL_ERROR.F(errorList.Count)));
            }
            return(new MountResult(MountErrorType.SUCCESS));
        }