Initial Void Bastion 0.20 prototype
This commit is contained in:
commit
7362ca0f02
251 files changed
+29688
No files matched your search
@@ -0,0 +1,332 @@
|
||||
#
|
||||
# © 2024-present https://github.com/cengiz-pz
|
||||
#
|
||||
class_name LoadAdRequest
|
||||
extends RefCounted
|
||||
|
||||
enum AdPosition {
|
||||
TOP, ## Ad will be anchored at the top of the screen.
|
||||
BOTTOM, ## Ad will be anchored at the bottom of the screen.
|
||||
LEFT, ## Ad will be anchored to the left of the screen.
|
||||
RIGHT, ## Ad will be anchored to the right of the screen.
|
||||
TOP_LEFT, ## Ad will be anchored at the top-left of the screen.
|
||||
TOP_RIGHT, ## Ad will be anchored at the top-right of the screen.
|
||||
BOTTOM_LEFT, ## Ad will be anchored at the bottom-left of the screen.
|
||||
BOTTOM_RIGHT, ## Ad will be anchored at the bottom-right of the screen.
|
||||
CENTER, ## Ad will be anchored at the center of the screen.
|
||||
CUSTOM, ## Ad position will be set dynamically.
|
||||
}
|
||||
|
||||
enum RequestedAdSize {
|
||||
BANNER, ## A standard ad size that refers to a rectangular ad unit, most commonly 320x50 density-independent pixels
|
||||
## (dp).
|
||||
LARGE_BANNER, ## A fixed-size banner with dimensions of 320x100 density-independent pixels (dp).
|
||||
MEDIUM_RECTANGLE, ## A standard 300x250 pixel ad, often referred to as the Interactive Advertising Bureau (IAB)
|
||||
## medium rectangle.
|
||||
FULL_BANNER, ## An ad size constant for an Interactive Advertising Bureau (IAB) full-size banner, which has a fixed
|
||||
## size of 468x60 density-independent pixels (dp).
|
||||
LEADERBOARD, ## A banner ad with dimensions of 728 pixels wide by 90 pixels tall. This is a standard display ad
|
||||
## size that is designed for tablet screens.
|
||||
ADAPTIVE, ## An ad that automatically adjusts its width and height to fit the device's available screen space,
|
||||
## providing the best-performing banner size for that specific layout.
|
||||
INLINE_ADAPTIVE, ## An ad that dynamically optimizes its height for the available inline content width, ensuring a
|
||||
## smoothly integrated banner that fits naturally within scrollable or in-feed layouts.
|
||||
SKYSCRAPER, ## Deprecated
|
||||
FLUID, ## Deprecated
|
||||
}
|
||||
|
||||
enum CollapsiblePosition {
|
||||
DISABLED, ## The banner ad will not be collapsible.
|
||||
TOP, ## The banner ad will be collapsible from bottom to top.
|
||||
BOTTOM, ## The banner ad will be collapsible from top to bottom.
|
||||
}
|
||||
|
||||
## Controls which aspect ratios the SDK should prefer when requesting native ad media.
|
||||
## Maps to NativeAdOptions.NATIVE_MEDIA_ASPECT_RATIO_* constants.
|
||||
enum NativeMediaAspectRatio {
|
||||
UNKNOWN = 0, ## No preference for aspect ratio (SDK default).
|
||||
ANY = 1, ## Any aspect ratio is acceptable.
|
||||
LANDSCAPE = 2, ## Prefer landscape (wider than tall) media.
|
||||
PORTRAIT = 3, ## Prefer portrait (taller than wide) media.
|
||||
SQUARE = 4, ## Prefer square (1:1) media.
|
||||
}
|
||||
|
||||
## Controls where the AdChoices icon is placed within the native ad view.
|
||||
## Maps to NativeAdOptions.ADCHOICES_* constants.
|
||||
enum NativeAdChoicesPlacement {
|
||||
TOP_LEFT = 0, ## AdChoices icon in the top-left corner.
|
||||
TOP_RIGHT = 1, ## AdChoices icon in the top-right corner (SDK default).
|
||||
BOTTOM_RIGHT = 2, ## AdChoices icon in the bottom-right corner.
|
||||
BOTTOM_LEFT = 3, ## AdChoices icon in the bottom-left corner.
|
||||
}
|
||||
|
||||
## Controls how icon/image assets are scaled inside their ImageView.
|
||||
## Maps directly to Android's ImageView.ScaleType enum.
|
||||
enum NativeImageScaleType {
|
||||
MATRIX = 0, ## Scale using the image Matrix.
|
||||
FIT_XY = 1, ## Scale to fill the view bounds, ignoring aspect ratio.
|
||||
FIT_START = 2, ## Scale to fit within bounds, aligned to top-left.
|
||||
FIT_CENTER = 3, ## Scale to fit within bounds, centered (Android default).
|
||||
FIT_END = 4, ## Scale to fit within bounds, aligned to bottom-right.
|
||||
CENTER = 5, ## Center image without scaling.
|
||||
CENTER_CROP = 6, ## Scale so shorter dimension fits; crop the longer one.
|
||||
CENTER_INSIDE = 7, ## Scale to fit within bounds if larger; center otherwise.
|
||||
}
|
||||
|
||||
const COLLAPSIBLE_POSITION_NAMES: Dictionary = {
|
||||
CollapsiblePosition.TOP: "top",
|
||||
CollapsiblePosition.BOTTOM: "bottom",
|
||||
}
|
||||
|
||||
const DATA_KEY_AD_UNIT_ID := &"ad_unit_id"
|
||||
const DATA_KEY_REQUEST_AGENT := &"request_agent"
|
||||
const DATA_KEY_AD_SIZE := &"ad_size"
|
||||
const DATA_KEY_ADAPTIVE_WIDTH := &"adaptive_width"
|
||||
const DATA_KEY_ADAPTIVE_MAX_HEIGHT := &"adaptive_max_height"
|
||||
const DATA_KEY_AD_POSITION := &"ad_position"
|
||||
const DATA_KEY_COLLAPSIBLE_POSITION := &"collapsible_position"
|
||||
const DATA_KEY_ANCHOR_TO_SAFE_AREA := &"anchor_to_safe_area"
|
||||
const DATA_KEY_KEYWORDS := &"keywords"
|
||||
const DATA_KEY_USER_ID := &"user_id"
|
||||
const DATA_KEY_CUSTOM_DATA := &"custom_data"
|
||||
const DATA_KEY_NETWORK_EXTRAS := &"network_extras"
|
||||
|
||||
# Native ad option keys — sent to the Java layer inside the ad-request dictionary.
|
||||
const DATA_KEY_NATIVE_MEDIA_ASPECT_RATIO := &"native_media_aspect_ratio"
|
||||
const DATA_KEY_NATIVE_RETURN_URLS_FOR_IMAGE_ASSETS := &"native_return_urls_for_image_assets"
|
||||
const DATA_KEY_NATIVE_REQUEST_MULTIPLE_IMAGES := &"native_request_multiple_images"
|
||||
const DATA_KEY_NATIVE_AD_CHOICES_PLACEMENT := &"native_ad_choices_placement"
|
||||
const DATA_KEY_NATIVE_IMAGE_SCALE_TYPE := &"native_image_scale_type"
|
||||
const DATA_KEY_NATIVE_DISABLE_VALIDATOR := &"native_disable_validator"
|
||||
|
||||
const DEFAULT_DATA: Dictionary = {
|
||||
DATA_KEY_KEYWORDS: [],
|
||||
DATA_KEY_NETWORK_EXTRAS: [],
|
||||
}
|
||||
|
||||
var _data: Dictionary
|
||||
|
||||
|
||||
func _init(a_data: Dictionary = DEFAULT_DATA.duplicate()) -> void:
|
||||
_data = a_data
|
||||
|
||||
|
||||
func set_ad_unit_id(a_value: String) -> LoadAdRequest:
|
||||
_data[DATA_KEY_AD_UNIT_ID] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func get_ad_unit_id() -> String:
|
||||
return _data[DATA_KEY_AD_UNIT_ID]
|
||||
|
||||
|
||||
func set_request_agent(a_value: String) -> LoadAdRequest:
|
||||
_data[DATA_KEY_REQUEST_AGENT] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func get_request_agent() -> String:
|
||||
return _data[DATA_KEY_REQUEST_AGENT]
|
||||
|
||||
|
||||
func set_ad_size(a_value: RequestedAdSize) -> LoadAdRequest:
|
||||
_data[DATA_KEY_AD_SIZE] = RequestedAdSize.keys()[a_value]
|
||||
return self
|
||||
|
||||
|
||||
func get_ad_size() -> RequestedAdSize:
|
||||
return RequestedAdSize[_data[DATA_KEY_AD_SIZE]] if _data.has(DATA_KEY_AD_SIZE) else RequestedAdSize.BANNER
|
||||
|
||||
|
||||
func set_adaptive_width(a_value: int) -> LoadAdRequest:
|
||||
_data[DATA_KEY_ADAPTIVE_WIDTH] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func get_adaptive_width() -> int:
|
||||
return _data[DATA_KEY_ADAPTIVE_WIDTH]
|
||||
|
||||
|
||||
func set_adaptive_max_height(a_value: int) -> LoadAdRequest:
|
||||
_data[DATA_KEY_ADAPTIVE_MAX_HEIGHT] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func get_adaptive_max_height() -> int:
|
||||
return _data[DATA_KEY_ADAPTIVE_MAX_HEIGHT]
|
||||
|
||||
|
||||
func set_ad_position(a_value: AdPosition) -> LoadAdRequest:
|
||||
_data[DATA_KEY_AD_POSITION] = AdPosition.keys()[a_value]
|
||||
return self
|
||||
|
||||
|
||||
func get_ad_position() -> AdPosition:
|
||||
return AdPosition[_data[DATA_KEY_AD_POSITION]] if _data.has(DATA_KEY_AD_POSITION) else AdPosition.CUSTOM
|
||||
|
||||
|
||||
func set_collapsible_position(a_value: CollapsiblePosition) -> LoadAdRequest:
|
||||
if a_value != CollapsiblePosition.DISABLED:
|
||||
_data[DATA_KEY_COLLAPSIBLE_POSITION] = COLLAPSIBLE_POSITION_NAMES[a_value]
|
||||
return self
|
||||
|
||||
|
||||
func get_collapsible_position() -> CollapsiblePosition:
|
||||
return (
|
||||
CollapsiblePosition[_data[DATA_KEY_COLLAPSIBLE_POSITION]]
|
||||
if _data.has(DATA_KEY_COLLAPSIBLE_POSITION)
|
||||
else CollapsiblePosition.DISABLED
|
||||
)
|
||||
|
||||
|
||||
func set_anchor_to_safe_area(a_value: bool) -> LoadAdRequest:
|
||||
_data[DATA_KEY_ANCHOR_TO_SAFE_AREA] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func get_anchor_to_safe_area() -> bool:
|
||||
return _data[DATA_KEY_ANCHOR_TO_SAFE_AREA] if _data.has(DATA_KEY_ANCHOR_TO_SAFE_AREA) else false
|
||||
|
||||
|
||||
func set_keywords(a_value: Array) -> LoadAdRequest:
|
||||
if a_value == null:
|
||||
_data[DATA_KEY_KEYWORDS] = []
|
||||
else:
|
||||
_data[DATA_KEY_KEYWORDS] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func add_keyword(a_value: String) -> LoadAdRequest:
|
||||
_data[DATA_KEY_KEYWORDS].append(a_value)
|
||||
return self
|
||||
|
||||
|
||||
func get_keywords() -> Array:
|
||||
return _data[DATA_KEY_KEYWORDS] if _data.has(DATA_KEY_KEYWORDS) else []
|
||||
|
||||
|
||||
func set_user_id(a_value: String) -> LoadAdRequest:
|
||||
_data[DATA_KEY_USER_ID] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func get_user_id() -> String:
|
||||
return _data[DATA_KEY_USER_ID] if _data.has(DATA_KEY_USER_ID) else ""
|
||||
|
||||
|
||||
func set_custom_data(a_value: String) -> LoadAdRequest:
|
||||
_data[DATA_KEY_CUSTOM_DATA] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func get_custom_data() -> String:
|
||||
return _data[DATA_KEY_CUSTOM_DATA] if _data.has(DATA_KEY_CUSTOM_DATA) else ""
|
||||
|
||||
|
||||
func set_network_extras(a_value: Array) -> LoadAdRequest:
|
||||
if a_value == null:
|
||||
_data[DATA_KEY_NETWORK_EXTRAS] = []
|
||||
else:
|
||||
_data[DATA_KEY_NETWORK_EXTRAS] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func get_network_extras() -> Array:
|
||||
return _data[DATA_KEY_NETWORK_EXTRAS] if _data.has(DATA_KEY_NETWORK_EXTRAS) else []
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Native Ad Options
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
|
||||
## Sets a preferred media aspect ratio for native ads.
|
||||
## Has no effect when used for non-native ad types.
|
||||
func set_native_media_aspect_ratio(a_value: NativeMediaAspectRatio) -> LoadAdRequest:
|
||||
_data[DATA_KEY_NATIVE_MEDIA_ASPECT_RATIO] = NativeMediaAspectRatio.keys()[a_value]
|
||||
return self
|
||||
|
||||
|
||||
func get_native_media_aspect_ratio() -> NativeMediaAspectRatio:
|
||||
return (
|
||||
NativeMediaAspectRatio[_data[DATA_KEY_NATIVE_MEDIA_ASPECT_RATIO]]
|
||||
if _data.has(DATA_KEY_NATIVE_MEDIA_ASPECT_RATIO)
|
||||
else NativeMediaAspectRatio.UNKNOWN
|
||||
)
|
||||
|
||||
|
||||
## When true the SDK returns image asset URLs instead of pre-fetched Drawable
|
||||
## objects, allowing the app to download and manage images itself.
|
||||
## Has no effect when used for non-native ad types.
|
||||
func set_native_return_urls_for_image_assets(a_value: bool) -> LoadAdRequest:
|
||||
_data[DATA_KEY_NATIVE_RETURN_URLS_FOR_IMAGE_ASSETS] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func get_native_return_urls_for_image_assets() -> bool:
|
||||
return (
|
||||
_data[DATA_KEY_NATIVE_RETURN_URLS_FOR_IMAGE_ASSETS]
|
||||
if _data.has(DATA_KEY_NATIVE_RETURN_URLS_FOR_IMAGE_ASSETS)
|
||||
else false
|
||||
)
|
||||
|
||||
|
||||
## When true the SDK may return ads that contain multiple images for a single
|
||||
## asset slot. By default only one image per slot is returned.
|
||||
## Has no effect when used for non-native ad types.
|
||||
func set_native_request_multiple_images(a_value: bool) -> LoadAdRequest:
|
||||
_data[DATA_KEY_NATIVE_REQUEST_MULTIPLE_IMAGES] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func get_native_request_multiple_images() -> bool:
|
||||
return (
|
||||
_data[DATA_KEY_NATIVE_REQUEST_MULTIPLE_IMAGES] if _data.has(DATA_KEY_NATIVE_REQUEST_MULTIPLE_IMAGES) else false
|
||||
)
|
||||
|
||||
|
||||
## Sets where the AdChoices icon is placed inside the native ad view.
|
||||
## Has no effect when used for non-native ad types.
|
||||
func set_native_ad_choices_placement(a_value: NativeAdChoicesPlacement) -> LoadAdRequest:
|
||||
_data[DATA_KEY_NATIVE_AD_CHOICES_PLACEMENT] = NativeAdChoicesPlacement.keys()[a_value]
|
||||
return self
|
||||
|
||||
|
||||
func get_native_ad_choices_placement() -> NativeAdChoicesPlacement:
|
||||
return (
|
||||
NativeAdChoicesPlacement[_data[DATA_KEY_NATIVE_AD_CHOICES_PLACEMENT]]
|
||||
if _data.has(DATA_KEY_NATIVE_AD_CHOICES_PLACEMENT)
|
||||
else NativeAdChoicesPlacement.TOP_RIGHT
|
||||
)
|
||||
|
||||
|
||||
## Sets how icon and image assets are scaled inside their Android ImageView.
|
||||
## Has no effect when used for non-native ad types.
|
||||
func set_native_image_scale_type(a_value: NativeImageScaleType) -> LoadAdRequest:
|
||||
_data[DATA_KEY_NATIVE_IMAGE_SCALE_TYPE] = NativeImageScaleType.keys()[a_value]
|
||||
return self
|
||||
|
||||
|
||||
func get_native_image_scale_type() -> NativeImageScaleType:
|
||||
return (
|
||||
NativeImageScaleType[_data[DATA_KEY_NATIVE_IMAGE_SCALE_TYPE]]
|
||||
if _data.has(DATA_KEY_NATIVE_IMAGE_SCALE_TYPE)
|
||||
else NativeImageScaleType.FIT_CENTER
|
||||
)
|
||||
|
||||
|
||||
## When true the SDK's native ad validator is disabled. The validator normally
|
||||
## logs warnings when required view bindings are missing; disabling it suppresses
|
||||
## those warnings in test / custom-layout scenarios.
|
||||
## Has no effect when used for non-native ad types.
|
||||
func set_native_disable_validator(a_value: bool) -> LoadAdRequest:
|
||||
_data[DATA_KEY_NATIVE_DISABLE_VALIDATOR] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func get_native_disable_validator() -> bool:
|
||||
return _data[DATA_KEY_NATIVE_DISABLE_VALIDATOR] if _data.has(DATA_KEY_NATIVE_DISABLE_VALIDATOR) else false
|
||||
|
||||
|
||||
func get_raw_data() -> Dictionary:
|
||||
return _data
|
||||
Reference in new issue
Block a user