예제 #1
0
    private bool IsSaleOn(string saleItemKey, out int saleLeft)
    {
        GameConfigurationManager instance = Singleton <GameConfigurationManager> .Instance;
        ConfigData config = instance.GetConfig("iap_sale_items");

        if (!Singleton <IapManager> .Instance.HasProduct(this.saleItem))
        {
            saleLeft = -1;
            return(false);
        }
        if (config != null)
        {
            for (int i = 0; i < config.Keys.Length; i++)
            {
                if (config.Keys[i].StartsWith(saleItemKey))
                {
                    string[] array = config[config.Keys[i]].Split(new char[]
                    {
                        '-'
                    });
                    int saleTimeLeft = Shop.GetSaleTimeLeft(array[0], (array.Length <= 1) ? string.Empty : array[1]);
                    if (saleTimeLeft > 0 && !GameProgress.GetBool(config.Keys[i] + "_used", false, GameProgress.Location.Local, null))
                    {
                        saleLeft            = saleTimeLeft;
                        this.currentSaleKey = config.Keys[i];
                        return(true);
                    }
                }
            }
        }
        saleLeft = -1;
        return(false);
    }
예제 #2
0
        public override void Run(CompileContext c)
        {
            CompileErrors = new List <Error>();
            Process       = new Process();

            if (ReadOutput)
            {
                Process.StartInfo = new ProcessStartInfo
                {
                    RedirectStandardOutput = true,
                    RedirectStandardInput  = true,
                    RedirectStandardError  = true,
                    UseShellExecute        = false,
                    CreateNoWindow         = true
                };
            }

            var args = GameConfigurationManager.SubstituteValues(GetParameterString(), c.MapFile);;

            Process.StartInfo.FileName         = Path;
            Process.StartInfo.Arguments        = string.Join(" ", args);
            Process.StartInfo.WorkingDirectory = runningDirectory;

            Process.Start();
            Process.PriorityClass = ProcessPriorityClass.BelowNormal;

            if (ReadOutput)
            {
                readOutput();
            }
        }
예제 #3
0
 private void OnDestroy()
 {
     if (Singleton <GameConfigurationManager> .Instance != null)
     {
         GameConfigurationManager instance = Singleton <GameConfigurationManager> .Instance;
         instance.OnHasData = (Action)Delegate.Remove(instance.OnHasData, new Action(this.OnDataFetched));
     }
 }
예제 #4
0
 private void OnDestroy()
 {
     if (Singleton <GameConfigurationManager> .IsInstantiated())
     {
         GameConfigurationManager instance = Singleton <GameConfigurationManager> .Instance;
         instance.OnHasData = (Action)Delegate.Remove(instance.OnHasData, new Action(this.Initialize));
     }
 }
예제 #5
0
 public LootWheelRewards()
 {
     if (Singleton <GameConfigurationManager> .Instance.HasData)
     {
         this.Initialize();
     }
     else
     {
         GameConfigurationManager instance = Singleton <GameConfigurationManager> .Instance;
         instance.OnHasData = (Action)Delegate.Combine(instance.OnHasData, new Action(this.Initialize));
     }
 }
예제 #6
0
 private void Start()
 {
     if (Singleton <GameConfigurationManager> .Instance.HasData)
     {
         this.UpdateExperienceTable();
     }
     else
     {
         GameConfigurationManager instance = Singleton <GameConfigurationManager> .Instance;
         instance.OnHasData = (Action)Delegate.Combine(instance.OnHasData, new Action(this.UpdateExperienceTable));
     }
 }
예제 #7
0
 private void Awake()
 {
     if (Singleton <GameConfigurationManager> .Instance.HasData)
     {
         this.Initialize();
     }
     else
     {
         GameConfigurationManager instance = Singleton <GameConfigurationManager> .Instance;
         instance.OnHasData = (Action)Delegate.Combine(instance.OnHasData, new Action(this.Initialize));
     }
 }
예제 #8
0
 static AlienCustomizationManager()
 {
     if (Singleton <GameConfigurationManager> .Instance.HasData)
     {
         AlienCustomizationManager.Initialize();
     }
     else
     {
         GameConfigurationManager instance = Singleton <GameConfigurationManager> .Instance;
         Delegate onHasData = instance.OnHasData;
         instance.OnHasData = (Action)Delegate.Combine(onHasData, new Action(AlienCustomizationManager.Initialize));
     }
 }
예제 #9
0
 private void ProcessOnOutputDataReceived(object sender, DataReceivedEventArgs e)
 {
     if (e.Data != null)
     {
         if (e.Data.StartsWith("COMPILE_PAL_SET"))
         {
             GameConfigurationManager.ModifyCurrentContext(e.Data);
         }
         else
         {
             CompilePalLogger.LogLine(e.Data);
         }
     }
 }
예제 #10
0
 private void Awake()
 {
     this.renderers = base.GetComponentsInChildren <Renderer>(true);
     this.colliders = base.GetComponentsInChildren <Collider>(true);
     this.Activate(false);
     if (Singleton <GameConfigurationManager> .Instance.HasData)
     {
         this.Initialize();
     }
     else
     {
         GameConfigurationManager instance = Singleton <GameConfigurationManager> .Instance;
         instance.OnHasData = (Action)Delegate.Combine(instance.OnHasData, new Action(this.Initialize));
     }
 }
예제 #11
0
 private void Awake()
 {
     this.Enable(this.isEnabledAtStart);
     if (string.IsNullOrEmpty(this.gameConfigTitle) || string.IsNullOrEmpty(this.gameConfigKey) || Singleton <GameConfigurationManager> .Instance == null)
     {
         return;
     }
     if (Singleton <GameConfigurationManager> .Instance.HasData)
     {
         this.OnDataFetched();
     }
     else
     {
         GameConfigurationManager instance = Singleton <GameConfigurationManager> .Instance;
         instance.OnHasData = (Action)Delegate.Combine(instance.OnHasData, new Action(this.OnDataFetched));
     }
 }
예제 #12
0
 private BasePart.PartTier GetPartTierFromAmount(int amount)
 {
     for (int i = 3; i > 0; i--)
     {
         if (amount == AlienCustomizationManager.GetPrice())
         {
             return(BasePart.PartTier.Legendary);
         }
         GameConfigurationManager instance        = Singleton <GameConfigurationManager> .Instance;
         string            craft_PRICE_CONFIG_KEY = WorkshopMenu.CRAFT_PRICE_CONFIG_KEY;
         BasePart.PartTier partTier = (BasePart.PartTier)i;
         if (amount >= instance.GetValue <int>(craft_PRICE_CONFIG_KEY, partTier.ToString()))
         {
             return((BasePart.PartTier)i);
         }
     }
     return(BasePart.PartTier.Regular);
 }
예제 #13
0
        public override void Run(CompileContext c)
        {
            CompileErrors = new List <Error>();
            Process       = new Process();

            if (Metadata.ReadOutput)
            {
                Process.StartInfo = new ProcessStartInfo
                {
                    RedirectStandardOutput = true,
                    RedirectStandardInput  = true,
                    RedirectStandardError  = true,
                    UseShellExecute        = false,
                    CreateNoWindow         = true,
                };
            }

            var args = GameConfigurationManager.SubstituteValues(GetParameterString(true), c.MapFile);

            Process.StartInfo.FileName         = GameConfigurationManager.SubstituteValues(Metadata.Path);;
            Process.StartInfo.Arguments        = string.Join(" ", args);
            Process.StartInfo.WorkingDirectory = runningDirectory;

            try
            {
                Process.Start();
            }
            catch (Exception e)
            {
                CompilePalLogger.LogDebug(e.ToString());
                CompilePalLogger.LogCompileError($"Failed to run executable: {Process.StartInfo.FileName}\n", new Error($"Failed to run executable: {Process.StartInfo.FileName}", ErrorSeverity.FatalError));
                return;
            }

            if (Process != null && !Process.HasExited)
            {
                Process.PriorityClass = ProcessPriorityClass.BelowNormal;
            }

            if (Metadata.ReadOutput)
            {
                readOutput();
            }
        }
예제 #14
0
    private void Initialize()
    {
        GameConfigurationManager instance = Singleton <GameConfigurationManager> .Instance;

        instance.OnHasData = (Action)Delegate.Remove(instance.OnHasData, new Action(this.Initialize));
        this.m_amounts     = Singleton <GameConfigurationManager> .Instance.GetConfig("loot_wheel_prize_amounts");

        this.m_values = Singleton <GameConfigurationManager> .Instance.GetConfig("loot_wheel_prize_values");

        this.m_totalValue = 0;
        for (int i = 0; i < this.m_values.Keys.Length; i++)
        {
            int num  = int.Parse(this.m_amounts[this.m_amounts.Keys[i]]);
            int num2 = int.Parse(this.m_values[this.m_values.Keys[i]]);
            this.m_totalValue += num * num2;
        }
        this.m_totalInverseValue = 0f;
        for (int j = 0; j < this.m_values.Keys.Length; j++)
        {
            int num3 = int.Parse(this.m_amounts[this.m_amounts.Keys[j]]);
            int num4 = int.Parse(this.m_values[this.m_values.Keys[j]]);
            this.m_totalInverseValue += (float)this.m_totalValue / ((float)num3 * (float)num4);
        }
        this.m_rewardValueAvg = (float)this.m_totalValue / (float)this.m_values.Count;
        if (Singleton <BuildCustomizationLoader> .Instance.IsOdyssey)
        {
            this.m_spinPriceMultiplier = 0f;
            this.m_spinPriceVariation  = 0f;
        }
        else
        {
            ConfigData config = Singleton <GameConfigurationManager> .Instance.GetConfig("loot_wheel_spin_price_params");

            this.m_spinPriceVariation  = float.Parse(config["variation_percentage"]);
            this.m_spinPriceMultiplier = float.Parse(config["price_multiplier"]);
        }
        this.m_initialized = true;
        if (this.OnInitialized != null)
        {
            this.OnInitialized();
        }
    }
예제 #15
0
    private void UpdateExperienceTable()
    {
        GameConfigurationManager instance = Singleton <GameConfigurationManager> .Instance;

        instance.OnHasData = (Action)Delegate.Remove(instance.OnHasData, new Action(this.UpdateExperienceTable));
        ConfigData config = Singleton <GameConfigurationManager> .Instance.GetConfig("player_experience_table");

        if (config == null || config.Count == 0)
        {
            return;
        }
        this.MaxLevel        = 0;
        this.experienceTable = new Dictionary <int, int>();
        for (int i = 0; i < config.Count; i++)
        {
            int num;
            int value;
            if (int.TryParse(config.Keys[i], out num) && int.TryParse(config.Values[i], out value))
            {
                if (!this.experienceTable.ContainsKey(num))
                {
                    this.experienceTable.Add(num, value);
                }
                if (num > this.MaxLevel)
                {
                    this.MaxLevel = num;
                }
            }
        }
        if (PlayerProgress.pendingExperienceTypes != null && PlayerProgress.pendingExperienceTypes.Count > 0)
        {
            foreach (KeyValuePair <ExperienceType, int> keyValuePair in PlayerProgress.pendingExperienceTypes)
            {
                for (int j = 0; j < keyValuePair.Value; j++)
                {
                    this.AddExperience(keyValuePair.Key);
                }
            }
        }
        this.FirePlayerProgressEvent();
    }
예제 #16
0
        public override void Run(CompileContext c)
        {
            CompileErrors = new List <Error>();
            Process       = new Process();

            if (Metadata.ReadOutput)
            {
                Process.StartInfo = new ProcessStartInfo
                {
                    RedirectStandardOutput = true,
                    RedirectStandardInput  = true,
                    RedirectStandardError  = true,
                    UseShellExecute        = false,
                    CreateNoWindow         = true,
                };
            }

            var args = GameConfigurationManager.SubstituteValues(GetParameterString(), c.MapFile);

            Process.StartInfo.FileName         = GameConfigurationManager.SubstituteValues(Metadata.Path);
            Process.StartInfo.Arguments        = string.Join(" ", args);
            Process.StartInfo.WorkingDirectory = runningDirectory;

            Process.Start();
            Process.PriorityClass = ProcessPriorityClass.BelowNormal;

            //VRAD can only use up to 16 cores, more cores reduces performance, and increased compile time.
            //By assigning affinity to the process significantly speed up compiles on CPUs with more than 16 cores.
            if (this.Name == "VRAD" &&
                Environment.ProcessorCount > 16)
            {
                //Hex 0xffff means core use core 0 through 15.
                Process.ProcessorAffinity = (IntPtr)0xffff;
            }

            if (Metadata.ReadOutput)
            {
                readOutput();
            }
        }
예제 #17
0
    private void Initialize()
    {
        GameConfigurationManager instance = Singleton <GameConfigurationManager> .Instance;

        instance.OnHasData = (Action)Delegate.Remove(instance.OnHasData, new Action(this.Initialize));
        string value = Singleton <GameConfigurationManager> .Instance.GetValue <string>("free_crate_ad_reward", "LootCrateType");

        try
        {
            this.reward = (LootCrateType)Enum.Parse(typeof(LootCrateType), value);
        }
        catch (ArgumentException)
        {
            this.reward = LootCrateType.Cardboard;
        }
        this.adReward = new AdReward(AdvertisementHandler.FreeLootCratePlacement);
        AdReward adReward = this.adReward;

        adReward.OnAdFinished = (Action)Delegate.Combine(adReward.OnAdFinished, new Action(this.OnAdFinished));
        AdReward adReward2 = this.adReward;

        adReward2.OnCancel = (Action)Delegate.Combine(adReward2.OnCancel, new Action(this.OnAdCancel));
        AdReward adReward3 = this.adReward;

        adReward3.OnConfirmationFailed = (Action)Delegate.Combine(adReward3.OnConfirmationFailed, new Action(this.OnConfirmationFailed));
        AdReward adReward4 = this.adReward;

        adReward4.OnFailed = (Action)Delegate.Combine(adReward4.OnFailed, new Action(this.OnAdFailed));
        AdReward adReward5 = this.adReward;

        adReward5.OnLoading = (Action)Delegate.Combine(adReward5.OnLoading, new Action(this.OnAdLoading));
        AdReward adReward6 = this.adReward;

        adReward6.OnReady = (Action)Delegate.Combine(adReward6.OnReady, new Action(this.OnAdReady));
        AdReward adReward7 = this.adReward;

        adReward7.OnAdPlayFailed = (Action)Delegate.Combine(adReward7.OnAdPlayFailed, new Action(this.OnAdPlayFailed));
        this.adReward.Load();
    }
예제 #18
0
    private void Awake()
    {
        base.SetAsPersistant();
        this.status        = DoubleRewardManager.Status.Uninitialized;
        this.lastCheckTime = -1f;
        if (Singleton <GameConfigurationManager> .Instance.HasData)
        {
            this.rewardTime = Singleton <GameConfigurationManager> .Instance.GetValue <int>("double_reward_duration", "seconds");

            this.rewardCoins = Singleton <GameConfigurationManager> .Instance.GetValue <int>("double_reward_coin_reward", "coin_reward");

            this.Initialize();
        }
        else
        {
            GameConfigurationManager instance = Singleton <GameConfigurationManager> .Instance;
            instance.OnHasData = (Action)Delegate.Combine(instance.OnHasData, new Action(delegate()
            {
                this.rewardTime  = Singleton <GameConfigurationManager> .Instance.GetValue <int>("double_reward_duration", "seconds");
                this.rewardCoins = Singleton <GameConfigurationManager> .Instance.GetValue <int>("double_reward_coin_reward", "coin_reward");
                this.Initialize();
            }));
        }
    }