Ghosts synced with some issues
This commit is contained in:
@@ -19,7 +19,7 @@ namespace Marro.PacManUdon
|
||||
target[index++] = (byte)value;
|
||||
|
||||
public static void Append(this byte[] target, bool value, ref int index) =>
|
||||
target[index++] = value ? (byte)1 : (byte)1;
|
||||
target[index++] = value ? (byte)1 : (byte)0;
|
||||
|
||||
public static void Append(this byte[] target, ushort value, ref int index) =>
|
||||
target.Append(BitConverter.GetBytes(value), ref index);
|
||||
@@ -33,6 +33,13 @@ namespace Marro.PacManUdon
|
||||
public static void Append(this byte[] target, int value, ref int index) =>
|
||||
target.Append(BitConverter.GetBytes(value), ref index);
|
||||
|
||||
/// <summary>
|
||||
/// Casts <paramref name="value"/> to a byte and then appends it.
|
||||
/// Safer than doing <c>Append((byte)value, ref index)</c>, which can crash the Udonbehaviour.
|
||||
/// </summary>
|
||||
public static void AppendAsByte(this byte[] target, int value, ref int index) =>
|
||||
target.Append(value.ToByte(), ref index);
|
||||
|
||||
public static void Append(this byte[] target, ulong value, ref int index) =>
|
||||
target.Append(BitConverter.GetBytes(value), ref index);
|
||||
|
||||
@@ -143,5 +150,12 @@ namespace Marro.PacManUdon
|
||||
index += 12;
|
||||
return value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Casts an Int32 to a byte.
|
||||
/// Doing this inline sometimes causes an udon exception, but doing it via a separate method seems to work fine.
|
||||
/// </summary>
|
||||
public static byte ToByte(this int value) =>
|
||||
(byte)value;
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -22,7 +22,6 @@ namespace Marro.PacManUdon
|
||||
|
||||
[SerializeField] private GameObject recorder;
|
||||
|
||||
|
||||
[Header("Game settings")]
|
||||
[SerializeField] private int startingExtraLives = 3;
|
||||
[SerializeField] private int scoreToExtraLife = 10000;
|
||||
@@ -35,10 +34,10 @@ namespace Marro.PacManUdon
|
||||
private GameObject[] intermissionScreenElements;
|
||||
|
||||
private PacManGameState gameState;
|
||||
[UdonSynced, FieldChangeCallback(nameof(Score))] private int score;
|
||||
[UdonSynced, FieldChangeCallback(nameof(Level))] private int level;
|
||||
[UdonSynced, FieldChangeCallback(nameof(HighScore))] private int highScore;
|
||||
[UdonSynced, FieldChangeCallback(nameof(ExtraLives))] private int extraLives;
|
||||
private int score;
|
||||
private int level;
|
||||
private int highScore;
|
||||
private int extraLives;
|
||||
|
||||
public void Start()
|
||||
{
|
||||
@@ -147,7 +146,7 @@ namespace Marro.PacManUdon
|
||||
|
||||
// SetInGameComponentVisibility(true);
|
||||
|
||||
ghostManager.Reset(afterLifeLost);
|
||||
ghostManager.RestartLevel(afterLifeLost);
|
||||
pacMan.Reset();
|
||||
bonusFruit.Despawn();
|
||||
soundManager.Reset();
|
||||
@@ -421,58 +420,8 @@ namespace Marro.PacManUdon
|
||||
return true;
|
||||
}
|
||||
|
||||
public int ExtraLives
|
||||
{
|
||||
set
|
||||
{
|
||||
SetExtraLives(value);
|
||||
}
|
||||
get => extraLives;
|
||||
}
|
||||
public PacManGameState GameState => gameState;
|
||||
|
||||
public PacManGameState GameState
|
||||
{
|
||||
set
|
||||
{
|
||||
SetGameState(value);
|
||||
}
|
||||
get => gameState;
|
||||
}
|
||||
|
||||
public bool GhostsScared
|
||||
{
|
||||
set
|
||||
{
|
||||
|
||||
}
|
||||
get => GhostsScared;
|
||||
}
|
||||
|
||||
public int Score
|
||||
{
|
||||
set
|
||||
{
|
||||
SetScore(value);
|
||||
}
|
||||
get => score;
|
||||
}
|
||||
|
||||
public int HighScore
|
||||
{
|
||||
set
|
||||
{
|
||||
SetHighScore(value);
|
||||
}
|
||||
get => score;
|
||||
}
|
||||
|
||||
public int Level
|
||||
{
|
||||
set
|
||||
{
|
||||
SetLevel(value);
|
||||
}
|
||||
get => level;
|
||||
}
|
||||
public int Level => level;
|
||||
}
|
||||
}
|
||||
@@ -43,7 +43,7 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 36
|
||||
Data: 37
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data:
|
||||
@@ -1898,6 +1898,54 @@ MonoBehaviour:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: <Index>k__BackingField
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 95|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: <Index>k__BackingField
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 11
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 11
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
- Name:
|
||||
Entry: 6
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <IsSerialized>k__BackingField
|
||||
Entry: 5
|
||||
Data: false
|
||||
- Name: _fieldAttributes
|
||||
Entry: 7
|
||||
Data: 96|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 0
|
||||
- Name:
|
||||
Entry: 13
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 13
|
||||
Data:
|
||||
|
||||
@@ -85,7 +85,10 @@ namespace Marro.PacManUdon
|
||||
private Vector2[] predefinedPath;
|
||||
private int predefinedPathIndex;
|
||||
|
||||
public void Initialize(PacMan pacMan, Ghost blinky, Transform startTransform, Vector2 homePosition, Vector2 idlePosition1, Vector2 idlePosition2, Vector2 cornerPosition)
|
||||
public bool IsScared => isScared;
|
||||
public int Index { get; private set; }
|
||||
|
||||
public void Initialize(PacMan pacMan, Ghost blinky, Transform startTransform, Vector2 homePosition, Vector2 idlePosition1, Vector2 idlePosition2, Vector2 cornerPosition, int index)
|
||||
{
|
||||
ghostManager = transform.parent.GetComponent<GhostManager>();
|
||||
animator = GetComponent<Animator>();
|
||||
@@ -104,6 +107,8 @@ namespace Marro.PacManUdon
|
||||
startRotation = startTransform.localRotation;
|
||||
|
||||
frozenState = PacManGhostFrozenState.Frozen;
|
||||
|
||||
Index = index;
|
||||
}
|
||||
|
||||
public void Reset()
|
||||
@@ -758,8 +763,6 @@ namespace Marro.PacManUdon
|
||||
return ghostState;
|
||||
}
|
||||
|
||||
public bool IsScared => isScared;
|
||||
|
||||
public void SetSpeed(float speed)
|
||||
{
|
||||
this.speed = speed;
|
||||
@@ -780,15 +783,15 @@ namespace Marro.PacManUdon
|
||||
data.Append(turnAroundSoon, ref index);
|
||||
data.Append(speed, ref index);
|
||||
|
||||
data.Append((byte)ghostState, ref index);
|
||||
data.AppendAsByte((int)ghostState, ref index);
|
||||
data.Append(isScared, ref index);
|
||||
data.Append(scattering, ref index);
|
||||
data.Append((byte)frozenState, ref index);
|
||||
data.AppendAsByte((int)frozenState, ref index);
|
||||
|
||||
data.Append(offGrid, ref index);
|
||||
data.Append((byte)housePelletCounter, ref index);
|
||||
data.AppendAsByte(housePelletCounter, ref index);
|
||||
data.Append(housePelletCounterActive, ref index);
|
||||
data.Append((byte)housePelletCounterLimit, ref index);
|
||||
data.AppendAsByte(housePelletCounterLimit, ref index);
|
||||
data.Append(faceInStartingDirectionUntilUnfrozen, ref index);
|
||||
|
||||
base.CollectSyncedData(data, ref index, eventType);
|
||||
@@ -806,6 +809,7 @@ namespace Marro.PacManUdon
|
||||
inTunnel = data.ReadBool(ref index);
|
||||
rngState = data.ReadInt(ref index);
|
||||
turnAroundSoon = data.ReadBool(ref index);
|
||||
Debug.Log($"{gameObject} turnAroundSoon = {turnAroundSoon}");
|
||||
speed = data.ReadFloat(ref index);
|
||||
|
||||
ghostState = (PacManGhostState)data.ReadByte(ref index);
|
||||
|
||||
@@ -781,25 +781,19 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: powerPelletActive
|
||||
Data: powerPelletDuration
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 40|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: powerPelletActive
|
||||
Data: powerPelletDuration
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 7
|
||||
Data: 41|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: System.Boolean, mscorlib
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
Entry: 9
|
||||
Data: 21
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 41
|
||||
Data: 21
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
@@ -814,7 +808,7 @@ MonoBehaviour:
|
||||
Data: false
|
||||
- Name: _fieldAttributes
|
||||
Entry: 7
|
||||
Data: 42|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
Data: 41|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 0
|
||||
@@ -835,19 +829,25 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: powerPelletDuration
|
||||
Data: scatterPattern
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 43|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
Data: 42|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: powerPelletDuration
|
||||
Data: scatterPattern
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 21
|
||||
Entry: 7
|
||||
Data: 43|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: System.Single[], mscorlib
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 21
|
||||
Data: 43
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
@@ -883,13 +883,13 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: powerPelletCountdown
|
||||
Data: pelletTimeoutLimit
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 45|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: powerPelletCountdown
|
||||
Data: pelletTimeoutLimit
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 21
|
||||
@@ -931,19 +931,25 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: powerPelletMultiplier
|
||||
Data: powerPelletActive
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 47|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: powerPelletMultiplier
|
||||
Data: powerPelletActive
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 36
|
||||
Entry: 7
|
||||
Data: 48|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: System.Boolean, mscorlib
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 36
|
||||
Data: 48
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
@@ -958,7 +964,7 @@ MonoBehaviour:
|
||||
Data: false
|
||||
- Name: _fieldAttributes
|
||||
Entry: 7
|
||||
Data: 48|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
Data: 49|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 0
|
||||
@@ -979,25 +985,19 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: ghostScaredQueue
|
||||
Data: powerPelletCountdown
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 49|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
Data: 50|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: ghostScaredQueue
|
||||
Data: powerPelletCountdown
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 7
|
||||
Data: 50|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: VRC.SDK3.Data.DataList, VRCSDK3
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
Entry: 9
|
||||
Data: 21
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 50
|
||||
Data: 21
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
@@ -1033,19 +1033,19 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: blinkingActivated
|
||||
Data: powerPelletMultiplier
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 52|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: blinkingActivated
|
||||
Data: powerPelletMultiplier
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 41
|
||||
Data: 36
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 41
|
||||
Data: 36
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
@@ -1081,10 +1081,112 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: blinkCountdown
|
||||
Data: ghostScaredQueue
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 54|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: ghostScaredQueue
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 7
|
||||
Data: 55|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: VRC.SDK3.Data.DataList, VRCSDK3
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 55
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
- Name:
|
||||
Entry: 6
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <IsSerialized>k__BackingField
|
||||
Entry: 5
|
||||
Data: false
|
||||
- Name: _fieldAttributes
|
||||
Entry: 7
|
||||
Data: 56|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 0
|
||||
- Name:
|
||||
Entry: 13
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: blinkingActivated
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 57|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: blinkingActivated
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 48
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 48
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
- Name:
|
||||
Entry: 6
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <IsSerialized>k__BackingField
|
||||
Entry: 5
|
||||
Data: false
|
||||
- Name: _fieldAttributes
|
||||
Entry: 7
|
||||
Data: 58|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 0
|
||||
- Name:
|
||||
Entry: 13
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: blinkCountdown
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 59|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: blinkCountdown
|
||||
@@ -1108,7 +1210,7 @@ MonoBehaviour:
|
||||
Data: false
|
||||
- Name: _fieldAttributes
|
||||
Entry: 7
|
||||
Data: 55|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
Data: 60|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 0
|
||||
@@ -1132,118 +1234,16 @@ MonoBehaviour:
|
||||
Data: blinkCurrentlyWhite
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 56|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
Data: 61|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: blinkCurrentlyWhite
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 41
|
||||
Data: 48
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 41
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
- Name:
|
||||
Entry: 6
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <IsSerialized>k__BackingField
|
||||
Entry: 5
|
||||
Data: false
|
||||
- Name: _fieldAttributes
|
||||
Entry: 7
|
||||
Data: 57|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 0
|
||||
- Name:
|
||||
Entry: 13
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: scatterCounter
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 58|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: scatterCounter
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 21
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 21
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
- Name:
|
||||
Entry: 6
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <IsSerialized>k__BackingField
|
||||
Entry: 5
|
||||
Data: false
|
||||
- Name: _fieldAttributes
|
||||
Entry: 7
|
||||
Data: 59|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 0
|
||||
- Name:
|
||||
Entry: 13
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: scatterPattern
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 60|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: scatterPattern
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 7
|
||||
Data: 61|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: System.Single[], mscorlib
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 61
|
||||
Data: 48
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
@@ -1279,19 +1279,19 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: scatterPatternIndex
|
||||
Data: scatterCounter
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 63|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: scatterPatternIndex
|
||||
Data: scatterCounter
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 36
|
||||
Data: 21
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 36
|
||||
Data: 21
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
@@ -1327,13 +1327,13 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: elroyLevel
|
||||
Data: scatterPatternIndex
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 65|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: elroyLevel
|
||||
Data: scatterPatternIndex
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 36
|
||||
@@ -1351,7 +1351,7 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name: <IsSerialized>k__BackingField
|
||||
Entry: 5
|
||||
Data: true
|
||||
Data: false
|
||||
- Name: _fieldAttributes
|
||||
Entry: 7
|
||||
Data: 66|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
@@ -1375,19 +1375,19 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: sharedPelletCounterActive
|
||||
Data: elroyLevel
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 67|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: sharedPelletCounterActive
|
||||
Data: elroyLevel
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 41
|
||||
Data: 36
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 41
|
||||
Data: 36
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
@@ -1399,7 +1399,7 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name: <IsSerialized>k__BackingField
|
||||
Entry: 5
|
||||
Data: false
|
||||
Data: true
|
||||
- Name: _fieldAttributes
|
||||
Entry: 7
|
||||
Data: 68|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
@@ -1423,19 +1423,19 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: sharedPelletCounter
|
||||
Data: sharedPelletCounterActive
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 69|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: sharedPelletCounter
|
||||
Data: sharedPelletCounterActive
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 36
|
||||
Data: 48
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 36
|
||||
Data: 48
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
@@ -1471,25 +1471,19 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: sharedPelletCounterReleaseValues
|
||||
Data: sharedPelletCounter
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 71|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: sharedPelletCounterReleaseValues
|
||||
Data: sharedPelletCounter
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 7
|
||||
Data: 72|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: System.Int32[], mscorlib
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
Entry: 9
|
||||
Data: 36
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 72
|
||||
Data: 36
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
@@ -1504,7 +1498,7 @@ MonoBehaviour:
|
||||
Data: false
|
||||
- Name: _fieldAttributes
|
||||
Entry: 7
|
||||
Data: 73|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
Data: 72|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 0
|
||||
@@ -1525,19 +1519,25 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: pelletTimeout
|
||||
Data: sharedPelletCounterReleaseValues
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 74|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
Data: 73|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: pelletTimeout
|
||||
Data: sharedPelletCounterReleaseValues
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 21
|
||||
Entry: 7
|
||||
Data: 74|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: System.Int32[], mscorlib
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 21
|
||||
Data: 74
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
@@ -1573,13 +1573,13 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: pelletTimeoutLimit
|
||||
Data: pelletTimeout
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 76|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: pelletTimeoutLimit
|
||||
Data: pelletTimeout
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 21
|
||||
@@ -1630,10 +1630,10 @@ MonoBehaviour:
|
||||
Data: frozen
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 41
|
||||
Data: 48
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 41
|
||||
Data: 48
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
@@ -1678,10 +1678,10 @@ MonoBehaviour:
|
||||
Data: kinematic
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 41
|
||||
Data: 48
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 41
|
||||
Data: 48
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
|
||||
@@ -24,9 +24,12 @@ namespace Marro.PacManUdon
|
||||
private int elroy1PelletCount;
|
||||
private int elroy2PelletCount;
|
||||
|
||||
private float powerPelletDuration;
|
||||
private float[] scatterPattern;
|
||||
private float pelletTimeoutLimit;
|
||||
|
||||
// Power Pellet logic
|
||||
private bool powerPelletActive;
|
||||
private float powerPelletDuration;
|
||||
private float powerPelletCountdown;
|
||||
private int powerPelletMultiplier;
|
||||
|
||||
@@ -40,7 +43,6 @@ namespace Marro.PacManUdon
|
||||
|
||||
// Scattering logic
|
||||
private float scatterCounter;
|
||||
private float[] scatterPattern;
|
||||
private int scatterPatternIndex;
|
||||
|
||||
// Elroy logic
|
||||
@@ -51,12 +53,10 @@ namespace Marro.PacManUdon
|
||||
private int sharedPelletCounter;
|
||||
private readonly int[] sharedPelletCounterReleaseValues = { 0, 7, 17, 32 };
|
||||
private float pelletTimeout;
|
||||
private float pelletTimeoutLimit;
|
||||
|
||||
private bool frozen;
|
||||
private bool kinematic;
|
||||
|
||||
// This should be called once when the game is initialized
|
||||
public void Initialize(Transform[] ghostStarts, Transform[] ghostTargets, PacMan pacMan, PelletManager pelletManager, GameManager gameController)
|
||||
{
|
||||
this.gameController = gameController;
|
||||
@@ -72,12 +72,11 @@ namespace Marro.PacManUdon
|
||||
Vector2 idlePosition2 = ghostTargets[2 + ghostIndex * 3].localPosition;
|
||||
Vector2 cornerPosition = ghostTargets[3 + ghostIndex * 3].localPosition;
|
||||
|
||||
ghosts[ghostIndex].Initialize(pacMan, blinky, startTransform, homePosition, idlePosition1, idlePosition2, cornerPosition);
|
||||
ghosts[ghostIndex].Initialize(pacMan, blinky, startTransform, homePosition, idlePosition1, idlePosition2, cornerPosition, ghostIndex);
|
||||
}
|
||||
}
|
||||
|
||||
// This should be called every time the level is reset
|
||||
public void Reset(bool afterLifeLost = false)
|
||||
public void RestartLevel(bool afterLifeLost = false)
|
||||
{
|
||||
ghostScaredQueue = new DataList();
|
||||
powerPelletActive = false;
|
||||
@@ -192,7 +191,9 @@ namespace Marro.PacManUdon
|
||||
gameController.GhostCaught(0);
|
||||
return;
|
||||
}
|
||||
|
||||
// Debug.Log($"{gameObject} GhostCaughtQueue with ghost {ghost}");
|
||||
networkManager.SendEventSoon(NetworkEventType.GhostUpdate);
|
||||
ghostScaredQueue.Add(ghost);
|
||||
GhostCaughtExecute(ghost);
|
||||
}
|
||||
@@ -314,6 +315,18 @@ namespace Marro.PacManUdon
|
||||
public void SetLevel(int level)
|
||||
{
|
||||
Debug.Log($"GhostManager: SetLevel {level}");
|
||||
SetLevelConstants(level);
|
||||
|
||||
int[] privatePelletCounterReleaseValues = PacManConstants.GetGhostHousePrivatePelletCounterLimitForLevel(level);
|
||||
for (int i = 0; i < ghosts.Length; i++)
|
||||
{
|
||||
ghosts[i].SetHousePelletCounterLimit(privatePelletCounterReleaseValues[i]);
|
||||
RestartLevel(); // Reset needed to properly apply level
|
||||
}
|
||||
}
|
||||
|
||||
private void SetLevelConstants(int level)
|
||||
{
|
||||
speedDefault = PacManConstants.GetGhostDefaultSpeedForLevel(level);
|
||||
speedScared = PacManConstants.GetGhostScaredSpeedForLevel(level);
|
||||
speedReturn = 15f;
|
||||
@@ -326,13 +339,6 @@ namespace Marro.PacManUdon
|
||||
powerPelletDuration = PacManConstants.GetScaredDurationForLevel(level);
|
||||
scatterPattern = PacManConstants.GetScatterPatternForLevel(level);
|
||||
pelletTimeoutLimit = PacManConstants.GetGhostHousePelletTimeoutLimitForLevel(level);
|
||||
|
||||
int[] privatePelletCounterReleaseValues = PacManConstants.GetGhostHousePrivatePelletCounterLimitForLevel(level);
|
||||
for (int i = 0; i < ghosts.Length; i++)
|
||||
{
|
||||
ghosts[i].SetHousePelletCounterLimit(privatePelletCounterReleaseValues[i]);
|
||||
Reset(); // Reset needed to properly apply level
|
||||
}
|
||||
}
|
||||
|
||||
public float GetTargetSpeed(Ghost ghost, PacManGhostState ghostState, bool isScared, bool inTunnel)
|
||||
@@ -478,11 +484,100 @@ namespace Marro.PacManUdon
|
||||
|
||||
public override void CollectSyncedData(byte[] data, ref int index, NetworkEventType eventType)
|
||||
{
|
||||
|
||||
if (eventType != NetworkEventType.GhostUpdate)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Power Pellet logic
|
||||
data.Append(powerPelletActive, ref index);
|
||||
data.Append(powerPelletCountdown, ref index);
|
||||
data.AppendAsByte(powerPelletMultiplier, ref index);
|
||||
|
||||
// Blink logic
|
||||
data.Append(blinkingActivated, ref index);
|
||||
data.Append(blinkCountdown, ref index);
|
||||
data.Append(blinkCurrentlyWhite, ref index);
|
||||
|
||||
// Scattering logic
|
||||
data.Append(scatterCounter, ref index);
|
||||
data.AppendAsByte(scatterPatternIndex, ref index);
|
||||
|
||||
// Elroy logic
|
||||
data.AppendAsByte(elroyLevel, ref index);
|
||||
|
||||
// Ghost house logic
|
||||
data.Append(sharedPelletCounterActive, ref index);
|
||||
data.AppendAsByte(sharedPelletCounter, ref index);
|
||||
data.Append(pelletTimeout, ref index);
|
||||
|
||||
data.Append(frozen, ref index);
|
||||
data.Append(kinematic, ref index);
|
||||
|
||||
data.AppendAsByte(gameController.Level, ref index);
|
||||
|
||||
var ghostScaredQueueArray = new byte[ghosts.Length];
|
||||
for (int i = 0; i < ghostScaredQueueArray.Length; i++)
|
||||
{
|
||||
var add = ghostScaredQueue.TryGetValue(i, out var ghost);
|
||||
if (!add)
|
||||
{
|
||||
ghostScaredQueueArray[i] = byte.MaxValue; // Add a terminator
|
||||
break;
|
||||
}
|
||||
ghostScaredQueueArray[i] = (byte)((Ghost)ghost.Reference).Index;
|
||||
}
|
||||
Debug.Log($"{gameObject} Sent a ghostScareQueue of length {ghostScaredQueue.Count}");
|
||||
data.Append(ghostScaredQueueArray, ref index);
|
||||
}
|
||||
|
||||
public override bool WriteSyncedData(byte[] data, ref int index, NetworkEventType eventType)
|
||||
{
|
||||
if (eventType != NetworkEventType.GhostUpdate)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// Power Pellet logic
|
||||
powerPelletActive = data.ReadBool(ref index);
|
||||
powerPelletCountdown = data.ReadFloat(ref index);
|
||||
powerPelletMultiplier = data.ReadByte(ref index);
|
||||
|
||||
// Blink logic
|
||||
blinkingActivated = data.ReadBool(ref index);
|
||||
blinkCountdown = data.ReadFloat(ref index);
|
||||
blinkCurrentlyWhite = data.ReadBool(ref index);
|
||||
|
||||
// Scattering logic
|
||||
scatterCounter = data.ReadFloat(ref index);
|
||||
scatterPatternIndex = data.ReadByte(ref index);
|
||||
|
||||
// Elroy logic
|
||||
elroyLevel = data.ReadByte(ref index);
|
||||
|
||||
// Ghost house logic
|
||||
sharedPelletCounterActive = data.ReadBool(ref index);
|
||||
sharedPelletCounter = data.ReadByte(ref index);
|
||||
pelletTimeout = data.ReadFloat(ref index);
|
||||
|
||||
frozen = data.ReadBool(ref index);
|
||||
kinematic = data.ReadBool(ref index);
|
||||
|
||||
var level = data.ReadByte(ref index);
|
||||
SetLevelConstants(level);
|
||||
|
||||
ghostScaredQueue.Clear();
|
||||
for (int i = 0; i < ghosts.Length; i++)
|
||||
{
|
||||
var ghostIndex = data[index + i];
|
||||
if (ghostIndex > ghosts.Length) // Reached terminator
|
||||
{
|
||||
break;
|
||||
}
|
||||
ghostScaredQueue.Add(ghosts[ghostIndex]);
|
||||
}
|
||||
Debug.Log($"{gameObject} Read back a ghostScareQueue of length {ghostScaredQueue.Count}");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -32,22 +32,12 @@ namespace Marro.PacManUdon
|
||||
|
||||
public override void CollectSyncedData(byte[] data, ref int index, NetworkEventType eventType)
|
||||
{
|
||||
if (eventType != NetworkEventType.PacManTurn)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
data.Append(GetPosition(), ref index);
|
||||
data.Append(GetDirection(), ref index);
|
||||
}
|
||||
|
||||
public override bool WriteSyncedData(byte[] data, ref int index, NetworkEventType eventType)
|
||||
{
|
||||
if (eventType != NetworkEventType.PacManTurn)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
SetPosition(data.ReadVector2(ref index));
|
||||
SetDirection(data.ReadVector2(ref index));
|
||||
|
||||
|
||||
@@ -439,7 +439,7 @@ namespace Marro.PacManUdon
|
||||
var timestampBytes = BitConverter.GetBytes(timestamp);
|
||||
Array.Copy(timestampBytes, 0, data, HeaderTimestampIndex, timestampBytes.Length);
|
||||
data[HeaderEventIdIndex] = eventId;
|
||||
data[HeaderEventTypeIndex] = Int32ToByte((int)eventType);
|
||||
data[HeaderEventTypeIndex] = ((int)eventType).ToByte();
|
||||
index = HeaderLength;
|
||||
}
|
||||
|
||||
@@ -926,9 +926,6 @@ namespace Marro.PacManUdon
|
||||
Array.Copy(data, start, result, 0, length);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static byte Int32ToByte(int value) =>
|
||||
(byte)value; // Doing this inline causes an error...?
|
||||
#endregion
|
||||
|
||||
#region Debug
|
||||
@@ -969,6 +966,11 @@ namespace Marro.PacManUdon
|
||||
{
|
||||
SendEventSoon(NetworkEventType.SyncPellets);
|
||||
}
|
||||
|
||||
public void DoGhostSync()
|
||||
{
|
||||
SendEventSoon(NetworkEventType.GhostUpdate);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -92,7 +92,7 @@ namespace Marro.PacManUdon
|
||||
pacMan.SetPosition(attractScreenElements[16].transform.localPosition);
|
||||
pacMan.SetDirection(Vector2.left);
|
||||
|
||||
ghostManager.Reset();
|
||||
ghostManager.RestartLevel();
|
||||
ghostManager.SetLevel(2);
|
||||
ghostManager.SetKinematic(true);
|
||||
ghostManager.SetActive(true);
|
||||
|
||||
Reference in New Issue
Block a user