コード例 #1
0
ファイル: AdsManager.cs プロジェクト: Zigrav/PlaneEco
    private OpportunityBalancer GetCurrOpportunityBalancer(PlacementGroup placement_group, int opportunities)
    {
        int test_opportunities = 0;

        for (int i = 0; i < placement_group.opportunity_balancers.Count; i++)
        {
            OpportunityBalancer opportunity_balancer = placement_group.opportunity_balancers[i];
            test_opportunities += opportunity_balancer.opportunities;

            if (opportunities <= test_opportunities)
            {
                return(opportunity_balancer);
            }

            if (i == placement_group.opportunity_balancers.Count - 1)
            {
                return(opportunity_balancer);
            }
        }

        throw new System.Exception("Appropriate Opportunity Balancer is not found! " + name);
    }
コード例 #2
0
ファイル: AdsManager.cs プロジェクト: Zigrav/PlaneEco
    public bool CheckOpportunity(string internal_id)
    {
        // Get Stuff about the ad by the internal_id
        AdIds          ad_ids          = GetAdIds(internal_id);
        PlacementGroup placement_group = GetPlacementGroup(internal_id);

        // If No Ads is bought and placement_group is excluded by this purchase
        if (no_ads.v && no_ads_excluded.Contains(placement_group.id))
        {
            return(false);
        }

        // If resurrection ad was already shown this level
        // Debug.Log("Check Opp: " + " internal_id: " + internal_id + " rd_resurrect_shown_count: " + rd_resurrect_shown_count.v + " rd_resurrect_name: " + rd_resurrect_name);
        if (internal_id.Contains(rd_resurrect_name) && rd_resurrect_shown_count.v >= 1)
        {
            return(false);
        }

        if (placement_group.balancer_type == balancer_type_enum.time_balancer)
        {
            // Get current time
            float curr_time = Time.time;

            TimeBalancer time_balancer = GetCurrTimeBalancer(placement_group, Time.time);

            float minutes_since_last_opportunity = (curr_time - placement_group.last_opportunity_timestamp.v) / 60;
            float ad_per_minutes = ((float)time_balancer.ads / (float)time_balancer.minutes);

            placement_group.balance.v += minutes_since_last_opportunity * ad_per_minutes;

            placement_group.last_opportunity_timestamp.v = curr_time;
        }
        else if (placement_group.balancer_type == balancer_type_enum.opportunity_balancer)
        {
            // This counts as an opportunity
            placement_group.opportunities.v++;

            OpportunityBalancer opportunity_balancer = GetCurrOpportunityBalancer(placement_group, placement_group.opportunities.v);
            float ad_per_opportunity = ((float)opportunity_balancer.ads / (float)opportunity_balancer.opportunities);

            // 1 symbolizes one opportunity that is provided with this method
            placement_group.balance.v += 1 * ad_per_opportunity;
        }
        else if (placement_group.balancer_type == balancer_type_enum.always_yes)
        {
            // Just set it to 1
            placement_group.balance.v = 1.0f;
        }
        else if (placement_group.balancer_type == balancer_type_enum.always_no)
        {
            // Just set it to 0
            placement_group.balance.v = 0.0f;
        }

        if (placement_group.balance.v < placement_group.balance_min)
        {
            placement_group.balance.v = placement_group.balance_min;
        }
        if (placement_group.balance.v > placement_group.balance_max)
        {
            placement_group.balance.v = placement_group.balance_max;
        }

        // Debug.Log("id: " + internal_id + " group: " + placement_group.id + " bal: " + placement_group.balance.v);

        if (placement_group.balance.v < 1)
        {
            return(false);
        }

#if UNITY_IOS
        string platform_ad_id = ad_ids.ios_id;
#elif UNITY_ANDROID || UNITY_EDITOR
        string platform_ad_id = ad_ids.android_id;
#endif

        if (!Advertisement.IsReady(platform_ad_id))
        {
            return(false);
        }

        return(true);
    }