예제 #1
0
    public void EmmitMissions(bool force = false)
    {
        TryToGetNextFromEmmitted();

        if (force || canEmmitMissions())
        {
            Mission currentMission = null;
            TryToGetNextFromEmmitted(true);
            if (currentMissions.Count == 0)          //инициализируем текущую
            {
                currentMission = GetOneMissionObject();
                if (currentMission != null)
                {
                    NotifyHasMissions();
                    currentMissions.Add(currentMission);
                }
                CurrentMissionsSerializer.SaveCurrentMissions(currentMissions, misionCurrentTag);
            }
            //emmitted
            int numberOfBoughtSlots = NumberOfBoughtSlots();
            if (emmittedMissionsPrefabs.Count < numberOfBoughtSlots - 1)
            {
                for (int i = emmittedMissionsPrefabs.Count; i < numberOfBoughtSlots - 1; i++)
                {
                    if (availableMissionsPrefabs.Count > 0)
                    {
                        Mission missionPrefab = (Mission)availableMissionsPrefabs [0];
                        availableMissionsPrefabs.Remove(missionPrefab);
                        emmittedMissionsPrefabs.Add(missionPrefab);
                    }
                }
                CurrentMissionsSerializer.SaveCurrentMissions(emmittedMissionsPrefabs, misionEmmittedTag);
            }
            lastMissionEmmitTime = GlobalOptions.GetLongFromDateTime(System.DateTime.UtcNow);
            MissionsUpdated();
        }
    }
예제 #2
0
    public long GetNextEmmitInSeconds()
    {
        long curTime = GlobalOptions.GetLongFromDateTime(System.DateTime.UtcNow);

        return(emmitPeriod - curTime + lastMissionEmmitTime);
    }
예제 #3
0
    protected bool canEmmitMissions()
    {
        long curTime = GlobalOptions.GetLongFromDateTime(System.DateTime.UtcNow);

        return(curTime - lastMissionEmmitTime > emmitPeriod);
    }