Initial commit: Unity WordConnect project

This commit is contained in:
2025-08-01 19:12:05 +08:00
commit f14db75802
3503 changed files with 448337 additions and 0 deletions

View File

@ -0,0 +1,56 @@
// // ©2015 - 2025 Candy Smith
// // All rights reserved
// // Redistribution of this software is strictly not allowed.
// // Copy of this software can be obtained from unity asset store only.
// // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// // FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
// // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// // THE SOFTWARE.
using System;
namespace WordsToolkit.Scripts.Services.Ads.AdUnits
{
public class AdLifecycleManager : IAdLifecycleManager
{
private readonly AdsHandlerBase _adsHandler;
public AdLifecycleManager(AdsHandlerBase adsHandler)
{
_adsHandler = adsHandler;
}
public void Load(AdUnit adUnit)
{
_adsHandler?.Load(adUnit);
}
public void Show(AdUnit adUnit)
{
_adsHandler?.Show(adUnit);
}
public void Hide(AdUnit adUnit)
{
_adsHandler?.Hide(adUnit);
}
public bool IsAvailable(AdUnit adUnit)
{
return _adsHandler != null && (_adsHandler.IsAvailable(adUnit) || adUnit.Loaded);
}
public void Complete(AdUnit adUnit)
{
adUnit.OnShown?.Invoke(adUnit.PlacementId);
}
public void Initialize(AdUnit adUnit)
{
adUnit.OnInitialized?.Invoke(adUnit.PlacementId);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 572fd5f113dad43b6b492120fbd965ae
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,22 @@
// // ©2015 - 2025 Candy Smith
// // All rights reserved
// // Redistribution of this software is strictly not allowed.
// // Copy of this software can be obtained from unity asset store only.
// // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// // FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
// // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// // THE SOFTWARE.
using UnityEngine;
namespace WordsToolkit.Scripts.Services.Ads.AdUnits
{
[CreateAssetMenu(fileName = "AdReference", menuName ="WordConnectGameToolkit/Ads/AdReference")]
public class AdReference : ScriptableObject
{
public EAdType adType;
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 8151ae330add46d49f409e031f774236
timeCreated: 1709625749

View File

@ -0,0 +1,63 @@
// // ©2015 - 2025 Candy Smith
// // All rights reserved
// // Redistribution of this software is strictly not allowed.
// // Copy of this software can be obtained from unity asset store only.
// // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// // FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
// // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// // THE SOFTWARE.
using System;
namespace WordsToolkit.Scripts.Services.Ads.AdUnits
{
public class AdUnit
{
public string PlacementId { get; }
public AdReference AdReference { get; }
public bool Loaded { get; set; }
public Action<string> OnShown { get; set; }
public Action<string> OnInitialized { get; set; }
public AdUnit(string placementId, AdReference adReference)
{
PlacementId = placementId;
AdReference = adReference;
}
public AdsHandlerBase AdsHandler { get; set; }
public void Complete()
{
OnShown?.Invoke(PlacementId);
}
public void Initialized()
{
OnInitialized?.Invoke(PlacementId);
}
public void Load()
{
AdsHandler?.Load(this);
}
public void Show()
{
AdsHandler?.Show(this);
}
public bool IsAvailable()
{
return AdsHandler != null && (AdsHandler.IsAvailable(this) || Loaded);
}
public void Hide()
{
AdsHandler?.Hide(this);
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: bd76f366cfc84bfab6c025eb8ebc1b5e
timeCreated: 1709541000

View File

@ -0,0 +1,28 @@
// // ©2015 - 2025 Candy Smith
// // All rights reserved
// // Redistribution of this software is strictly not allowed.
// // Copy of this software can be obtained from unity asset store only.
// // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// // FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
// // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// // THE SOFTWARE.
using UnityEngine;
namespace WordsToolkit.Scripts.Services.Ads.AdUnits
{
public abstract class AdsHandlerBase : ScriptableObject
{
public abstract void Init(string _id, bool adSettingTestMode, IAdsListener listener);
public abstract void Show(AdUnit adUnit);
public abstract void Load(AdUnit adUnit);
/// set false if adapter doesn't have availability method
public abstract bool IsAvailable(AdUnit adUnit);
public abstract void Hide(AdUnit adUnit);
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: f71ea344e49b486dbea6a85fb3422111
timeCreated: 1709485645

View File

@ -0,0 +1,21 @@
// // ©2015 - 2025 Candy Smith
// // All rights reserved
// // Redistribution of this software is strictly not allowed.
// // Copy of this software can be obtained from unity asset store only.
// // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// // FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
// // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// // THE SOFTWARE.
namespace WordsToolkit.Scripts.Services.Ads.AdUnits
{
public enum EAdType
{
Banner,
Interstitial,
Rewarded
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 0b34f9ec5c8244b79a5b7eca99ddaee8
timeCreated: 1709539401

View File

@ -0,0 +1,26 @@
// // ©2015 - 2025 Candy Smith
// // All rights reserved
// // Redistribution of this software is strictly not allowed.
// // Copy of this software can be obtained from unity asset store only.
// // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// // FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
// // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// // THE SOFTWARE.
using System;
namespace WordsToolkit.Scripts.Services.Ads.AdUnits
{
public interface IAdLifecycleManager
{
void Load(AdUnit adUnit);
void Show(AdUnit adUnit);
void Hide(AdUnit adUnit);
bool IsAvailable(AdUnit adUnit);
void Complete(AdUnit adUnit);
void Initialize(AdUnit adUnit);
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 15053b0564ace4fcdae31ceeb36d5e23
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,27 @@
// // ©2015 - 2025 Candy Smith
// // All rights reserved
// // Redistribution of this software is strictly not allowed.
// // Copy of this software can be obtained from unity asset store only.
// // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// // FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
// // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// // THE SOFTWARE.
namespace WordsToolkit.Scripts.Services.Ads.AdUnits
{
public interface IAdsListener
{
void Show(AdUnit adUnit);
void OnAdsInitialized();
void OnAdsLoaded(string placementId);
void OnAdsLoadFailed();
void OnAdsShowFailed();
void OnAdsShowStart();
void OnAdsShowClick();
void OnAdsShowComplete();
void OnInitFailed();
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 1c85c74df67b4b7a928492e027e61311
timeCreated: 1709539029