modify scripts

This commit is contained in:
2025-11-08 19:04:38 +08:00
parent 4f782a638e
commit df7dc04cf1
33 changed files with 2929 additions and 17 deletions

View File

@ -18,7 +18,7 @@ GIFT : Подарок
LEVELCLEARED : УРОВЕНЬ ПРОЙДЕН!
SETTINGS : Настройки
SHOP : МАГАЗИН
PRIVACY : КОНФИДЕНЦИАЛЬНОСТЬ
PRIVACY : ПРИВАТНОСТЬ
QUITTHEGAME : Выйти из игры
DOYOUWANTTOQUIT : Вы действительно хотите выйти?
YES : Да
@ -52,7 +52,7 @@ EXITGAME : Выйти из игры
ADVENTURE : ПРИКЛЮЧЕНИЕ
CLASSIC : КЛАССИКА
TUTORIAL : Обучение
RESTORE_PURCHASES : Восстановить покупки
RESTORE_PURCHASES : Восст. покупки
EXTRAWORDS : Дополнительные слова
WORDSNOTINTCLUDEDINTHISLEVEL : Слова, не включенные в этот уровень
CLAIM : Получить

View File

@ -194,6 +194,7 @@ MonoBehaviour:
onClick:
m_PersistentCalls:
m_Calls: []
noSound: 0
--- !u!1 &5404509939308836076
GameObject:
m_ObjectHideFlags: 0
@ -412,6 +413,10 @@ PrefabInstance:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 621257374199314380, guid: 42fecf35a1e774a20a5f0e45c3d3c10e, type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2363198712010147430, guid: 42fecf35a1e774a20a5f0e45c3d3c10e, type: 3}
propertyPath: m_AnchorMax.y
value: 0
@ -597,7 +602,10 @@ MonoBehaviour:
- LanguageSelection
isPopupAboveTags: 0
fadeAlpha: 0.98
appearSound: {fileID: 0}
disappearSound: {fileID: 0}
privacypolicy: {fileID: 0}
googleUMPConsent: {fileID: 0}
restorePurchase: {fileID: 0}
vibrationSlider: {fileID: 6267439442198750998}
homeButton: {fileID: 3971681028222562917}

View File

@ -18,7 +18,7 @@ MonoBehaviour:
testInEditor: 1
platforms: 1
appId: 5698950
adsHandler: {fileID: 0}
adsHandler: {fileID: 11400000, guid: 60c77287bd6d042938fbd15e5462e051, type: 2}
adElements:
- placementId: Interstitial_iOS
adReference: {fileID: 11400000, guid: f9303f4b583464bc08f45f673b581f90, type: 2}
@ -37,7 +37,7 @@ MonoBehaviour:
testInEditor: 1
platforms: 1
appId: 5698950
adsHandler: {fileID: 0}
adsHandler: {fileID: 11400000, guid: 74706189f5004431584663da028f09e5, type: 2}
adElements:
- placementId: Banner_iOS
adReference: {fileID: 11400000, guid: 4396e62ba27584ef79ac362c4948ee63, type: 2}
@ -50,7 +50,7 @@ MonoBehaviour:
testInEditor: 1
platforms: 0
appId: 5870065
adsHandler: {fileID: 0}
adsHandler: {fileID: 11400000, guid: 60c77287bd6d042938fbd15e5462e051, type: 2}
adElements:
- placementId: Interstitial_Android
adReference: {fileID: 11400000, guid: f9303f4b583464bc08f45f673b581f90, type: 2}
@ -69,7 +69,7 @@ MonoBehaviour:
testInEditor: 1
platforms: 0
appId: 5870065
adsHandler: {fileID: 0}
adsHandler: {fileID: 11400000, guid: 74706189f5004431584663da028f09e5, type: 2}
adElements:
- placementId: Banner_Android
adReference: {fileID: 11400000, guid: 4396e62ba27584ef79ac362c4948ee63, type: 2}

View File

@ -34,6 +34,7 @@ namespace WordsToolkit.Scripts.Editor.GUI
var root = new VisualElement();
root.Add(new PropertyField(serializedObject.FindProperty("noSound")));
root.Add(new PropertyField(serializedObject.FindProperty("isRewarded")));
root.Add(new PropertyField(serializedObject.FindProperty("overrideClickSound")));
root.Add(new PropertyField(serializedObject.FindProperty("overrideAnimatorController")));

View File

@ -36,6 +36,7 @@ namespace WordsToolkit.Scripts.GUI.Buttons.Boosts
private bool isActive;
private bool isAnimating;
protected override bool ShouldShowRewarded() => isRewarded && resourseToHoldBoost.GetValue() == 0;
protected override void OnEnable()
{
@ -70,6 +71,11 @@ namespace WordsToolkit.Scripts.GUI.Buttons.Boosts
priceObject.gameObject.SetActive(false);
countText.text = resourseToHoldBoost.GetValue().ToString();
}
else if (ShouldShowRewarded())
{
countTextObject.gameObject.SetActive(false);
priceObject.gameObject.SetActive(false);
}
else
{
countTextObject.gameObject.SetActive(false);
@ -96,6 +102,10 @@ namespace WordsToolkit.Scripts.GUI.Buttons.Boosts
{
ActivateBoost();
}
else if (ShouldShowRewarded())
{
return;
}
// If not, consume from the regular resource
else if (resourceManager.ConsumeWithEffects(resourceToPay, count))
{
@ -110,6 +120,13 @@ namespace WordsToolkit.Scripts.GUI.Buttons.Boosts
UpdatePriceDisplay();
}
protected override void ExecuteEvent()
{
if(isRewarded)
resourseToHoldBoost.Add(1);
base.ExecuteEvent();
}
protected virtual void ActivateBoost(bool hideButtons = true)
{
isAnimating = true;

View File

@ -17,6 +17,8 @@ using UnityEngine.UI;
using VContainer;
using WordsToolkit.Scripts.Audio;
using WordsToolkit.Scripts.Enums;
using WordsToolkit.Scripts.Popups.Reward;
using WordsToolkit.Scripts.Services.Ads.AdUnits;
using WordsToolkit.Scripts.System;
using WordsToolkit.Scripts.System.Haptic;
@ -32,31 +34,48 @@ namespace WordsToolkit.Scripts.GUI.Buttons
public new ButtonClickedEvent onClick;
private new Animator animator;
public bool noSound;
public bool isRewarded;
private RewardedButtonHandler handler;
private PointerEventData currentEventData;
private static bool blockInput;
protected virtual bool ShouldShowRewarded() => isRewarded;
public static CustomButton latestClickedButton;
private IAudioService audioService;
private IObjectResolver objectResolver;
[Inject]
public void Construct(IAudioService audioService)
public void Construct(IAudioService audioService, IObjectResolver objectResolver)
{
this.audioService = audioService;
this.objectResolver = objectResolver;
}
protected override void OnEnable()
{
isClicked = false;
// run only in runtime
if (ShouldShowRewarded() && !GetComponent<RewardedButtonHandler>() && Application.isPlaying)
{
handler = gameObject.AddComponent<RewardedButtonHandler>();
objectResolver.Inject(handler);
var adReference = UnityEditor.AssetDatabase.LoadAssetAtPath<AdReference>("Assets/WordConnectGameToolkit/Prefabs/ScriptableAds/AdsTypes/Rewarded.asset");
handler.adReference = adReference;
handler.onRewardedAdComplete = new UnityEngine.Events.UnityEvent();
handler.onRewardedAdComplete.AddListener(ExecuteEvent);
}
if (Application.isEditor)
{
return;
}
base.OnEnable();
animator = GetComponent<Animator>();
if (overrideAnimatorController != null)
{
animator.runtimeAnimatorController = overrideAnimatorController;
}
}
public override void OnPointerClick(PointerEventData eventData)
@ -66,6 +85,17 @@ namespace WordsToolkit.Scripts.GUI.Buttons
return;
}
currentEventData = eventData;
if (ShouldShowRewarded())
{
if (handler != null)
{
handler.ShowRewardedAd();
return;
}
}
if (transition != Transition.Animation)
{
Pressed();
@ -75,7 +105,6 @@ namespace WordsToolkit.Scripts.GUI.Buttons
if(!noSound)
audioService.PlayClick(overrideClickSound);
HapticFeedback.TriggerHapticFeedback(HapticFeedback.HapticForce.Light);
// Start cooldown
if (gameObject.activeInHierarchy)
{
StartCoroutine(Cooldown());
@ -91,8 +120,23 @@ namespace WordsToolkit.Scripts.GUI.Buttons
return;
}
latestClickedButton = this;
if (ShouldShowRewarded())
{
if (handler != null)
{
handler.ShowRewardedAd();
return;
}
}
ExecuteEvent();
}
protected virtual void ExecuteEvent()
{
onClick?.Invoke();
EventManager.GetEvent<CustomButton>(EGameEvent.ButtonClicked).Invoke(this);
base.onClick?.Invoke();
}
private IEnumerator Cooldown()

View File

@ -23,13 +23,13 @@ namespace WordsToolkit.Scripts.Popups.Reward
public class RewardedButtonHandler : MonoBehaviour
{
[SerializeField]
private AdReference adReference;
public AdReference adReference;
[SerializeField]
private CustomButton rewardedButton;
[SerializeField]
private UnityEvent onRewardedAdComplete;
public UnityEvent onRewardedAdComplete;
[SerializeField]
private UnityEvent onRewardedShow;
@ -39,10 +39,10 @@ namespace WordsToolkit.Scripts.Popups.Reward
private void Awake()
{
rewardedButton.onClick.AddListener(ShowRewardedAd);
rewardedButton?.onClick.AddListener(ShowRewardedAd);
}
private void ShowRewardedAd()
public void ShowRewardedAd()
{
if (adsManager.IsRewardedAvailable(adReference))
{