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,32 @@
|
||||
#
|
||||
# © 2024-present https://github.com/cengiz-pz
|
||||
#
|
||||
class_name AdError
|
||||
extends RefCounted
|
||||
|
||||
const CODE_PROPERTY := &"code"
|
||||
const DOMAIN_PROPERTY := &"domain"
|
||||
const MESSAGE_PROPERTY := &"message"
|
||||
const CAUSE_PROPERTY := &"cause"
|
||||
|
||||
var _data: Dictionary
|
||||
|
||||
|
||||
func _init(a_data: Dictionary):
|
||||
_data = a_data
|
||||
|
||||
|
||||
func get_code() -> int:
|
||||
return _data[CODE_PROPERTY]
|
||||
|
||||
|
||||
func get_domain() -> String:
|
||||
return _data[DOMAIN_PROPERTY]
|
||||
|
||||
|
||||
func get_message() -> String:
|
||||
return _data[MESSAGE_PROPERTY]
|
||||
|
||||
|
||||
func get_cause() -> AdError:
|
||||
return AdError.new(_data[CAUSE_PROPERTY]) if _data.has(CAUSE_PROPERTY) else null
|
||||
@@ -0,0 +1 @@
|
||||
uid://0att8tjqjm8t
|
||||
@@ -0,0 +1,37 @@
|
||||
#
|
||||
# © 2024-present https://github.com/cengiz-pz
|
||||
#
|
||||
class_name AdInfo
|
||||
extends RefCounted
|
||||
|
||||
const AD_ID_PROPERTY := &"ad_id"
|
||||
const MEASURED_WIDTH_PROPERTY := &"measured_width"
|
||||
const MEASURED_HEIGHT_PROPERTY := &"measured_height"
|
||||
const IS_COLLAPSIBLE_PROPERTY := &"is_collapsible"
|
||||
const LOAD_AD_REQUEST_PROPERTY := &"load_ad_request"
|
||||
|
||||
var _data: Dictionary
|
||||
|
||||
|
||||
func _init(a_data: Dictionary):
|
||||
_data = a_data
|
||||
|
||||
|
||||
func get_ad_id() -> String:
|
||||
return _data[AD_ID_PROPERTY] if _data.has(AD_ID_PROPERTY) else ""
|
||||
|
||||
|
||||
func get_measured_width() -> int:
|
||||
return _data[MEASURED_WIDTH_PROPERTY] if _data.has(MEASURED_WIDTH_PROPERTY) else 0
|
||||
|
||||
|
||||
func get_measured_height() -> int:
|
||||
return _data[MEASURED_HEIGHT_PROPERTY] if _data.has(MEASURED_HEIGHT_PROPERTY) else 0
|
||||
|
||||
|
||||
func get_is_collapsible() -> bool:
|
||||
return _data[IS_COLLAPSIBLE_PROPERTY] if _data.has(IS_COLLAPSIBLE_PROPERTY) else false
|
||||
|
||||
|
||||
func get_load_ad_request() -> LoadAdRequest:
|
||||
return LoadAdRequest.new(_data[LOAD_AD_REQUEST_PROPERTY]) if _data.has(LOAD_AD_REQUEST_PROPERTY) else null
|
||||
@@ -0,0 +1 @@
|
||||
uid://pm7kx5541j4
|
||||
@@ -0,0 +1,22 @@
|
||||
#
|
||||
# © 2024-present https://github.com/cengiz-pz
|
||||
#
|
||||
class_name AdSize
|
||||
extends RefCounted
|
||||
|
||||
const WIDTH_PROPERTY := &"width"
|
||||
const HEIGHT_PROPERTY := &"height"
|
||||
|
||||
var _data: Dictionary
|
||||
|
||||
|
||||
func _init(a_data: Dictionary):
|
||||
_data = a_data if a_data else {}
|
||||
|
||||
|
||||
func get_width() -> int:
|
||||
return _data[WIDTH_PROPERTY] if _data.has(WIDTH_PROPERTY) else 0
|
||||
|
||||
|
||||
func get_height() -> int:
|
||||
return _data[HEIGHT_PROPERTY] if _data.has(HEIGHT_PROPERTY) else 0
|
||||
@@ -0,0 +1 @@
|
||||
uid://1y453yingj1w
|
||||
@@ -0,0 +1,52 @@
|
||||
#
|
||||
# © 2024-present https://github.com/cengiz-pz
|
||||
#
|
||||
class_name AdapterResponseInfo
|
||||
extends RefCounted
|
||||
|
||||
const AD_ERROR_PROPERTY := &"ad_error"
|
||||
const AD_SOURCE_ID_PROPERTY := &"ad_source_id"
|
||||
const AD_SOURCE_INSTANCE_ID_PROPERTY := &"ad_source_instance_id"
|
||||
const AD_SOURCE_INSTANCE_NAME_PROPERTY := &"ad_source_instance_name"
|
||||
const AD_SOURCE_NAME_PROPERTY := &"ad_source_name"
|
||||
const ADAPTER_CLASS_NAME_PROPERTY := &"adapter_class_name"
|
||||
const NETWORK_TAG_PROPERTY := &"network_tag"
|
||||
const LATENCY_PROPERTY := &"latency"
|
||||
|
||||
var _data: Dictionary
|
||||
|
||||
|
||||
func _init(a_data: Dictionary):
|
||||
_data = a_data
|
||||
|
||||
|
||||
func get_ad_error() -> AdError:
|
||||
return AdError.new(_data[AD_ERROR_PROPERTY]) if _data.has(AD_ERROR_PROPERTY) else null
|
||||
|
||||
|
||||
func get_ad_source_id() -> String:
|
||||
return _data[AD_SOURCE_ID_PROPERTY]
|
||||
|
||||
|
||||
func get_ad_source_instance_id() -> String:
|
||||
return _data[AD_SOURCE_INSTANCE_ID_PROPERTY]
|
||||
|
||||
|
||||
func get_ad_source_instance_name() -> String:
|
||||
return _data[AD_SOURCE_INSTANCE_NAME_PROPERTY]
|
||||
|
||||
|
||||
func get_ad_source_name() -> String:
|
||||
return _data[AD_SOURCE_NAME_PROPERTY]
|
||||
|
||||
|
||||
func get_adapter_class_name() -> String:
|
||||
return _data[ADAPTER_CLASS_NAME_PROPERTY]
|
||||
|
||||
|
||||
func get_network_tag() -> String:
|
||||
return _data[NETWORK_TAG_PROPERTY]
|
||||
|
||||
|
||||
func get_latency() -> int:
|
||||
return _data[LATENCY_PROPERTY]
|
||||
@@ -0,0 +1 @@
|
||||
uid://kwsy2dkniyn8
|
||||
@@ -0,0 +1,32 @@
|
||||
#
|
||||
# © 2024-present https://github.com/cengiz-pz
|
||||
#
|
||||
class_name AdapterStatus
|
||||
extends RefCounted
|
||||
|
||||
const ADAPTER_CLASS_PROPERTY := &"adapter_class"
|
||||
const LATENCY_PROPERTY := &"latency"
|
||||
const INITIALIZATION_STATE_PROPERTY := &"initialization_state"
|
||||
const DESCRIPTION_PROPERTY := &"description"
|
||||
|
||||
var _data: Dictionary
|
||||
|
||||
|
||||
func _init(a_data: Dictionary):
|
||||
_data = a_data
|
||||
|
||||
|
||||
func get_adapter_class() -> String:
|
||||
return _data[ADAPTER_CLASS_PROPERTY]
|
||||
|
||||
|
||||
func get_latency() -> int:
|
||||
return _data[LATENCY_PROPERTY]
|
||||
|
||||
|
||||
func get_initialization_state() -> String:
|
||||
return _data[INITIALIZATION_STATE_PROPERTY]
|
||||
|
||||
|
||||
func get_description() -> String:
|
||||
return _data[DESCRIPTION_PROPERTY]
|
||||
@@ -0,0 +1 @@
|
||||
uid://scnfdeiyquod
|
||||
@@ -0,0 +1,105 @@
|
||||
#
|
||||
# © 2024-present https://github.com/cengiz-pz
|
||||
#
|
||||
class_name AdmobConfig
|
||||
extends RefCounted
|
||||
|
||||
enum ContentRating {
|
||||
G, ## G means "General Audiences" and is suitable for all ages, containing no objectionable material
|
||||
## (minimal violence, no nudity or sex scenes, and no drug use).
|
||||
PG, ## PG stands for "Parental Guidance Suggested," meaning that some material may not be suitable for young
|
||||
## children (may include themes, language, or mild violence).
|
||||
T, ## T means Teen, and indicates content suitable for ages 13 and older (can include violence, suggestive themes,
|
||||
## crude humor, simulated gambling, and/or infrequent strong language).
|
||||
MA, ## MA stands for "Mature Audience", signifying that the material is intended for adults (may include graphic
|
||||
## violence, strong language, or explicit sexual activity).
|
||||
}
|
||||
|
||||
enum TagForChildDirectedTreatment {
|
||||
UNSPECIFIED = -1, ## Means that you have not provided a specific instruction for your app's content to be treated
|
||||
## as child-directed for COPPA purposes.
|
||||
FALSE = 0, ## Means you are indicating that your app's content is not child-directed for the purposes of the
|
||||
## Children's Online Privacy Protection Act (COPPA).
|
||||
TRUE = 1, ## Tells ad networks to treat ad requests as if the content is directed towards children, which is
|
||||
## important for complying with regulations like COPPA.
|
||||
}
|
||||
|
||||
enum TagForUnderAgeOfConsent {
|
||||
UNSPECIFIED = -1, ## Means you have not provided any information on whether the user is under the age of consent,
|
||||
## so the system does not apply any specific treatment for these users based on this tag alone.
|
||||
FALSE = 0, ## Indicates that you do not want the specific ad request to receive the special handling suitable for
|
||||
## users under the age of consent in the EEA, the UK, and Switzerland.
|
||||
TRUE = 1, ## Indicates that you want the ad request to be handled in a manner suitable for users under the age of
|
||||
## consent within the EEA, the UK, and Switzerland.
|
||||
}
|
||||
|
||||
enum PersonalizationState {
|
||||
DEFAULT = 0, ## By default, the SDK will attempt to serve personalized ads based on the user's past behavior and
|
||||
## interests.
|
||||
ENABLED = 1, ## Indicates that the Google Mobile Ads SDK is authorized to serve ads that are tailored to the user
|
||||
## based on past activity and collected data.
|
||||
DISABLED = 2, ## Means that ad requests are set to serve non-personalized ads (NPA) only.
|
||||
}
|
||||
|
||||
const DATA_KEY_IS_REAL := &"is_real"
|
||||
const DATA_KEY_MAX_AD_CONTENT_RATING := &"max_ad_content_rating"
|
||||
const DATA_KEY_CHILD_DIRECTED_TREATMENT := &"tag_for_child_directed_treatment"
|
||||
const DATA_KEY_UNDER_AGE_OF_CONSENT := &"tag_for_under_age_of_consent"
|
||||
const DATA_KEY_FIRST_PARTY_ID_ENABLED := &"first_party_id_enabled"
|
||||
const DATA_KEY_PERSONALIZATION_STATE := &"personalization_state"
|
||||
const DATA_KEY_TEST_DEVICE_IDS := &"test_device_ids"
|
||||
|
||||
var _data: Dictionary
|
||||
|
||||
|
||||
func _init():
|
||||
_data = {
|
||||
DATA_KEY_TEST_DEVICE_IDS: [],
|
||||
}
|
||||
|
||||
|
||||
func set_is_real(a_value: bool) -> AdmobConfig:
|
||||
_data[DATA_KEY_IS_REAL] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func set_max_ad_content_rating(a_value: ContentRating) -> AdmobConfig:
|
||||
_data[DATA_KEY_MAX_AD_CONTENT_RATING] = ContentRating.keys()[a_value]
|
||||
return self
|
||||
|
||||
|
||||
func set_child_directed_treatment(a_value: TagForChildDirectedTreatment) -> AdmobConfig:
|
||||
_data[DATA_KEY_CHILD_DIRECTED_TREATMENT] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func set_under_age_of_consent(a_value: TagForUnderAgeOfConsent) -> AdmobConfig:
|
||||
_data[DATA_KEY_UNDER_AGE_OF_CONSENT] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func set_first_party_id_enabled(a_value: bool) -> AdmobConfig:
|
||||
_data[DATA_KEY_FIRST_PARTY_ID_ENABLED] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func set_personalization_state(a_value: PersonalizationState) -> AdmobConfig:
|
||||
_data[DATA_KEY_PERSONALIZATION_STATE] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func set_test_device_ids(a_value: Array) -> AdmobConfig:
|
||||
if a_value == null:
|
||||
_data[DATA_KEY_TEST_DEVICE_IDS] = []
|
||||
else:
|
||||
_data[DATA_KEY_TEST_DEVICE_IDS] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func add_test_device_id(a_value: String) -> AdmobConfig:
|
||||
_data[DATA_KEY_TEST_DEVICE_IDS].append(a_value)
|
||||
return self
|
||||
|
||||
|
||||
func get_raw_data() -> Dictionary:
|
||||
return _data
|
||||
@@ -0,0 +1 @@
|
||||
uid://ihpl6qb5lkw2
|
||||
@@ -0,0 +1,46 @@
|
||||
#
|
||||
# © 2026-present https://github.com/cengiz-pz
|
||||
#
|
||||
class_name AdmobSettings
|
||||
extends RefCounted
|
||||
|
||||
const DATA_KEY_AD_VOLUME := &"ad_volume"
|
||||
const DATA_KEY_ADS_MUTED := &"ads_muted"
|
||||
const DATA_KEY_APPLY_AT_STARTUP := &"apply_at_startup"
|
||||
|
||||
var _data: Dictionary
|
||||
|
||||
|
||||
func _init(a_data: Dictionary = {}) -> void:
|
||||
_data = a_data
|
||||
|
||||
|
||||
func set_ad_volume(a_value: float) -> AdmobSettings:
|
||||
_data[DATA_KEY_AD_VOLUME] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func get_ad_volume() -> float:
|
||||
return _data[DATA_KEY_AD_VOLUME]
|
||||
|
||||
|
||||
func set_ads_muted(a_value: bool) -> AdmobSettings:
|
||||
_data[DATA_KEY_ADS_MUTED] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func are_ads_muted() -> bool:
|
||||
return _data[DATA_KEY_ADS_MUTED]
|
||||
|
||||
|
||||
func set_apply_at_startup(a_value: bool) -> AdmobSettings:
|
||||
_data[DATA_KEY_APPLY_AT_STARTUP] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func get_apply_at_startup() -> bool:
|
||||
return _data[DATA_KEY_APPLY_AT_STARTUP]
|
||||
|
||||
|
||||
func get_raw_data() -> Dictionary:
|
||||
return _data
|
||||
@@ -0,0 +1 @@
|
||||
uid://u1bg67vtlhd8
|
||||
@@ -0,0 +1,63 @@
|
||||
#
|
||||
# © 2024-present https://github.com/cengiz-pz
|
||||
#
|
||||
class_name ConsentRequestParameters
|
||||
extends RefCounted
|
||||
|
||||
enum DebugGeography {
|
||||
NOT_SET = -1, ## Don't specify location. (Actual location will be used.)
|
||||
DISABLED = 0, ## Use actual location.
|
||||
EEA = 1, ## Use European Economic Area.
|
||||
NOT_EEA = 2, ## Deprecated.
|
||||
REGULATED_US_STATE = 3, ## Use a regulated state of USA. (ie. California)
|
||||
OTHER = 4, ## Use any non-regulated location.
|
||||
}
|
||||
|
||||
const IS_REAL_PROPERTY := &"is_real"
|
||||
const TAG_FOR_UNDER_AGE_OF_CONSENT_PROPERTY := &"tag_for_under_age_of_consent"
|
||||
const DEBUG_GEOGRAPHY_PROPERTY := &"debug_geography"
|
||||
const TEST_DEVICE_HASHED_IDS_PROPERTY := &"test_device_hashed_ids"
|
||||
|
||||
var _data: Dictionary
|
||||
|
||||
|
||||
func _init():
|
||||
_data = {
|
||||
TEST_DEVICE_HASHED_IDS_PROPERTY: [],
|
||||
}
|
||||
|
||||
|
||||
func set_is_real(a_value: bool) -> ConsentRequestParameters:
|
||||
_data[IS_REAL_PROPERTY] = a_value
|
||||
|
||||
return self
|
||||
|
||||
|
||||
func set_tag_for_under_age_of_consent(a_value: AdmobConfig.TagForUnderAgeOfConsent) -> ConsentRequestParameters:
|
||||
match a_value:
|
||||
AdmobConfig.TagForChildDirectedTreatment.TRUE:
|
||||
_data[TAG_FOR_UNDER_AGE_OF_CONSENT_PROPERTY] = true
|
||||
AdmobConfig.TagForChildDirectedTreatment.FALSE:
|
||||
_data[TAG_FOR_UNDER_AGE_OF_CONSENT_PROPERTY] = false
|
||||
|
||||
return self
|
||||
|
||||
|
||||
func set_debug_geography(a_value: DebugGeography) -> ConsentRequestParameters:
|
||||
_data[DEBUG_GEOGRAPHY_PROPERTY] = a_value
|
||||
|
||||
return self
|
||||
|
||||
|
||||
func add_test_device_hashed_id(a_value: String) -> ConsentRequestParameters:
|
||||
_data[TEST_DEVICE_HASHED_IDS_PROPERTY].append(a_value)
|
||||
|
||||
return self
|
||||
|
||||
|
||||
func get_device_ids() -> Array:
|
||||
return _data[TEST_DEVICE_HASHED_IDS_PROPERTY]
|
||||
|
||||
|
||||
func get_raw_data() -> Dictionary:
|
||||
return _data
|
||||
@@ -0,0 +1 @@
|
||||
uid://5nuqawjs80oi
|
||||
@@ -0,0 +1,22 @@
|
||||
#
|
||||
# © 2024-present https://github.com/cengiz-pz
|
||||
#
|
||||
class_name FormError
|
||||
extends RefCounted
|
||||
|
||||
const CODE_PROPERTY := &"code"
|
||||
const MESSAGE_PROPERTY := &"message"
|
||||
|
||||
var _data: Dictionary
|
||||
|
||||
|
||||
func _init(a_data: Dictionary):
|
||||
_data = a_data if a_data else {}
|
||||
|
||||
|
||||
func get_code() -> int:
|
||||
return _data[CODE_PROPERTY] if _data.has(CODE_PROPERTY) else 0
|
||||
|
||||
|
||||
func get_message() -> String:
|
||||
return _data[MESSAGE_PROPERTY] if _data.has(MESSAGE_PROPERTY) else ""
|
||||
@@ -0,0 +1 @@
|
||||
uid://f4ywykxwjpal
|
||||
@@ -0,0 +1,22 @@
|
||||
#
|
||||
# © 2024-present https://github.com/cengiz-pz
|
||||
#
|
||||
class_name InitializationStatus
|
||||
extends RefCounted
|
||||
|
||||
var _data: Dictionary
|
||||
|
||||
|
||||
func _init(a_data: Dictionary):
|
||||
if a_data == null:
|
||||
_data = {}
|
||||
else:
|
||||
_data = a_data
|
||||
|
||||
|
||||
func get_network_tags() -> Array:
|
||||
return _data.keys()
|
||||
|
||||
|
||||
func get_adapter_status(a_network_tag: String) -> AdapterStatus:
|
||||
return AdapterStatus.new(_data[a_network_tag]) if _data.has(a_network_tag) else null
|
||||
@@ -0,0 +1 @@
|
||||
uid://b0oie3ngw68ha
|
||||
@@ -0,0 +1,15 @@
|
||||
#
|
||||
# © 2024-present https://github.com/cengiz-pz
|
||||
#
|
||||
class_name LoadAdError
|
||||
extends AdError
|
||||
|
||||
const RESPONSE_INFO_PROPERTY := &"response_info"
|
||||
|
||||
|
||||
func _init(a_data: Dictionary):
|
||||
super(a_data)
|
||||
|
||||
|
||||
func get_response_info() -> ResponseInfo:
|
||||
return ResponseInfo.new(_data[RESPONSE_INFO_PROPERTY]) if _data.has(RESPONSE_INFO_PROPERTY) else null
|
||||
@@ -0,0 +1 @@
|
||||
uid://ddnpjk4ksplb5
|
||||
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
uid://c86msp23213bn
|
||||
@@ -0,0 +1,322 @@
|
||||
#
|
||||
# © 2024-present https://github.com/cengiz-pz
|
||||
#
|
||||
class_name MediationNetwork
|
||||
extends RefCounted
|
||||
|
||||
enum Flag {
|
||||
APPLOVIN = 1 << 0, ## AppLovin
|
||||
CHARTBOOST = 1 << 1, ## Chartboost
|
||||
DTEXCHANGE = 1 << 2, ## DT Exchange (previously Fyber)
|
||||
IMOBILE = 1 << 3, ## i-mobile
|
||||
INMOBI = 1 << 4, ## InMobi
|
||||
IRONSOURCE = 1 << 5, ## ironSource
|
||||
LIFTOFF = 1 << 6, ## Liftoff Monetize (previously Vungle)
|
||||
LINE = 1 << 7, ## LINE Ads Network
|
||||
MAIO = 1 << 8, ## maio
|
||||
META = 1 << 9, ## Meta Audience Network (previously Facebook)
|
||||
MINTEGRAL = 1 << 10, ## Mintegral
|
||||
MOLOCO = 1 << 11, ## Moloco
|
||||
MYTARGET = 1 << 12, ## myTarget
|
||||
PANGLE = 1 << 13, ## Pangle
|
||||
UNITY = 1 << 14, ## Unity Ads
|
||||
}
|
||||
|
||||
const FLAG_PROPERTY := &"flag"
|
||||
const TAG_PROPERTY := &"tag"
|
||||
const DEPENDENCIES_PROPERTY := &"dependencies"
|
||||
const MAVEN_REPO_PROPERTY := &"maven_repo"
|
||||
const PACKAGE_PROPERTY := &"package"
|
||||
const PACKAGE_URL_PROPERTY := &"package_url"
|
||||
const PACKAGE_VERSION_PROPERTY := &"package_version"
|
||||
const SK_AD_NETWORK_IDS_PROPERTY := &"sk_ad_network_ids"
|
||||
const GOOGLE_SK_AD_NETWORK_IDS = [ "cstr6suwn9", "4fzdc2evr5", "2fnua5tdw4", "ydx93a7ass", "p78axxw29g", "v72qych5uu", "ludvb6z3bs", "cp8zw746q7", "3sh42y64q3", "c6k4g5qg8m", "s39g8k73mm", "3qy4746246", "f38h382jlk", "hs6bdukanm", "mlmmfzh3r3", "v4nxqhlyqp", "wzmmz9fp6w", "su67r6k2v3", "yclnxrl5pm", "t38b2kh725", "7ug5zh24hu", "gta9lk7p23", "vutu7akeur", "y5ghdn5j9k", "v9wttpbfk9", "n38lu8286q", "47vhws6wlr", "kbd757ywx3", "9t245vhmpl", "a2p9lx4jpn", "22mmun2rn5", "44jx6755aq", "k674qkevps", "4468km3ulz", "2u9pt9hc89", "8s468mfl3y", "klf5c3l5u5", "ppxm28t8ap", "kbmxgpxpgc", "uw77j35x4d", "578prtvx9j", "4dzt52r2t5", "tl55sbb4fm", "c3frkrj4fj", "e5fvkxwrpn", "8c4e2ghe7u", "3rd42ekr43", "97r2b46745", "3qcr597p9d" ]
|
||||
|
||||
const SK_AD_NETWORK_ITEM_LIST_FORMAT: String = """
|
||||
<key>SKAdNetworkItems</key>
|
||||
<array>
|
||||
%s
|
||||
</array>
|
||||
"""
|
||||
|
||||
const SK_AD_NETWORK_ITEM_FORMAT: String = """
|
||||
<dict>
|
||||
<key>SKAdNetworkIdentifier</key>
|
||||
<string>%s.skadnetwork</string>
|
||||
</dict>
|
||||
"""
|
||||
|
||||
const MEDIATION_NETWORKS: Dictionary = {
|
||||
Flag.APPLOVIN: {
|
||||
FLAG_PROPERTY: Flag.APPLOVIN,
|
||||
TAG_PROPERTY: "applovin",
|
||||
DEPENDENCIES_PROPERTY: ["com.google.ads.mediation:applovin:13.4.0.1"],
|
||||
MAVEN_REPO_PROPERTY: "",
|
||||
PACKAGE_PROPERTY: "AppLovinAdapterTarget",
|
||||
PACKAGE_URL_PROPERTY: "https://github.com/googleads/googleads-mobile-ios-mediation-applovin.git",
|
||||
PACKAGE_VERSION_PROPERTY: "13.4.0",
|
||||
SK_AD_NETWORK_IDS_PROPERTY: ["22mmun2rn5", "238da6jt44", "24t9a8vw3c", "24zw6aqk47", "252b5q8x7y", "275upjj5gd", "294l99pt4k", "2fnua5tdw4", "2u9pt9hc89", "32z4fx6l9h", "3l6bd9hu43", "3qcr597p9d", "3qy4746246", "3rd42ekr43", "3sh42y64q3", "424m5254lk", "4468km3ulz", "44jx6755aq", "44n7hlldy6", "47vhws6wlr", "488r3q3dtq", "4dzt52r2t5", "4fzdc2evr5", "4mn522wn87", "4pfyvq9l8r", "4w7y6s5ca2", "523jb4fst2", "52fl2v3hgk", "54nzkqm89y", "578prtvx9j", "5a6flpkh64", "5l3tpt7t6e", "5lm9lj6jb7", "5tjdwbrq8w", "6964rsfnh4", "6g9af3uyq4", "6p4ks3rnbw", "6v7lgmsu45", "6xzpu9s2p8", "737z793b9f", "74b6s63p6l", "79pbpufp6p", "7fmhfwg9en", "7rz58n8ntl", "7ug5zh24hu", "84993kbrcf", "89z7zv988g", "8c4e2ghe7u", "8m87ys6875", "8r8llnkz5a", "8s468mfl3y", "97r2b46745", "9b89h5y424", "9nlqeag3gk", "9rd848q2bz", "9t245vhmpl", "9vvzujtq5s", "9yg77x724h", "a2p9lx4jpn", "a7xqa6mtl2", "a8cz6cu7e5", "av6w8kgt66", "b9bk5wbcq9", "bxvub5ada5", "c3frkrj4fj", "c6k4g5qg8m", "cg4yq2srnc", "cj5566h2ga", "cp8zw746q7", "cs644xg564", "cstr6suwn9", "dbu4b84rxf", "dkc879ngq3", "dzg6xy7pwj", "e5fvkxwrpn", "ecpz2srf59", "eh6m2bh4zr", "ejvt5qm6ak", "f38h382jlk", "f73kdq92p3", "f7s53z58qe", "feyaarzu9v", "g28c52eehv", "g2y4y55b64", "g6gcrrvk4p", "ggvn48r87g", "glqzh8vgby", "gta8lk7p23", "gta9lk7p23", "hb56zgv37p", "hdw39hrw9y", "hs6bdukanm", "k674qkevps", "kbd757ywx3", "kbmxgpxpgc", "klf5c3l5u5", "krvm3zuq6h", "lr83yxwka7", "ludvb6z3bs", "m297p6643m", "m5mvw97r93", "m8dbw4sv7c", "mj797d8u6f", "mlmmfzh3r3", "mls7yz5dvl", "mp6xlyr22a", "mqn7fxpca7", "mtkv5xtk9e", "n38lu8286q", "n66cz3y3bx", "n6fk4nfna4", "n9x2a789qt", "nzq8sh4pbs", "p78axxw29g", "ppxm28t8ap", "prcb7njmu6", "pwa73g5rt2", "pwdxu55a5a", "qqp299437r", "qu637u8glc", "r45fhb6rf7", "rvh3l7un93", "rx5hdcabgc", "s39g8k73mm", "s69wq72ugq", "su67r6k2v3", "t38b2kh725", "tl55sbb4fm", "u679fj5vs4", "uw77j35x4d", "v4nxqhlyqp", "v72qych5uu", "v79kvwwj4g", "v9wttpbfk9", "vcra2ehyfk", "vhf287vqwu", "vutu7akeur", "w9q455wk68", "wg4vff78zm", "wzmmz9fp6w", "x44k69ngh6", "x5l83yy675", "x8jxxk4ff5", "x8uqf25wch", "xga6mpmplv", "xy9t38ct57", "y45688jllp", "y5ghdn5j9k", "yclnxrl5pm", "ydx93a7ass", "zmvfpc5aq8", "zq492l623r"],
|
||||
},
|
||||
Flag.CHARTBOOST: {
|
||||
FLAG_PROPERTY: Flag.CHARTBOOST,
|
||||
TAG_PROPERTY: "chartboost",
|
||||
DEPENDENCIES_PROPERTY: ["com.google.ads.mediation:chartboost:9.10.0.1"],
|
||||
MAVEN_REPO_PROPERTY: "https://cboost.jfrog.io/artifactory/chartboost-ads/",
|
||||
PACKAGE_PROPERTY: "ChartboostAdapterTarget",
|
||||
PACKAGE_URL_PROPERTY: "https://github.com/googleads/googleads-mobile-ios-mediation-chartboost.git",
|
||||
PACKAGE_VERSION_PROPERTY: "9.11.001",
|
||||
SK_AD_NETWORK_IDS_PROPERTY: ["f38h382jlk"],
|
||||
},
|
||||
Flag.DTEXCHANGE: {
|
||||
FLAG_PROPERTY: Flag.DTEXCHANGE,
|
||||
TAG_PROPERTY: "dtexchange",
|
||||
DEPENDENCIES_PROPERTY: ["com.google.ads.mediation:fyber:8.4.0.0"],
|
||||
MAVEN_REPO_PROPERTY: "",
|
||||
PACKAGE_PROPERTY: "DTExchangeAdapterTarget",
|
||||
PACKAGE_URL_PROPERTY: "https://github.com/googleads/googleads-mobile-ios-mediation-dtexchange.git",
|
||||
PACKAGE_VERSION_PROPERTY: "8.4.600",
|
||||
SK_AD_NETWORK_IDS_PROPERTY: ["ydx93a7ass", "t6d3zquu66", "4fzdc2evr5", "a8cz6cu7e5", "9nlqeag3gk", "a2p9lx4jpn", "k674qkevps", "c3frkrj4fj", "n6fk4nfna4", "mtkv5xtk9e", "p78axxw29g", "n9x2a789qt", "kbmxgpxpgc", "s39g8k73mm", "krvm3zuq6h", "294l99pt4k", "3rd42ekr43", "ggvn48r87g", "4pfyvq9l8r", "cg4yq2srnc", "5a6flpkh64", "v72qych5uu", "x8uqf25wch", "c6k4g5qg8m", "wg4vff78zm", "rx5hdcabgc", "32z4fx6l9h", "3qy4746246", "252b5q8x7y", "f38h382jlk", "24t9a8vw3c", "hs6bdukanm", "9rd848q2bz", "prcb7njmu6", "m8dbw4sv7c", "9g2aggbj52", "wzmmz9fp6w", "yclnxrl5pm", "t38b2kh725", "7ug5zh24hu", "5lm9lj6jb7", "ejvt5qm6ak", "7rz58n8ntl", "kbd757ywx3", "9t245vhmpl", "44jx6755aq", "tl55sbb4fm", "8s468mfl3y", "4468km3ulz", "2u9pt9hc89", "av6w8kgt66", "klf5c3l5u5", "hdw39hrw9y", "y45688jllp", "dzg6xy7pwj", "3sh42y64q3", "ppxm28t8ap", "f73kdq92p3", "5l3tpt7t6e", "uw77j35x4d", "mlmmfzh3r3", "6g9af3uyq4", "su67r6k2v3", "g28c52eehv", "pwa73g5rt2", "zq492l623r", "22mmun2rn5", "8r8llnkz5a", "47vhws6wlr", "5tjdwbrq8w", "h65wbv5k3f", "2fnua5tdw4", "7fmhfwg9en", "tvvz7th9br", "x44k69ngh6", "vhf287vqwu", "4dzt52r2t5", "x8yj322td6", "tskbem2b5g", "cp8zw746q7", "cj5566h2ga", "578prtvx9j", "e5fvkxwrpn", "r45fhb6rf7", "mqn7fxpca7", "g6gcrrvk4p", "xga6mpmplv", "qu637u8glc", "w9q455wk68", "275upjj5gd", "97r2b46745", "cstr6suwn9"],
|
||||
},
|
||||
Flag.IMOBILE: {
|
||||
FLAG_PROPERTY: Flag.IMOBILE,
|
||||
TAG_PROPERTY: "imobile",
|
||||
DEPENDENCIES_PROPERTY: ["com.google.ads.mediation:imobile:2.3.2.1"],
|
||||
MAVEN_REPO_PROPERTY: "https://imobile.github.io/adnw-sdk-android",
|
||||
PACKAGE_PROPERTY: "IMobileAdapterTarget",
|
||||
PACKAGE_URL_PROPERTY: "https://github.com/googleads/googleads-mobile-ios-mediation-imobile.git",
|
||||
PACKAGE_VERSION_PROPERTY: "2.3.402",
|
||||
SK_AD_NETWORK_IDS_PROPERTY: ["v4nxqhlyqp"],
|
||||
},
|
||||
Flag.INMOBI: {
|
||||
FLAG_PROPERTY: Flag.INMOBI,
|
||||
TAG_PROPERTY: "inmobi",
|
||||
DEPENDENCIES_PROPERTY: ["com.google.ads.mediation:inmobi:10.8.8.1"],
|
||||
MAVEN_REPO_PROPERTY: "",
|
||||
PACKAGE_PROPERTY: "InMobiAdapterTarget",
|
||||
PACKAGE_URL_PROPERTY: "https://github.com/googleads/googleads-mobile-ios-mediation-inmobi.git",
|
||||
PACKAGE_VERSION_PROPERTY: "10.8.600",
|
||||
SK_AD_NETWORK_IDS_PROPERTY: ["uw77j35x4d", "7ug5zh24hu", "hs6bdukanm", "4fzdc2evr5", "ggvn48r87g", "5lm9lj6jb7", "9rd848q2bz", "c6k4g5qg8m", "wzmmz9fp6w", "3sh42y64q3", "yclnxrl5pm", "kbd757ywx3", "f73kdq92p3", "ydx93a7ass", "w9q455wk68", "prcb7njmu6", "wg4vff78zm", "mlmmfzh3r3", "tl55sbb4fm", "4pfyvq9l8r", "t38b2kh725", "5l3tpt7t6e", "7rz58n8ntl", "klf5c3l5u5", "cg4yq2srnc", "av6w8kgt66", "9t245vhmpl", "v72qych5uu", "2u9pt9hc89", "44jx6755aq", "8s468mfl3y", "p78axxw29g", "ppxm28t8ap", "424m5254lk", "5a6flpkh64", "pwa73g5rt2", "e5fvkxwrpn", "9nlqeag3gk", "k674qkevps", "cj5566h2ga", "mtkv5xtk9e", "3rd42ekr43", "g28c52eehv", "2fnua5tdw4", "4468km3ulz", "97r2b46745", "glqzh8vgby", "3qcr597p9d", "578prtvx9j", "n6fk4nfna4", "b9bk5wbcq9", "kbmxgpxpgc", "294l99pt4k", "523jb4fst2", "mls7yz5dvl", "74b6s63p6l", "22mmun2rn5", "52fl2v3hgk", "6g9af3uyq4", "x5l83yy675", "mqn7fxpca7", "g6gcrrvk4p", "r45fhb6rf7", "c3frkrj4fj", "ejvt5qm6ak", "f38h382jlk", "488r3q3dtq", "55644vm79v", "5tjdwbrq8w", "nzq8sh4pbs", "m8dbw4sv7c", "7fmhfwg9en", "6v7lgmsu45", "s39g8k73mm", "6yxyv74ff7", "55y65gfgn7", "mqn7fxpca7", "qqp299437r", "32z4fx6l9h", "feyaarzu9v", "cp8zw746q7", "252b5q8x7y", "qu637u8glc", "vhf287vqwu", "a8cz6cu7e5", "cwn433xbcr", "fq6vru337s", "87u5trcl3r", "mj797d8u6f", "dbu4b84rxf", "238da6jt44", "4dzt52r2t5", "a2p9lx4jpn", "t6d3zquu66", "zq492l623r", "cstr6suwn9", "xga6mpmplv", "tmhh9296z4", "6xzpu9s2p8", "ludvb6z3bs", "v9wttpbfk9", "n38lu8286q", "fz2k2k5tej", "g2y4y55b64", "su67r6k2v3", "v79kvwwj4g", "275upjj5gd", "24zw6aqk47", "44n7hlldy6", "ecpz2srf59", "bvpn9ufa9b", "gta9lk7p23"],
|
||||
},
|
||||
Flag.IRONSOURCE: {
|
||||
FLAG_PROPERTY: Flag.IRONSOURCE,
|
||||
TAG_PROPERTY: "ironsource",
|
||||
DEPENDENCIES_PROPERTY: ["com.google.ads.mediation:ironsource:9.0.0.1"],
|
||||
MAVEN_REPO_PROPERTY: "",
|
||||
PACKAGE_PROPERTY: "IronSourceAdapterTarget",
|
||||
PACKAGE_URL_PROPERTY: "https://github.com/googleads/googleads-mobile-ios-mediation-ironsource.git",
|
||||
PACKAGE_VERSION_PROPERTY: "8.10.0",
|
||||
SK_AD_NETWORK_IDS_PROPERTY: ["su67r6k2v3"],
|
||||
},
|
||||
Flag.LIFTOFF: {
|
||||
FLAG_PROPERTY: Flag.LIFTOFF,
|
||||
TAG_PROPERTY: "liftoff",
|
||||
DEPENDENCIES_PROPERTY: ["com.google.ads.mediation:vungle:7.6.0.0"],
|
||||
MAVEN_REPO_PROPERTY: "",
|
||||
PACKAGE_PROPERTY: "LiftoffMonetizeAdapterTarget",
|
||||
PACKAGE_URL_PROPERTY: "https://github.com/googleads/googleads-mobile-ios-mediation-liftoffmonetize.git",
|
||||
PACKAGE_VERSION_PROPERTY: "7.6.0",
|
||||
SK_AD_NETWORK_IDS_PROPERTY: ["22mmun2rn5", "238da6jt44", "24t9a8vw3c", "24zw6aqk47", "275upjj5gd", "294l99pt4k", "2fnua5tdw4", "2u9pt9hc89", "32z4fx6l9h", "3l6bd9hu43", "3qcr597p9d", "3qy4746246", "3rd42ekr43", "3sh42y64q3", "424m5254lk", "4468km3ulz", "44jx6755aq", "44n7hlldy6", "488r3q3dtq", "4dzt52r2t5", "4fzdc2evr5", "4pfyvq9l8r", "4w7y6s5ca2", "523jb4fst2", "52fl2v3hgk", "54nzkqm89y", "578prtvx9j", "5a6flpkh64", "5l3tpt7t6e", "5lm9lj6jb7", "5tjdwbrq8w", "6964rsfnh4", "6g9af3uyq4", "6lz2ygh3q6", "6p4ks3rnbw", "6rd35atwn8", "6v7lgmsu45", "6xzpu9s2p8", "6yxyv74ff7", "737z793b9f", "74b6s63p6l", "79pbpufp6p", "7fmhfwg9en", "7rz58n8ntl", "7ug5zh24hu", "84993kbrcf", "87u5trcl3r", "89z7zv988g", "8m87ys6875", "8s468mfl3y", "97r2b46745", "9b89h5y424", "9nlqeag3gk", "9rd848q2bz", "9t245vhmpl", "9vvzujtq5s", "a2p9lx4jpn", "a7xqa6mtl2", "a8cz6cu7e5", "apzhy3va96", "av6w8kgt66", "b9bk5wbcq9", "bvpn9ufa9b", "bxvub5ada5", "c3frkrj4fj", "c6k4g5qg8m", "cg4yq2srnc", "cj5566h2ga", "cp8zw746q7", "cs644xg564", "cstr6suwn9", "cwn433xbcr", "dbu4b84rxf", "dkc879ngq3", "dzg6xy7pwj", "e5fvkxwrpn", "ecpz2srf59", "ejvt5qm6ak", "f2zub97jtl", "f38h382jlk", "f73kdq92p3", "f7s53z58qe", "feyaarzu9v", "fq6vru337s", "fz2k2k5tej", "g28c52eehv", "g2y4y55b64", "g6gcrrvk4p", "ggvn48r87g", "glqzh8vgby", "gta9lk7p23", "hb56zgv37p", "hdw39hrw9y", "hs6bdukanm", "k674qkevps", "k6y4y55b64", "kbd757ywx3", "kbmxgpxpgc", "klf5c3l5u5", "krvm3zuq6h", "ln5gz23vtd", "lr83yxwka7", "ludvb6z3bs", "m297p6643m", "m2jqnlggk3", "m5mvw97r93", "m8dbw4sv7c", "mj797d8u6f", "mlmmfzh3r3", "mls7yz5dvl", "mp6xlyr22a", "mqn7fxpca7", "mtkv5xtk9e", "n38lu8286q", "n6fk4nfna4", "n9x2a789qt", "ns5j362hk7", "p78axxw29g", "pg7ctvrt6f", "ppxm28t8ap", "prcb7njmu6", "pwa73g5rt2", "pwdxu55a5a", "qqp299437r", "qu637u8glc", "qwpu75vrh2", "r45fhb6rf7", "raa6f494kr", "rvh3l7un93", "rx5hdcabgc", "s39g8k73mm", "sczv5946wb", "su67r6k2v3", "t38b2kh725", "t6d3zquu66", "thzdn4h5nc", "tl55sbb4fm", "tmhh9296z4", "u679fj5vs4", "uw77j35x4d", "v72qych5uu", "v79kvwwj4g", "v9wttpbfk9", "vcra2ehyfk", "vhf287vqwu", "w9q455wk68", "wg4vff78zm", "wzmmz9fp6w", "x44k69ngh6", "x5l83yy675", "x8uqf25wch", "xga6mpmplv", "xy9t38ct57", "y45688jllp", "y5ghdn5j9k", "yclnxrl5pm", "ydx93a7ass", "z959bm4gru", "zmvfpc5aq8", "zq492l623r"],
|
||||
},
|
||||
Flag.LINE: {
|
||||
FLAG_PROPERTY: Flag.LINE,
|
||||
TAG_PROPERTY: "line",
|
||||
DEPENDENCIES_PROPERTY: ["com.google.ads.mediation:line:2.9.20250924.1"],
|
||||
MAVEN_REPO_PROPERTY: "",
|
||||
PACKAGE_PROPERTY: "LineAdapterTarget",
|
||||
PACKAGE_URL_PROPERTY: "https://github.com/googleads/googleads-mobile-ios-mediation-line.git",
|
||||
PACKAGE_VERSION_PROPERTY: "2.9.2025111900",
|
||||
SK_AD_NETWORK_IDS_PROPERTY: ["vutu7akeur", "eh6m2bh4zr", "cstr6suwn9", "578prtvx9j", "9t245vhmpl", "v72qych5uu", "x8uqf25wch", "7ug5zh24hu", "hs6bdukanm", "dbu4b84rxf", "8c4e2ghe7u"],
|
||||
},
|
||||
Flag.MAIO: {
|
||||
FLAG_PROPERTY: Flag.MAIO,
|
||||
TAG_PROPERTY: "maio",
|
||||
DEPENDENCIES_PROPERTY: ["com.google.ads.mediation:maio:2.0.6.0"],
|
||||
MAVEN_REPO_PROPERTY: "https://imobile-maio.github.io/maven",
|
||||
PACKAGE_PROPERTY: "MaioAdapterTarget",
|
||||
PACKAGE_URL_PROPERTY: "https://github.com/googleads/googleads-mobile-ios-mediation-maio.git",
|
||||
PACKAGE_VERSION_PROPERTY: "2.2.0",
|
||||
SK_AD_NETWORK_IDS_PROPERTY: ["v4nxqhlyqp"],
|
||||
},
|
||||
Flag.META: {
|
||||
FLAG_PROPERTY: Flag.META,
|
||||
TAG_PROPERTY: "meta",
|
||||
DEPENDENCIES_PROPERTY: ["com.google.ads.mediation:facebook:6.20.0.2"],
|
||||
MAVEN_REPO_PROPERTY: "",
|
||||
PACKAGE_PROPERTY: "MetaAdapterTarget",
|
||||
PACKAGE_URL_PROPERTY: "https://github.com/googleads/googleads-mobile-ios-mediation-meta.git",
|
||||
PACKAGE_VERSION_PROPERTY: "6.20.100",
|
||||
SK_AD_NETWORK_IDS_PROPERTY: ["v9wttpbfk9", "n38lu8286q"],
|
||||
},
|
||||
Flag.MINTEGRAL: {
|
||||
FLAG_PROPERTY: Flag.MINTEGRAL,
|
||||
TAG_PROPERTY: "mintegral",
|
||||
DEPENDENCIES_PROPERTY: ["com.google.ads.mediation:mintegral:16.9.91.2"],
|
||||
MAVEN_REPO_PROPERTY: "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea",
|
||||
PACKAGE_PROPERTY: "MintegralAdapterTarget",
|
||||
PACKAGE_URL_PROPERTY: "https://github.com/googleads/googleads-mobile-ios-mediation-mintegral.git",
|
||||
PACKAGE_VERSION_PROPERTY: "7.7.901",
|
||||
SK_AD_NETWORK_IDS_PROPERTY: ["kbd757ywx3"],
|
||||
},
|
||||
Flag.MOLOCO: {
|
||||
FLAG_PROPERTY: Flag.MOLOCO,
|
||||
TAG_PROPERTY: "moloco",
|
||||
DEPENDENCIES_PROPERTY: ["com.google.ads.mediation:moloco:4.2.0.0"],
|
||||
MAVEN_REPO_PROPERTY: "",
|
||||
PACKAGE_PROPERTY: "MolocoAdapterTarget",
|
||||
PACKAGE_URL_PROPERTY: "https://github.com/googleads/googleads-mobile-ios-mediation-moloco.git",
|
||||
PACKAGE_VERSION_PROPERTY: "4.1.0",
|
||||
SK_AD_NETWORK_IDS_PROPERTY: ["9t245vhmpl"],
|
||||
},
|
||||
Flag.MYTARGET: {
|
||||
FLAG_PROPERTY: Flag.MYTARGET,
|
||||
TAG_PROPERTY: "mytarget",
|
||||
DEPENDENCIES_PROPERTY: ["com.google.ads.mediation:mytarget:5.27.3.0"],
|
||||
MAVEN_REPO_PROPERTY: "",
|
||||
PACKAGE_PROPERTY: "MyTargetAdapterTarget",
|
||||
PACKAGE_URL_PROPERTY: "https://github.com/googleads/googleads-mobile-ios-mediation-mytarget.git",
|
||||
PACKAGE_VERSION_PROPERTY: "5.36.0",
|
||||
SK_AD_NETWORK_IDS_PROPERTY: ["n9x2a789qt", "r26jy69rpl"],
|
||||
},
|
||||
Flag.PANGLE: {
|
||||
FLAG_PROPERTY: Flag.PANGLE,
|
||||
TAG_PROPERTY: "pangle",
|
||||
DEPENDENCIES_PROPERTY: ["com.google.ads.mediation:pangle:7.6.0.5.0"],
|
||||
MAVEN_REPO_PROPERTY: "https://artifact.bytedance.com/repository/pangle/",
|
||||
PACKAGE_PROPERTY: "PangleAdapterTarget",
|
||||
PACKAGE_URL_PROPERTY: "https://github.com/googleads/googleads-mobile-ios-mediation-pangle.git",
|
||||
PACKAGE_VERSION_PROPERTY: "7.6.600",
|
||||
SK_AD_NETWORK_IDS_PROPERTY: ["22mmun2rn5"],
|
||||
},
|
||||
Flag.UNITY: {
|
||||
FLAG_PROPERTY: Flag.UNITY,
|
||||
TAG_PROPERTY: "unity",
|
||||
DEPENDENCIES_PROPERTY: ["com.unity3d.ads:unity-ads:4.16.2", "com.google.ads.mediation:unity:4.16.3.0"],
|
||||
MAVEN_REPO_PROPERTY: "",
|
||||
PACKAGE_PROPERTY: "UnityAdapterTarget",
|
||||
PACKAGE_URL_PROPERTY: "https://github.com/googleads/googleads-mobile-ios-mediation-unity.git",
|
||||
PACKAGE_VERSION_PROPERTY: "4.16.4",
|
||||
SK_AD_NETWORK_IDS_PROPERTY: ["9nlqeag3gk", "hs6bdukanm", "9rd848q2bz", "22mmun2rn5", "f73kdq92p3", "tl55sbb4fm", "prcb7njmu6", "n9x2a789qt", "97r2b46745", "zmvfpc5aq8", "av6w8kgt66", "uw77j35x4d", "pwa73g5rt2", "e5fvkxwrpn", "klf5c3l5u5", "xga6mpmplv", "wg4vff78zm", "lr83yxwka7", "5tjdwbrq8w", "7ug5zh24hu", "glqzh8vgby", "feyaarzu9v", "6yxyv74ff7", "mqn7fxpca7", "vhf287vqwu", "g6gcrrvk4p", "v79kvwwj4g", "32z4fx6l9h", "2fnua5tdw4", "a8cz6cu7e5", "v72qych5uu", "a2p9lx4jpn", "5f5u5tfb26", "4fzdc2evr5", "5lm9lj6jb7", "4w7y6s5ca2", "3sh42y64q3", "4468km3ulz", "mj797d8u6f", "488r3q3dtq", "mlmmfzh3r3", "9t245vhmpl", "x44k69ngh6", "kbd757ywx3", "4dzt52r2t5", "k674qkevps", "294l99pt4k", "m8dbw4sv7c", "2u9pt9hc89", "p78axxw29g", "424m5254lk", "238da6jt44", "ydx93a7ass", "s39g8k73mm", "v9wttpbfk9", "44jx6755aq", "578prtvx9j", "yclnxrl5pm", "k6y4y55b64", "5a6flpkh64", "3rd42ekr43", "f38h382jlk", "cstr6suwn9", "ppxm28t8ap", "f7s53z58qe", "zq492l623r", "t38b2kh725", "mp6xlyr22a", "3qy4746246", "5l3tpt7t6e", "c6k4g5qg8m", "w9q455wk68", "4pfyvq9l8r", "wzmmz9fp6w", "8s468mfl3y"],
|
||||
},
|
||||
}
|
||||
|
||||
const MEDIATION_NETWORK_TAGS: Dictionary = {
|
||||
"applovin": Flag.APPLOVIN,
|
||||
"chartboost": Flag.CHARTBOOST,
|
||||
"dtexchange": Flag.DTEXCHANGE,
|
||||
"imobile": Flag.IMOBILE,
|
||||
"inmobi": Flag.INMOBI,
|
||||
"ironsource": Flag.IRONSOURCE,
|
||||
"liftoff": Flag.LIFTOFF,
|
||||
"line": Flag.LINE,
|
||||
"maio": Flag.MAIO,
|
||||
"meta": Flag.META,
|
||||
"mintegral": Flag.MINTEGRAL,
|
||||
"moloco": Flag.MOLOCO,
|
||||
"mytarget": Flag.MYTARGET,
|
||||
"pangle": Flag.PANGLE,
|
||||
"unity": Flag.UNITY,
|
||||
}
|
||||
|
||||
var flag: Flag
|
||||
var tag: String
|
||||
var android_dependencies: Array
|
||||
var android_custom_maven_repo: String
|
||||
var swift_package: String
|
||||
var swift_package_url: String
|
||||
var swift_package_version: String
|
||||
var sk_ad_network_ids: PackedStringArray
|
||||
|
||||
|
||||
func _init(a_data: Dictionary) -> void:
|
||||
flag = a_data[FLAG_PROPERTY]
|
||||
tag = a_data[TAG_PROPERTY]
|
||||
android_dependencies = a_data[DEPENDENCIES_PROPERTY]
|
||||
android_custom_maven_repo = a_data[MAVEN_REPO_PROPERTY]
|
||||
swift_package = a_data[PACKAGE_PROPERTY]
|
||||
swift_package_url = a_data[PACKAGE_URL_PROPERTY]
|
||||
swift_package_version = a_data[PACKAGE_VERSION_PROPERTY]
|
||||
sk_ad_network_ids = a_data[SK_AD_NETWORK_IDS_PROPERTY]
|
||||
|
||||
|
||||
func get_spm_dependency() -> SpmDependency:
|
||||
return SpmDependency.new({
|
||||
SpmDependency.URL_PROPERTY: swift_package_url,
|
||||
SpmDependency.VERSION_PROPERTY: swift_package_version,
|
||||
SpmDependency.PRODUCTS_PROPERTY: [swift_package],
|
||||
})
|
||||
|
||||
static func is_flag_enabled(a_value: int, a_flag: Flag) -> bool:
|
||||
return a_value & a_flag
|
||||
|
||||
|
||||
static func is_valid_tag(a_tag: String) -> bool:
|
||||
return MEDIATION_NETWORK_TAGS.has(a_tag)
|
||||
|
||||
|
||||
static func get_by_flag(a_flag: Flag) -> MediationNetwork:
|
||||
return MediationNetwork.new(MEDIATION_NETWORKS[a_flag])
|
||||
|
||||
|
||||
static func get_by_tag(a_tag: String) -> MediationNetwork:
|
||||
return get_by_flag(MEDIATION_NETWORK_TAGS[a_tag])
|
||||
|
||||
|
||||
static func get_all_enabled(a_value: int) -> Array[MediationNetwork]:
|
||||
var __enabled_networks: Array[MediationNetwork] = []
|
||||
|
||||
for __flag in Flag.values():
|
||||
if is_flag_enabled(a_value, __flag):
|
||||
__enabled_networks.append(get_by_flag(__flag))
|
||||
|
||||
return __enabled_networks
|
||||
|
||||
|
||||
static func get_all_enabled_tags(a_value: int) -> Array[String]:
|
||||
var __enabled_network_tags: Array[String] = []
|
||||
|
||||
for __flag in Flag.values():
|
||||
if is_flag_enabled(a_value, __flag):
|
||||
var __network: MediationNetwork = get_by_flag(__flag)
|
||||
__enabled_network_tags.append(__network.tag)
|
||||
|
||||
return __enabled_network_tags
|
||||
|
||||
|
||||
static func generate_sk_ad_network_plist(a_networks: Array[MediationNetwork]) -> String:
|
||||
var __sk_ad_ids_plist_content: String
|
||||
|
||||
var __unique_sk_network_ad_ids: Dictionary = { }
|
||||
|
||||
# Add Google-required SK Ad Network IDs
|
||||
for __network_id in GOOGLE_SK_AD_NETWORK_IDS:
|
||||
if not __unique_sk_network_ad_ids.has(__network_id):
|
||||
__unique_sk_network_ad_ids.set(__network_id, null)
|
||||
|
||||
# Add SK Ad Network IDs required by other networks
|
||||
for __network in a_networks:
|
||||
for __network_id in __network.sk_ad_network_ids:
|
||||
if not __unique_sk_network_ad_ids.has(__network_id):
|
||||
__unique_sk_network_ad_ids.set(__network_id, null)
|
||||
|
||||
for __network_id in __unique_sk_network_ad_ids.keys():
|
||||
__sk_ad_ids_plist_content += SK_AD_NETWORK_ITEM_FORMAT % __network_id
|
||||
|
||||
return SK_AD_NETWORK_ITEM_LIST_FORMAT % __sk_ad_ids_plist_content
|
||||
|
||||
|
||||
static func get_spm_dependencies(a_networks: Array[MediationNetwork]) -> Array[SpmDependency]:
|
||||
var __spm_dependencies: Array[SpmDependency] = []
|
||||
|
||||
for __network in a_networks:
|
||||
__spm_dependencies.append(__network.get_spm_dependency())
|
||||
|
||||
return __spm_dependencies
|
||||
|
||||
|
||||
static func generate_tag_list(a_networks: Array[MediationNetwork]) -> String:
|
||||
var __enabled_network_tags: PackedStringArray = []
|
||||
|
||||
for __network in a_networks:
|
||||
__enabled_network_tags.append(__network.tag)
|
||||
|
||||
return ",".join(__enabled_network_tags)
|
||||
@@ -0,0 +1 @@
|
||||
uid://devoemkicbhtc
|
||||
@@ -0,0 +1,32 @@
|
||||
#
|
||||
# © 2024-present https://github.com/cengiz-pz
|
||||
#
|
||||
class_name NetworkExtras
|
||||
extends Resource
|
||||
|
||||
const NETWORK_TAG_PROPERTY := &"network_tag"
|
||||
const EXTRAS_PROPERTY := &"extras"
|
||||
|
||||
## Identifies the target ad network for the extras.
|
||||
@export var network_flag: MediationNetwork.Flag = MediationNetwork.Flag.APPLOVIN
|
||||
|
||||
## Dictionary holding one or more extras. Only keys of type String are allowed. Values can be String, int, or bool.
|
||||
@export var extras: Dictionary
|
||||
|
||||
|
||||
func get_raw_data() -> Dictionary:
|
||||
var __network: MediationNetwork = MediationNetwork.get_by_flag(network_flag)
|
||||
var __raw_data: Dictionary
|
||||
|
||||
__raw_data = {NETWORK_TAG_PROPERTY: __network.tag, EXTRAS_PROPERTY: extras}
|
||||
|
||||
return __raw_data
|
||||
|
||||
|
||||
static func build_raw_data_array(a_network_extras: Array[NetworkExtras]) -> Array:
|
||||
var __raw_data_array: Array[Dictionary] = []
|
||||
|
||||
for __network_extras in a_network_extras:
|
||||
__raw_data_array.append(__network_extras.get_raw_data())
|
||||
|
||||
return __raw_data_array
|
||||
@@ -0,0 +1 @@
|
||||
uid://cxw2idjnk2d72
|
||||
@@ -0,0 +1,45 @@
|
||||
#
|
||||
# © 2024-present https://github.com/cengiz-pz
|
||||
#
|
||||
class_name NetworkPrivacySettings
|
||||
extends RefCounted
|
||||
|
||||
const HAS_GDPR_CONSENT_PROPERTY := &"has_gdpr_consent"
|
||||
const IS_AGE_RESTRICTED_USER_PROPERTY := &"is_age_restricted_user"
|
||||
const HAS_CCPA_SALE_CONSENT_PROPERTY := &"has_ccpa_sale_consent"
|
||||
const ENABLED_NETWORKS_PROPERTY := &"enabled_networks"
|
||||
|
||||
var _data: Dictionary
|
||||
|
||||
|
||||
func _init() -> void:
|
||||
_data = {
|
||||
ENABLED_NETWORKS_PROPERTY: [],
|
||||
}
|
||||
|
||||
|
||||
func set_has_gdpr_consent(a_value: bool) -> NetworkPrivacySettings:
|
||||
_data[HAS_GDPR_CONSENT_PROPERTY] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func set_is_age_restricted_user(a_value: bool) -> NetworkPrivacySettings:
|
||||
_data[IS_AGE_RESTRICTED_USER_PROPERTY] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func set_has_ccpa_sale_consent(a_value: bool) -> NetworkPrivacySettings:
|
||||
_data[HAS_CCPA_SALE_CONSENT_PROPERTY] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func set_enabled_networks(a_value: Array[String]) -> NetworkPrivacySettings:
|
||||
if a_value == null:
|
||||
_data[ENABLED_NETWORKS_PROPERTY] = []
|
||||
else:
|
||||
_data[ENABLED_NETWORKS_PROPERTY] = a_value
|
||||
return self
|
||||
|
||||
|
||||
func get_raw_data() -> Dictionary:
|
||||
return _data
|
||||
@@ -0,0 +1 @@
|
||||
uid://b42fjtxon0ynl
|
||||
@@ -0,0 +1,46 @@
|
||||
#
|
||||
# © 2024-present https://github.com/cengiz-pz
|
||||
#
|
||||
class_name ResponseInfo
|
||||
extends RefCounted
|
||||
|
||||
const ADAPTER_RESPONSES_PROPERTY := &"adapter_responses"
|
||||
const LOADED_ADAPTER_RESPONSE_PROPERTY := &"loaded_adapter_response"
|
||||
const ADAPTER_CLASS_NAME_PROPERTY := &"adapter_class_name"
|
||||
const NETWORK_TAG_PROPERTY := &"network_tag"
|
||||
const RESPONSE_ID_PROPERTY := &"response_id"
|
||||
|
||||
var _data: Dictionary
|
||||
|
||||
|
||||
func _init(a_data: Dictionary):
|
||||
_data = a_data
|
||||
|
||||
|
||||
func get_adapter_responses() -> Array[AdapterResponseInfo]:
|
||||
var __responses: Array[AdapterResponseInfo] = []
|
||||
|
||||
for __response_dict in _data[ADAPTER_RESPONSES_PROPERTY]:
|
||||
__responses.append(AdapterResponseInfo.new(__response_dict))
|
||||
|
||||
return __responses
|
||||
|
||||
|
||||
func get_loaded_adapter_response() -> AdapterResponseInfo:
|
||||
return (
|
||||
AdapterResponseInfo.new(_data[LOADED_ADAPTER_RESPONSE_PROPERTY])
|
||||
if _data.has(LOADED_ADAPTER_RESPONSE_PROPERTY)
|
||||
else null
|
||||
)
|
||||
|
||||
|
||||
func get_adapter_class_name() -> String:
|
||||
return _data[ADAPTER_CLASS_NAME_PROPERTY] if _data.has(ADAPTER_CLASS_NAME_PROPERTY) else ""
|
||||
|
||||
|
||||
func get_network_tag() -> String:
|
||||
return _data[NETWORK_TAG_PROPERTY] if _data.has(NETWORK_TAG_PROPERTY) else ""
|
||||
|
||||
|
||||
func get_response_id() -> String:
|
||||
return _data[RESPONSE_ID_PROPERTY] if _data.has(RESPONSE_ID_PROPERTY) else ""
|
||||
@@ -0,0 +1 @@
|
||||
uid://b3jib8n1rbnyv
|
||||
@@ -0,0 +1,22 @@
|
||||
#
|
||||
# © 2024-present https://github.com/cengiz-pz
|
||||
#
|
||||
class_name RewardItem
|
||||
extends RefCounted
|
||||
|
||||
const AMOUNT_PROPERTY := &"amount"
|
||||
const TYPE_PROPERTY := &"type"
|
||||
|
||||
var _data: Dictionary
|
||||
|
||||
|
||||
func _init(a_data: Dictionary):
|
||||
_data = a_data
|
||||
|
||||
|
||||
func get_amount() -> int:
|
||||
return _data[AMOUNT_PROPERTY]
|
||||
|
||||
|
||||
func get_type() -> String:
|
||||
return _data[TYPE_PROPERTY]
|
||||
@@ -0,0 +1 @@
|
||||
uid://cf0fkl05bgokb
|
||||
@@ -0,0 +1,33 @@
|
||||
#
|
||||
# © 2024-present https://github.com/cengiz-pz
|
||||
#
|
||||
class_name UserConsent
|
||||
extends RefCounted
|
||||
|
||||
enum Status {
|
||||
UNKNOWN,
|
||||
NOT_REQUIRED,
|
||||
REQUIRED,
|
||||
OBTAINED,
|
||||
}
|
||||
|
||||
var status: Status
|
||||
|
||||
|
||||
func _init(a_status_string: String = "") -> void:
|
||||
if a_status_string == "":
|
||||
status = Status.UNKNOWN
|
||||
else:
|
||||
status = string_to_status(a_status_string)
|
||||
|
||||
|
||||
func to_status_string() -> String:
|
||||
return Status.keys()[status]
|
||||
|
||||
|
||||
static func status_to_string(a_status: Status) -> String:
|
||||
return Status.keys()[a_status]
|
||||
|
||||
|
||||
static func string_to_status(a_string: String) -> Status:
|
||||
return Status.get(a_string)
|
||||
@@ -0,0 +1 @@
|
||||
uid://dcbs2sidgjetb
|
||||
Reference in new issue
Block a user