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,72 @@
|
||||
class_name AdCache
|
||||
extends RefCounted
|
||||
|
||||
var limit: int
|
||||
var label: String
|
||||
var remove_ad_callable: Callable
|
||||
|
||||
var _ads: Dictionary[String, Object]
|
||||
var _ad_queue: Array[String]
|
||||
|
||||
|
||||
func _init(a_limit: int, a_label: String, a_callable: Callable) -> void:
|
||||
self.limit = a_limit
|
||||
self.label = a_label
|
||||
self.remove_ad_callable = a_callable
|
||||
|
||||
_ads = {}
|
||||
_ad_queue = []
|
||||
|
||||
|
||||
func is_empty() -> bool:
|
||||
return _ads.is_empty()
|
||||
|
||||
|
||||
func has_key(a_key: String) -> bool:
|
||||
return _ads.has(a_key)
|
||||
|
||||
|
||||
func last_key() -> String:
|
||||
return "" if _ad_queue.is_empty() else _ad_queue[0]
|
||||
|
||||
|
||||
func all_keys() -> Array[String]:
|
||||
return _ads.keys()
|
||||
|
||||
|
||||
func cache(a_ad_id: String, a_ad_data: Object) -> void:
|
||||
_ads[a_ad_id] = a_ad_data
|
||||
_ad_queue.push_front(a_ad_id)
|
||||
while _ads.size() > limit:
|
||||
(
|
||||
GmpLogger
|
||||
. log_warn(
|
||||
(
|
||||
"%s: %s cache size (%d) has exceeded maximum (%d)"
|
||||
% [
|
||||
Admob.PLUGIN_SINGLETON_NAME,
|
||||
label,
|
||||
_ads.size(),
|
||||
limit,
|
||||
]
|
||||
),
|
||||
)
|
||||
)
|
||||
remove_ad_callable.call(_erase_oldest())
|
||||
|
||||
|
||||
func erase(a_ad_id: String) -> void:
|
||||
_ad_queue.erase(a_ad_id)
|
||||
_ads.erase(a_ad_id)
|
||||
|
||||
|
||||
func erase_last() -> String:
|
||||
var __removed_ad_id: String = _ad_queue.pop_front()
|
||||
_ads.erase(__removed_ad_id)
|
||||
return __removed_ad_id
|
||||
|
||||
|
||||
func _erase_oldest() -> String:
|
||||
var __removed_ad_id: String = _ad_queue.pop_back()
|
||||
_ads.erase(__removed_ad_id)
|
||||
return __removed_ad_id
|
||||
Reference in new issue
Block a user