aha
This commit is contained in:
@ -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}");
|
||||
}
|
||||
}
|
||||
}
|
@ -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
|
@ -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}");
|
||||
}
|
||||
}
|
||||
}
|
@ -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
|
@ -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}");
|
||||
}
|
||||
}
|
||||
}
|
@ -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
|
@ -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}]";
|
||||
}
|
||||
}
|
||||
}
|
@ -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
|
Reference in New Issue
Block a user