This commit is contained in:
2025-06-16 15:14:23 +02:00
committed by devbeni
parent 60fe4620ff
commit 4ff561284f
3174 changed files with 428263 additions and 0 deletions

View File

@ -0,0 +1,67 @@
using UnityEngine;
namespace Mirror.Examples.PickupsDropsChilds
{
public class EquippedBall : MonoBehaviour, IEquipped
{
// Note: This example doesn't include animations or sounds for simplicity.
// These are just here for illustration purposes...the implementation
// methods could do something interesting like play a sound or animation.
[Header("Components")]
public Animator animator;
public AudioSource audioSource;
[Header("Equipped Item")]
[SerializeField]
EquippedItemConfig _equippedItemConfig;
public EquippedItemConfig equippedItemConfig
{
get => _equippedItemConfig;
set
{
Debug.Log($"{transform.root.name} EquippedItemConfig set from {_equippedItemConfig} to {value}", gameObject);
_equippedItemConfig = value;
}
}
void Reset()
{
equippedItemConfig = new EquippedItemConfig { usages = 3, maxUsages = 3 };
}
// Play appropriate animation or sound
public void Use()
{
// Effectively unlimited uses
if (equippedItemConfig.maxUsages == 0)
{
Debug.Log("Ball used");
return;
}
if (equippedItemConfig.usages > 0)
Debug.Log("Ball used");
else
Debug.Log("Ball is out of uses");
}
// Play appropriate animation or sound
public void AddUsages(byte usages)
{
Debug.Log($"Ball added {usages} usages");
}
// Play appropriate animation or sound
public void ResetUsages()
{
Debug.Log("Ball reset");
}
// Play appropriate animation or sound
public void ResetUsages(byte usages)
{
Debug.Log($"Ball reset usages to {usages}");
}
}
}

View File

@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 65881ca9607b5ea42b654a7ed2566027
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 129321
packageName: Mirror
packageVersion: 96.0.1
assetPath: Assets/Mirror/Examples/PickupsDropsChilds/Scripts/Interfaces/EquippedBall.cs
uploadId: 736421

View File

@ -0,0 +1,67 @@
using UnityEngine;
namespace Mirror.Examples.PickupsDropsChilds
{
public class EquippedBat : MonoBehaviour, IEquipped
{
// Note: This example doesn't include animations or sounds for simplicity.
// These are just here for illustration purposes...the implementation
// methods could do something interesting like play a sound or animation.
[Header("Components")]
public Animator animator;
public AudioSource audioSource;
[Header("Equipped Item")]
[SerializeField]
EquippedItemConfig _equippedItemConfig;
public EquippedItemConfig equippedItemConfig
{
get => _equippedItemConfig;
set
{
Debug.Log($"{transform.root.name} EquippedItemConfig set from {_equippedItemConfig} to {value}", gameObject);
_equippedItemConfig = value;
}
}
void Reset()
{
equippedItemConfig = new EquippedItemConfig { usages = 5, maxUsages = 5 };
}
// Play appropriate animation or sound
public void Use()
{
// Effectively unlimited uses
if (equippedItemConfig.maxUsages == 0)
{
Debug.Log("Bat used");
return;
}
if (equippedItemConfig.usages > 0)
Debug.Log("Bat used");
else
Debug.Log("Bat is out of uses");
}
// Play appropriate animation or sound
public void AddUsages(byte usages)
{
Debug.Log($"Bat added {usages} usages");
}
// Play appropriate animation or sound
public void ResetUsages()
{
Debug.Log("Bat reset");
}
// Play appropriate animation or sound
public void ResetUsages(byte usages)
{
Debug.Log($"Bat reset usages to {usages}");
}
}
}

View File

@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 35ca3b53a1e608f46ae9195e9d8cae83
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 129321
packageName: Mirror
packageVersion: 96.0.1
assetPath: Assets/Mirror/Examples/PickupsDropsChilds/Scripts/Interfaces/EquippedBat.cs
uploadId: 736421

View File

@ -0,0 +1,67 @@
using UnityEngine;
namespace Mirror.Examples.PickupsDropsChilds
{
public class EquippedBox : MonoBehaviour, IEquipped
{
// Note: This example doesn't include animations or sounds for simplicity.
// These are just here for illustration purposes...the implementation
// methods could do something interesting like play a sound or animation.
[Header("Components")]
public Animator animator;
public AudioSource audioSource;
[Header("Equipped Item")]
[SerializeField]
EquippedItemConfig _equippedItemConfig;
public EquippedItemConfig equippedItemConfig
{
get => _equippedItemConfig;
set
{
Debug.Log($"{transform.root.name} EquippedItemConfig set from {_equippedItemConfig} to {value}", gameObject);
_equippedItemConfig = value;
}
}
void Reset()
{
equippedItemConfig = new EquippedItemConfig { usages = 0, maxUsages = 0 };
}
// Play appropriate animation or sound
public void Use()
{
// Effectively unlimited uses
if (equippedItemConfig.maxUsages == 0)
{
Debug.Log("Box used");
return;
}
if (equippedItemConfig.usages > 0)
Debug.Log("Box used");
else
Debug.Log("Box is out of uses");
}
// Play appropriate animation or sound
public void AddUsages(byte usages)
{
Debug.Log($"Box added {usages} usages");
}
// Play appropriate animation or sound
public void ResetUsages()
{
Debug.Log("Box reset");
}
// Play appropriate animation or sound
public void ResetUsages(byte usages)
{
Debug.Log($"Box reset usages to {usages}");
}
}
}

View File

@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 5712a4d15653a184cb34b9c1e044563d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 129321
packageName: Mirror
packageVersion: 96.0.1
assetPath: Assets/Mirror/Examples/PickupsDropsChilds/Scripts/Interfaces/EquippedBox.cs
uploadId: 736421

View File

@ -0,0 +1,74 @@
namespace Mirror.Examples.PickupsDropsChilds
{
interface IEquipped
{
EquippedItemConfig equippedItemConfig { get; set; }
void Use();
void AddUsages(byte usages);
void ResetUsages();
void ResetUsages(byte usages);
}
[System.Serializable]
public struct EquippedItemConfig : System.IEquatable<EquippedItemConfig>
{
// Usages remaining...this could be ammo, potion doses, magic item charges, etc.
public byte usages;
// Maximum usages...set to 0 for effectively unlimited uses
public byte maxUsages;
public EquippedItemConfig(byte maxUsages)
{
usages = maxUsages;
this.maxUsages = maxUsages;
}
public EquippedItemConfig(byte usages, byte maxUsages)
{
this.usages = usages;
this.maxUsages = maxUsages;
}
public void Use()
{
// Reset usages to within allowed range in case higher than maxUsages
ResetUsages(usages);
// if we have usages left, decrement
if (usages > 0)
usages--;
}
// Add a specific number of usages
public void AddUsages(byte usages)
{
// Limit usages to maxUsages
this.usages = (byte)Mathd.Clamp(this.usages + usages, 0, maxUsages);
}
// Fully reload to max usages
public void ResetUsages()
{
this.usages = maxUsages;
}
// Reload to a specific number of usages
public void ResetUsages(byte usages)
{
// Limit usages to maxUsages
this.usages = (byte)Mathd.Clamp(usages, 0, maxUsages);
}
public bool Equals(EquippedItemConfig other)
{
return usages == other.usages && maxUsages == other.maxUsages;
}
public override string ToString()
{
return $"EquippedItemConfig[{usages}/{maxUsages}]";
}
}
}

View File

@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: b85cf93aed753aa448c8cf58ae3bb79d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 129321
packageName: Mirror
packageVersion: 96.0.1
assetPath: Assets/Mirror/Examples/PickupsDropsChilds/Scripts/Interfaces/IEquipped.cs
uploadId: 736421