Exemplo n.º 1
0
bool marketing_is_campaign_type_applicable(sint32 campaignType)
{
    sint32         i;
    Ride           * ride;
    rct_ride_entry * rideEntry;

    switch (campaignType)
    {
    case ADVERTISING_CAMPAIGN_PARK_ENTRY_FREE:
    case ADVERTISING_CAMPAIGN_PARK_ENTRY_HALF_PRICE:
        if (!park_entry_price_unlocked())
            return false;
        return true;

    case ADVERTISING_CAMPAIGN_RIDE_FREE:
        if (!park_ride_prices_unlocked())
            return false;

        // fall-through
    case ADVERTISING_CAMPAIGN_RIDE:
        // Check if any rides exist
        FOR_ALL_RIDES(i, ride)
        {
            if (gRideClassifications[ride->type] == RIDE_CLASS_RIDE)
            {
                return true;
            }
        }
        return false;

    case ADVERTISING_CAMPAIGN_FOOD_OR_DRINK_FREE:
        // Check if any food or drink stalls exist
        FOR_ALL_RIDES(i, ride)
        {
            rideEntry = get_ride_entry(ride->subtype);
            if (rideEntry == nullptr)
            {
                continue;
            }
            if (
                shop_item_is_food_or_drink(rideEntry->shop_item) ||
                shop_item_is_food_or_drink(rideEntry->shop_item_secondary)
                )
            {
                return true;
            }
        }
        return false;

    default:
        return true;
    }
Exemplo n.º 2
0
bool marketing_is_campaign_type_applicable(int campaignType)
{
	int i;
	rct_ride *ride;
	rct_ride_entry *rideEntry;

	switch (campaignType) {
	case ADVERTISING_CAMPAIGN_PARK_ENTRY_FREE:
	case ADVERTISING_CAMPAIGN_PARK_ENTRY_HALF_PRICE:
		if (RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_PARK_FREE_ENTRY)
			return false;
		return true;

	case ADVERTISING_CAMPAIGN_RIDE_FREE:
		if (!(RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_PARK_FREE_ENTRY))
			return false;

		// fall-through
	case ADVERTISING_CAMPAIGN_RIDE:
		// Check if any rides exist
		FOR_ALL_RIDES(i, ride) {
			if (gRideClassifications[ride->type] == RIDE_CLASS_RIDE) {
				return true;
			}
		}
		return false;

	case ADVERTISING_CAMPAIGN_FOOD_OR_DRINK_FREE:
		// Check if any food or drink stalls exist
		FOR_ALL_RIDES(i, ride) {
			rideEntry = get_ride_entry(ride->subtype);
			if (rideEntry == NULL) {
				continue;
			}
			if (
				shop_item_is_food_or_drink(rideEntry->shop_item) ||
				shop_item_is_food_or_drink(rideEntry->shop_item_secondary)
			) {
				return true;
			}
		}
		return false;

	default:
		return true;
	}
Exemplo n.º 3
0
/**
 *
 *  rct2: 0x0069E320
 */
static void window_new_campaign_get_shop_items()
{
    int32_t i, numItems;
    Ride* ride;

    uint64_t items = 0;
    FOR_ALL_RIDES (i, ride)
    {
        rct_ride_entry* rideEntry = get_ride_entry(ride->subtype);
        if (rideEntry == nullptr)
        {
            continue;
        }
        uint8_t itemType = rideEntry->shop_item;
        if (itemType != SHOP_ITEM_NONE && shop_item_is_food_or_drink(itemType))
            items |= 1ULL << itemType;
    }