Compare commits

..

22 Commits

Author SHA1 Message Date
f8eed62a9f Refix: Dice roll. 2026-01-29 22:16:54 +05:30
4fd71569ef Hotfix: Dice rolling. 2026-01-29 21:36:23 +05:30
c3ab5552ea Added logic for switching player when player gets six through rolling dice 3 times. 2026-01-29 21:15:48 +05:30
a291dff121 Safe Zone visual 2026-01-29 20:24:16 +05:30
384356dc51 Merge branch 'Gameplay/main-gameplay' into Gameplay/ashby-gameplay 2026-01-29 20:01:07 +05:30
1f10a0a52e Fix: Bot repeating upon 6 rolled upon. 2026-01-29 19:59:17 +05:30
be79221cbd Fixes: Player data is still cached after leaving end index of general tiles, 2026-01-29 19:48:25 +05:30
025b13a400 Fix: Completed players turn issue. 2026-01-29 18:44:41 +05:30
874e44a7f7 Attached few SFX and added prefab to show player count 2026-01-29 18:34:30 +05:30
87d99d03a4 Added More Audio Clips 2026-01-29 18:32:07 +05:30
4b2720759c Fix: Attacking logic for multiple pawns in the same tile. 2026-01-29 18:13:07 +05:30
f86216c729 Merge branch 'Gameplay/main-gameplay' into Gameplay/ashby-gameplay 2026-01-29 16:20:55 +05:30
eecba2779b Added safe zone sprite 2026-01-29 16:17:34 +05:30
aaaf88c72a Refactored changes. 2026-01-29 16:17:19 +05:30
eb6295bee3 Added Player Visuals
- Added character
- Linked animation
- Player rotation based on next tile
2026-01-29 15:54:13 +05:30
d247307e51 Bot and player bug fixes.
Fixes for selecting wrong player, switching player.
2026-01-29 15:45:49 +05:30
d93ffe6fad Fix: AI's not aligning properly in safe zone. 2026-01-28 22:00:39 +05:30
5a90b0961c Merge branch 'main' into feature/main-gameplay 2026-01-28 21:01:49 +05:30
bc552e57ff Removed project folder. 2026-01-28 20:59:08 +05:30
67b6da28c0 Bug Fixes: AI. 2026-01-28 20:57:35 +05:30
1084e5dd08 Merge branch 'main' into feature/main-gameplay 2026-01-28 17:41:09 +05:30
031b3201c6 Fixes for AI logic. 2026-01-28 17:34:06 +05:30
46 changed files with 48147 additions and 576 deletions

Binary file not shown.

View File

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: 3fef0c7922e3840f79c05fb9a520dde3
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: f74d7002e04bd4d0b88f3cad5f5b507d
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: 8ef56d3601eaa41aca1c0478b032e10b
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@ -568,7 +568,7 @@ GameObject:
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 2147483647
m_IsActive: 1 m_IsActive: 1
--- !u!4 &6704853020313334976 --- !u!4 &6704853020313334976
Transform: Transform:
@ -578,7 +578,7 @@ Transform:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2558544614274069912} m_GameObject: {fileID: 2558544614274069912}
m_LocalRotation: {x: -0.50000006, y: -0.49999994, z: 0.49999994, w: 0.50000006} m_LocalRotation: {x: -0.50000006, y: -0.49999994, z: 0.49999994, w: 0.50000006}
m_LocalPosition: {x: 0.24394053, y: 0.3241422, z: 0.09795022} m_LocalPosition: {x: 0.24394053, y: 0.3541, z: 0.09795022}
m_LocalScale: {x: 0.1234148, y: 0.1234148, z: 0.8597383} m_LocalScale: {x: 0.1234148, y: 0.1234148, z: 0.8597383}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []

Binary file not shown.

After

Width:  |  Height:  |  Size: 755 KiB

View File

@ -0,0 +1,135 @@
fileFormatVersion: 2
guid: d20b33310cfd64c4f84b7443a0b6245b
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 500
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

View File

@ -0,0 +1,135 @@
fileFormatVersion: 2
guid: a818a794565c746faaf72c0cb42b7e83
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 500
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View File

@ -0,0 +1,135 @@
fileFormatVersion: 2
guid: d683a4be9f87743d3b78b0b8761f8f1a
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 MiB

View File

@ -0,0 +1,135 @@
fileFormatVersion: 2
guid: 00a89165d3d9b4999be2f923c979b71d
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 KiB

View File

@ -0,0 +1,135 @@
fileFormatVersion: 2
guid: af3141ba5ffc841798e2e04325a2bc4a
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,30 @@
%YAML 1.1 %YAML 1.1
%TAG !u! tag:unity3d.com,2011: %TAG !u! tag:unity3d.com,2011:
--- !u!1101 &-8290374687124494561
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Jump
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 6893393781432945197}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0
m_HasExitTime: 0
m_HasFixedDuration: 0
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1107 &-4386602261049339250 --- !u!1107 &-4386602261049339250
AnimatorStateMachine: AnimatorStateMachine:
serializedVersion: 6 serializedVersion: 6
@ -11,7 +36,7 @@ AnimatorStateMachine:
m_ChildStates: m_ChildStates:
- serializedVersion: 1 - serializedVersion: 1
m_State: {fileID: -4082066970046094144} m_State: {fileID: -4082066970046094144}
m_Position: {x: 310, y: 90, z: 0} m_Position: {x: 170, y: 60, z: 0}
- serializedVersion: 1 - serializedVersion: 1
m_State: {fileID: 2691405124668571998} m_State: {fileID: 2691405124668571998}
m_Position: {x: 30, y: 200, z: 0} m_Position: {x: 30, y: 200, z: 0}
@ -25,7 +50,7 @@ AnimatorStateMachine:
m_StateMachineBehaviours: [] m_StateMachineBehaviours: []
m_AnyStatePosition: {x: 50, y: 20, z: 0} m_AnyStatePosition: {x: 50, y: 20, z: 0}
m_EntryPosition: {x: 50, y: 120, z: 0} m_EntryPosition: {x: 50, y: 120, z: 0}
m_ExitPosition: {x: 280, y: 210, z: 0} m_ExitPosition: {x: 120, y: 420, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: 2691405124668571998} m_DefaultState: {fileID: 2691405124668571998}
--- !u!1102 &-4082066970046094144 --- !u!1102 &-4082066970046094144
@ -54,31 +79,6 @@ AnimatorState:
m_MirrorParameter: m_MirrorParameter:
m_CycleOffsetParameter: m_CycleOffsetParameter:
m_TimeParameter: m_TimeParameter:
--- !u!1101 &-607664822650355851
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 3
m_ConditionEvent: BlendJump
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 6893393781432945197}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!91 &9100000 --- !u!91 &9100000
AnimatorController: AnimatorController:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -124,7 +124,7 @@ AnimatorState:
m_Speed: 1 m_Speed: 1
m_CycleOffset: 0 m_CycleOffset: 0
m_Transitions: m_Transitions:
- {fileID: -607664822650355851} - {fileID: -8290374687124494561}
m_StateMachineBehaviours: [] m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0} m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0 m_IKOnFeet: 0
@ -134,7 +134,7 @@ AnimatorState:
m_MirrorParameterActive: 0 m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0 m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0 m_TimeParameterActive: 0
m_Motion: {fileID: -203655887218126122, guid: 57e26c7b6440e4ed9839c06440e70481, type: 3} m_Motion: {fileID: 7400000, guid: fe95c7799fd3342a7a39f4ed2c5e18c8, type: 2}
m_Tag: m_Tag:
m_SpeedParameter: m_SpeedParameter:
m_MirrorParameter: m_MirrorParameter:
@ -179,7 +179,7 @@ AnimatorState:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_Name: Jump m_Name: Jump
m_Speed: 1 m_Speed: 1.7
m_CycleOffset: 0 m_CycleOffset: 0
m_Transitions: m_Transitions:
- {fileID: 8398125670744292538} - {fileID: 8398125670744292538}
@ -192,7 +192,7 @@ AnimatorState:
m_MirrorParameterActive: 0 m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0 m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0 m_TimeParameterActive: 0
m_Motion: {fileID: -203655887218126122, guid: 611548578fef948cda9845e8f694b086, type: 3} m_Motion: {fileID: 7400000, guid: 08509db092fd34ddb83d985e5e38e8e4, type: 2}
m_Tag: m_Tag:
m_SpeedParameter: m_SpeedParameter:
m_MirrorParameter: m_MirrorParameter:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 08509db092fd34ddb83d985e5e38e8e4
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: fe95c7799fd3342a7a39f4ed2c5e18c8
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -553,6 +553,8 @@ GameObject:
m_Component: m_Component:
- component: {fileID: 5420572229297639394} - component: {fileID: 5420572229297639394}
- component: {fileID: 5526766409186502679} - component: {fileID: 5526766409186502679}
- component: {fileID: 905786488}
- component: {fileID: 905786489}
m_Layer: 0 m_Layer: 0
m_Name: Pirate (Blue) m_Name: Pirate (Blue)
m_TagString: Untagged m_TagString: Untagged
@ -598,6 +600,34 @@ Animator:
m_AllowConstantClipSamplingOptimization: 1 m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorStateOnDisable: 0 m_KeepAnimatorStateOnDisable: 0
m_WriteDefaultValuesOnDisable: 0 m_WriteDefaultValuesOnDisable: 0
--- !u!136 &905786488
CapsuleCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4643894104949937496}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
m_Radius: 0.37326267
m_Height: 1.5875065
m_Direction: 1
m_Center: {x: 0, y: 0.71958995, z: 0}
--- !u!114 &905786489
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4643894104949937496}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: da493b8dbb3aa475abf11f31549b9293, type: 3}
m_Name:
m_EditorClassIdentifier:
playerState: 0
animator: {fileID: 5526766409186502679}
--- !u!1 &4818123989977612668 --- !u!1 &4818123989977612668
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -553,6 +553,8 @@ GameObject:
m_Component: m_Component:
- component: {fileID: 5672526856521419272} - component: {fileID: 5672526856521419272}
- component: {fileID: 5274388487207906813} - component: {fileID: 5274388487207906813}
- component: {fileID: 197323787002765461}
- component: {fileID: 2411043470597465747}
m_Layer: 0 m_Layer: 0
m_Name: Pirate (Green) m_Name: Pirate (Green)
m_TagString: Untagged m_TagString: Untagged
@ -598,6 +600,34 @@ Animator:
m_AllowConstantClipSamplingOptimization: 1 m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorStateOnDisable: 0 m_KeepAnimatorStateOnDisable: 0
m_WriteDefaultValuesOnDisable: 0 m_WriteDefaultValuesOnDisable: 0
--- !u!136 &197323787002765461
CapsuleCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5040387473618948274}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
m_Radius: 0.37326267
m_Height: 1.5875065
m_Direction: 1
m_Center: {x: 0, y: 0.71958995, z: 0}
--- !u!114 &2411043470597465747
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5040387473618948274}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: da493b8dbb3aa475abf11f31549b9293, type: 3}
m_Name:
m_EditorClassIdentifier:
playerState: 0
animator: {fileID: 5274388487207906813}
--- !u!1 &5059623752267150313 --- !u!1 &5059623752267150313
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -139,6 +139,8 @@ GameObject:
m_Component: m_Component:
- component: {fileID: 338321318880370071} - component: {fileID: 338321318880370071}
- component: {fileID: 232863433340697214} - component: {fileID: 232863433340697214}
- component: {fileID: 5261245861010270014}
- component: {fileID: 1627116187348267135}
m_Layer: 0 m_Layer: 0
m_Name: Pirate (Grey) m_Name: Pirate (Grey)
m_TagString: Untagged m_TagString: Untagged
@ -184,6 +186,34 @@ Animator:
m_AllowConstantClipSamplingOptimization: 1 m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorStateOnDisable: 0 m_KeepAnimatorStateOnDisable: 0
m_WriteDefaultValuesOnDisable: 0 m_WriteDefaultValuesOnDisable: 0
--- !u!114 &5261245861010270014
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1151274294278227757}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: da493b8dbb3aa475abf11f31549b9293, type: 3}
m_Name:
m_EditorClassIdentifier:
playerState: 0
animator: {fileID: 232863433340697214}
--- !u!136 &1627116187348267135
CapsuleCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1151274294278227757}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
m_Radius: 0.37326267
m_Height: 1.5875065
m_Direction: 1
m_Center: {x: 0, y: 0.71958995, z: 0}
--- !u!1 &1274023128019783057 --- !u!1 &1274023128019783057
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -1182,6 +1182,8 @@ GameObject:
m_Component: m_Component:
- component: {fileID: 7767047851774264951} - component: {fileID: 7767047851774264951}
- component: {fileID: 7800412279828783518} - component: {fileID: 7800412279828783518}
- component: {fileID: 896294590}
- component: {fileID: 896294592}
m_Layer: 0 m_Layer: 0
m_Name: Pirate (Red) m_Name: Pirate (Red)
m_TagString: Untagged m_TagString: Untagged
@ -1227,6 +1229,34 @@ Animator:
m_AllowConstantClipSamplingOptimization: 1 m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorStateOnDisable: 0 m_KeepAnimatorStateOnDisable: 0
m_WriteDefaultValuesOnDisable: 0 m_WriteDefaultValuesOnDisable: 0
--- !u!136 &896294590
CapsuleCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6954059691668741325}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
m_Radius: 0.37326267
m_Height: 1.5875065
m_Direction: 1
m_Center: {x: 0, y: 0.71958995, z: 0}
--- !u!114 &896294592
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6954059691668741325}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: da493b8dbb3aa475abf11f31549b9293, type: 3}
m_Name:
m_EditorClassIdentifier:
playerState: 0
animator: {fileID: 7800412279828783518}
--- !u!1 &7074820051352815849 --- !u!1 &7074820051352815849
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -108,7 +108,7 @@ GameObject:
m_Component: m_Component:
- component: {fileID: 5543862162727244199} - component: {fileID: 5543862162727244199}
m_Layer: 0 m_Layer: 0
m_Name: Dice m_Name: Dice Prefab
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9806427916b5543ca895d39e45a38ce3
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,72 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1107 &-6323551104830006759
AnimatorStateMachine:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Base Layer
m_ChildStates:
- serializedVersion: 1
m_State: {fileID: -4677924042930485358}
m_Position: {x: 200, y: 0, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
m_AnyStatePosition: {x: 50, y: 20, z: 0}
m_EntryPosition: {x: 50, y: 120, z: 0}
m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: -4677924042930485358}
--- !u!1102 &-4677924042930485358
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: New Animation
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 93e3a01ea580046be95269fe225d281d, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Win Text
serializedVersion: 5
m_AnimatorParameters: []
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
m_StateMachine: {fileID: -6323551104830006759}
m_Mask: {fileID: 0}
m_Motions: []
m_Behaviours: []
m_BlendingMode: 0
m_SyncedLayerIndex: -1
m_DefaultWeight: 0
m_IKPass: 0
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f5e05e1cfcf9648cea325588ea56a4e1
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,205 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: WinnerBreathing
serializedVersion: 6
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves: []
m_ScaleCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: {x: 1, y: 1, z: 1}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 0.75
value: {x: 1.2, y: 1.2, z: 1}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 1.5
value: {x: 1, y: 1, z: 1}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
path:
m_FloatCurves: []
m_PPtrCurves: []
m_SampleRate: 60
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 0
attribute: 3
script: {fileID: 0}
typeID: 4
customType: 0
isPPtrCurve: 0
pptrCurveMapping: []
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 1.5
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 1
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 1
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.75
value: 1.2
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1.5
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalScale.x
path:
classID: 224
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.75
value: 1.2
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1.5
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalScale.y
path:
classID: 224
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.75
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1.5
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalScale.z
path:
classID: 224
script: {fileID: 0}
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 93e3a01ea580046be95269fe225d281d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,395 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1950433650452808236
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 65645560966781747}
- component: {fileID: 2858063052804912079}
- component: {fileID: 8752947010238866161}
m_Layer: 5
m_Name: Player Count
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &65645560966781747
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1950433650452808236}
m_LocalRotation: {x: -0, y: -0.40670383, z: -0, w: 0.91356015}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 8089047016482236660}
- {fileID: 6813413954384782979}
m_Father: {fileID: 953143927943285832}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: -47.996, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2858063052804912079
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1950433650452808236}
m_CullTransparentMesh: 1
--- !u!114 &8752947010238866161
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1950433650452808236}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: d683a4be9f87743d3b78b0b8761f8f1a, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &3121570579764810185
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8089047016482236660}
- component: {fileID: 6912280764899309526}
- component: {fileID: 8916921562328473505}
m_Layer: 5
m_Name: Border
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8089047016482236660
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3121570579764810185}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 65645560966781747}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: -0.014999993}
m_SizeDelta: {x: 0.030000001, y: 0.000000013969839}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6912280764899309526
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3121570579764810185}
m_CullTransparentMesh: 1
--- !u!114 &8916921562328473505
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3121570579764810185}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: af3141ba5ffc841798e2e04325a2bc4a, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &4879164135252893718
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 953143927943285832}
- component: {fileID: 5587250865659051320}
- component: {fileID: 1334714064113256010}
- component: {fileID: 2739169735767897497}
m_Layer: 5
m_Name: Canvas - World
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &953143927943285832
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4879164135252893718}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 3, y: 3, z: 3}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 65645560966781747}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 8.79}
m_SizeDelta: {x: 1, y: 1}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!223 &5587250865659051320
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4879164135252893718}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 2
m_Camera: {fileID: 0}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_VertexColorAlwaysGammaSpace: 0
m_AdditionalShaderChannelsFlag: 25
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!114 &1334714064113256010
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4879164135252893718}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 0
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 800, y: 600}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 1
--- !u!114 &2739169735767897497
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4879164135252893718}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreReversedGraphics: 1
m_BlockingObjects: 0
m_BlockingMask:
serializedVersion: 2
m_Bits: 4294967295
--- !u!1 &8183529856602442984
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6813413954384782979}
- component: {fileID: 490599014817712585}
- component: {fileID: 5414082930131347236}
m_Layer: 5
m_Name: Count
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6813413954384782979
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8183529856602442984}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 65645560966781747}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &490599014817712585
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8183529856602442984}
m_CullTransparentMesh: 1
--- !u!114 &5414082930131347236
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8183529856602442984}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: '4
'
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 0482bbb9a4bbf48bdbd050f3c6b94af0, type: 2}
m_sharedMaterial: {fileID: 5260989334135036006, guid: 0482bbb9a4bbf48bdbd050f3c6b94af0, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4282166768
m_fontColor: {r: 0.9411765, g: 0.6784314, b: 0.23529412, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 0.5
m_fontSizeBase: 0.5
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a925361762f504380a8aa4d7eb87b32c
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using DG.Tweening;
using TMPro; using TMPro;
using UnityEngine; using UnityEngine;
@ -20,6 +21,7 @@ public class PlayerGameData
public int endIndex; public int endIndex;
public Transform playersParent; public Transform playersParent;
public Dictionary<int, PlayerPawn> playerPawnsDict; public Dictionary<int, PlayerPawn> playerPawnsDict;
public int totalPawnsInHome = 0;
public int totalPawnsFinished = 0; public int totalPawnsFinished = 0;
} }
@ -41,6 +43,8 @@ public enum BotMove
public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
{ {
[SerializeField] private int diceValue = 0;
[SerializeField] private TextMeshProUGUI diceText; [SerializeField] private TextMeshProUGUI diceText;
[SerializeField] private Transform pointerDebug; [SerializeField] private Transform pointerDebug;
@ -73,10 +77,12 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
} }
private bool CanRollDiceAgain = false; // used for when you get a 6 or when you reach the finish point private bool CanRollDiceAgain = false; // used for when you get a 6 or when you reach the finish point
private int diceSixRollCounter = 0;
public void Initialize() public void Initialize()
{ {
InterfaceManager.Instance?.RegisterInterface<GameplayManager>(this); InterfaceManager.Instance?.RegisterInterface<GameplayManager>(this);
DOTween.useSafeMode = false;
} }
public void InitializeData() public void InitializeData()
@ -86,8 +92,9 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
CanRollDice = true; CanRollDice = true;
// initialize the player list from UI. // initialize the player list from UI.
// InitPlayerTypesForLAN(null); // InitPlayerTypesForLAN(null);
InitPlayerTypesForBotMatch(PlayerType.Player1, 1); InitPlayerTypesForBotMatch(PlayerType.Player1, 3);
} }
// TODO :: Call when the UI selection is made and game starts // TODO :: Call when the UI selection is made and game starts
@ -95,6 +102,7 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
{ {
// TODO :: 2P, 3P, 4P // TODO :: 2P, 3P, 4P
allPlayerTypes = new List<PlayerType> { PlayerType.Player1, PlayerType.Player2, PlayerType.Player3, PlayerType.Player4 }; allPlayerTypes = new List<PlayerType> { PlayerType.Player1, PlayerType.Player2, PlayerType.Player3, PlayerType.Player4 };
// allPlayerTypes = new List<PlayerType> { PlayerType.Player1, PlayerType.Player3 };
playerBaseHandler.InitPlayerTypes(allPlayerTypes); playerBaseHandler.InitPlayerTypes(allPlayerTypes);
InitCurrentGamePlayerInfo(); InitCurrentGamePlayerInfo();
@ -200,6 +208,8 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
var pawn = playerPawnChild.GetComponent<PlayerPawn>(); var pawn = playerPawnChild.GetComponent<PlayerPawn>();
playerGameDatasDict[playerGameData.playerType].playerPawnsDict.Add(pawn.PlayerId, pawn); playerGameDatasDict[playerGameData.playerType].playerPawnsDict.Add(pawn.PlayerId, pawn);
} }
playerGameDatasDict[playerGameData.playerType].totalPawnsInHome = playerGameDatasDict[playerGameData.playerType].playerPawnsDict.Count;
} }
} }
@ -215,41 +225,52 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
public void RollDiceForPlayer(int rolledVal) public void RollDiceForPlayer(int rolledVal)
{ {
if (botTypesInGame.Contains(currentPlayerTypeTurn)) return;
OnDiceRolled(rolledVal); OnDiceRolled(rolledVal);
CheckForPlayerSwitching(); OnNoMovesLeft();
} }
private void CheckForPlayerSwitching() // Summary :: Function will be called and effective when a dice is rolled and no selection of pawns is made.
private void OnNoMovesLeft()
{ {
if (canSwitchPlayer && !CanRollDiceAgain) if (canSwitchPlayer && !CanRollDiceAgain)
{ {
Debug.Log($"Switching player"); Debug.Log($"Switching player");
SwitchPlayer(); SwitchPlayer();
CanRollDice = true; SetCanRollDiceForUser(true);
} }
else if (botTypesInGame.Contains(currentPlayerTypeTurn) && CanRollDiceAgain) }
private bool CheckForMaxDiceRollAttempt()
{
if (diceSixRollCounter == 3)
{ {
Debug.Log($"RollDiceForBot"); CanRollDiceAgain = false;
Invoke(nameof(RollDiceForBot), 1f); SwitchPlayer();
return true;
} }
return false;
} }
private void RollDiceForBot() private void RollDiceForBot()
{ {
Debug.Log($"CallTest: RollDiceForBot"); Debug.Log($"CallTest: RollDiceForBot");
OnDiceRolled(UnityEngine.Random.Range(1, Ludo_3D_Constants.Max_Dice_Rolls + 1)); // OnDiceRolled(diceValue == 0 ? UnityEngine.Random.Range(1, Ludo_3D_Constants.Max_Dice_Rolls + 1) : diceValue);
OnDiceRolled(diceValue == 0 ? UnityEngine.Random.Range(1, Ludo_3D_Constants.Max_Dice_Rolls + 1) : diceValue);
SelectPawnFromBotBase(); SelectPawnFromBotBase();
CheckForPlayerSwitching(); OnNoMovesLeft();
} }
// TODO :: Call right after the dice is rolled with the animation // TODO :: Call right after the dice is rolled with the animation
// What happens when you get a 6 // What happens when you get a 6
private void SelectPawnFromBotBase() private void SelectPawnFromBotBase()
{ {
if (availPlayers.Count() < 1 && !CanRollDiceAgain || !botTypesInGame.Contains(currentPlayerTypeTurn)) return; if (canSwitchPlayer || availPlayers.Count() < 1 && !CanRollDiceAgain || !botTypesInGame.Contains(currentPlayerTypeTurn)) return; // Have a better check here
Debug.Log($"CallTest: SelectPawnFromBotBase: {currentPlayerTypeTurn}"); Debug.Log($"CallTest: SelectPawnFromBotBase: {currentPlayerTypeTurn}");
var botPawnsDictForCurrentPlayer = botRuntimeMovementData[currentPlayerTypeTurn]; // set the data inside this dict var botPawnsDictForCurrentPlayer = botRuntimeMovementData[currentPlayerTypeTurn]; // set the data inside this dict
@ -263,53 +284,81 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
int savedPlayerId = -1; int savedPlayerId = -1;
PlayerPawn pawn = null; PlayerPawn pawn = null;
Debug.Log($"SelectPawnFromBotBase: availPlayers.Count(): {availPlayers.Count()}, CanRollDiceAgain: {CanRollDiceAgain}");
if (playerGameDatasDict[currentPlayerTypeTurn].totalPawnsInHome == 0)
{
InitActivePlayers();
}
if (availPlayers.Count() < 1 && CanRollDiceAgain) // got a 6 roll value if (availPlayers.Count() < 1 && CanRollDiceAgain) // got a 6 roll value
{ {
pawn = playerGameDatasDict[currentPlayerTypeTurn].playerPawnsDict.Values.FirstOrDefault(pawn => pawn.GetPlayerState() == PlayerState.InHome); pawn = playerGameDatasDict[currentPlayerTypeTurn].playerPawnsDict.Values.FirstOrDefault(pawn => pawn.GetPlayerState() == PlayerState.InHome);
Debug.Log($"SelectedPawn: {pawn.name}");
OnPawnSelected(pawn); OnPawnSelected(pawn);
return; return;
} }
// TODO :: Double check // TODO :: Double check
// foreach (var key in botPawnsDictForCurrentPlayer.Keys) foreach (var key in botPawnsDictForCurrentPlayer.Keys)
// botPawnsDictForCurrentPlayer[key] = BotMove.NoMoves; {
Debug.Log($"b :: botPawnsDictForCurrentPlayer[key]: {botPawnsDictForCurrentPlayer[key]}");
// botPawnsDictForCurrentPlayer[key] = BotMove.NoMoves;
Debug.Log($"a :: botPawnsDictForCurrentPlayer[key]: {botPawnsDictForCurrentPlayer[key]}");
}
Debug.Log($"Before Iterating");
foreach (var playerPawn in availPlayers) foreach (var playerPawn in availPlayers)
{ {
Debug.Log($"Iterating");
var possibleLandingIndex = playerPawn.CurrentTileIndex + diceRolledValue; var possibleLandingIndex = playerPawn.CurrentTileIndex + diceRolledValue;
if (playerPawn.GetPlayerState() == PlayerState.HasFinished)
{
botPawnsDictForCurrentPlayer.Remove(playerPawn.PlayerId); // TODO :: Double check logic
continue;
}
int lastIndex = tilesManager.GetGeneralTilesLength() - 1; int lastIndex = tilesManager.GetGeneralTilesLength() - 1;
int index = possibleLandingIndex > lastIndex ? (possibleLandingIndex - lastIndex) - 1 : possibleLandingIndex; int index = possibleLandingIndex > lastIndex ? possibleLandingIndex - lastIndex - 1 : possibleLandingIndex;
Tile possibleTileData = tilesManager.RetrieveTileBasedOnIndex(index); Tile possibleTileData = tilesManager.RetrieveTileBasedOnIndex(index);
Debug.Log($"AI playerPawn :: {playerPawn.name} :: state: {playerPawn.GetPlayerState()}, possibleLandingIndex: {possibleLandingIndex > playerGameDatasDict[currentPlayerTypeTurn].endIndex}");
Debug.Log($"AI playerPawn :: {playerPawn.name} :: possibleTileData.IsSafeZone: {possibleTileData.IsSafeZone}");
Debug.Log($"AI playerPawn :: {playerPawn.name} :: possibleTileData.PlayerPawn: {possibleTileData.HasPawnsAvailable}");
if (playerPawn.GetPlayerState() == PlayerState.InFinishingPath || possibleLandingIndex > playerGameDatasDict[currentPlayerTypeTurn].endIndex) if (playerPawn.GetPlayerState() == PlayerState.InFinishingPath || possibleLandingIndex > playerGameDatasDict[currentPlayerTypeTurn].endIndex)
{ {
botPawnsDictForCurrentPlayer[playerPawn.PlayerId] = BotMove.FinishingPathMove; Debug.Log($"AI playerPawn :: {playerPawn.name} :: {playerPawn.PlayerId} :: inFinishingPath :: canSelectPlayer: {playerPawn.CanSelectPlayer}");
savedPlayerId = playerPawn.PlayerId; if (playerPawn.CanSelectPlayer)
break; {
botPawnsDictForCurrentPlayer[playerPawn.PlayerId] = BotMove.FinishingPathMove;
savedPlayerId = playerPawn.PlayerId;
break;
}
else
{
botPawnsDictForCurrentPlayer[playerPawn.PlayerId] = BotMove.NoMoves;
}
} }
else if (possibleTileData.IsSafeZone || playerPawn.GetPlayerState() == PlayerState.InHome) else if (possibleTileData.IsSafeZone)
{ {
Debug.Log($"AI playerPawn :: {playerPawn.name} :: {playerPawn.PlayerId} :: safeMove");
botPawnsDictForCurrentPlayer[playerPawn.PlayerId] = BotMove.SafeMove; botPawnsDictForCurrentPlayer[playerPawn.PlayerId] = BotMove.SafeMove;
} }
else if (possibleTileData.PlayerPawn != null) else if (possibleTileData.HasPawnsAvailable)
{ {
Debug.Log($"AI playerPawn :: {playerPawn.name} :: {playerPawn.PlayerId} :: attackMove");
botPawnsDictForCurrentPlayer[playerPawn.PlayerId] = BotMove.AttackMove; botPawnsDictForCurrentPlayer[playerPawn.PlayerId] = BotMove.AttackMove;
} }
else else
{ {
Debug.Log($"AI playerPawn :: {playerPawn.name} :: {playerPawn.PlayerId} :: normalMove");
botPawnsDictForCurrentPlayer[playerPawn.PlayerId] = BotMove.NormalMove; botPawnsDictForCurrentPlayer[playerPawn.PlayerId] = BotMove.NormalMove;
} }
} }
List<int> playerIds = new List<int>(); List<int> playerIds = new List<int>();
if (savedPlayerId != -1) if (savedPlayerId != -1)
Debug.Log($"SavedPlayerId: {savedPlayerId}, CanSelectPlayer: {playerGameDatasDict[currentPlayerTypeTurn].playerPawnsDict[savedPlayerId].CanSelectPlayer}");
if (savedPlayerId != -1 && playerGameDatasDict[currentPlayerTypeTurn].playerPawnsDict[savedPlayerId].CanSelectPlayer)
{ {
pawn = playerGameDatasDict[currentPlayerTypeTurn].playerPawnsDict[savedPlayerId]; // chances are when one of the character reaches towards the finishing point pawn = playerGameDatasDict[currentPlayerTypeTurn].playerPawnsDict[savedPlayerId]; // chances are when one of the character reaches towards the finishing point
} }
@ -321,25 +370,26 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
savedPlayerId = playerIds[UnityEngine.Random.Range(0, playerIds.Count)]; savedPlayerId = playerIds[UnityEngine.Random.Range(0, playerIds.Count)];
pawn = playerGameDatasDict[currentPlayerTypeTurn].playerPawnsDict[savedPlayerId]; pawn = playerGameDatasDict[currentPlayerTypeTurn].playerPawnsDict[savedPlayerId];
Debug.Log($"Getting savedplayer id"); Debug.Log($"AI playerPawn :: {pawn.name} :: Getting savedplayer id");
} }
else if (botPawnsDictForCurrentPlayer.ContainsValue(BotMove.SafeMove)) else if (botPawnsDictForCurrentPlayer.ContainsValue(BotMove.SafeMove))
{ {
InitPawnBasedOnState(BotMove.SafeMove); InitPawnBasedOnState(BotMove.SafeMove);
Debug.Log($"Getting savedplayer id"); Debug.Log($"AI playerPawn :: {pawn.name} :: Getting savedplayer id");
} }
else if (botPawnsDictForCurrentPlayer.ContainsValue(BotMove.AttackMove)) else if (botPawnsDictForCurrentPlayer.ContainsValue(BotMove.AttackMove))
{ {
InitPawnBasedOnState(BotMove.AttackMove); InitPawnBasedOnState(BotMove.AttackMove);
Debug.Log($"Getting savedplayer id"); Debug.Log($"AI playerPawn :: {pawn.name} :: Getting savedplayer id");
} }
else if (botPawnsDictForCurrentPlayer.ContainsValue(BotMove.NormalMove)) else if (botPawnsDictForCurrentPlayer.ContainsValue(BotMove.NormalMove))
{ {
InitPawnBasedOnState(BotMove.NormalMove); InitPawnBasedOnState(BotMove.NormalMove);
Debug.Log($"Getting savedplayer id"); Debug.Log($"AI playerPawn :: {pawn.name} :: Getting savedplayer id");
} }
} }
Debug.Log($"AI playerPawn :: {pawn.name} :: SelectedPawn: {pawn.name}");
OnPawnSelected(pawn); OnPawnSelected(pawn);
void InitPawnBasedOnState(BotMove botMove) void InitPawnBasedOnState(BotMove botMove)
@ -375,60 +425,76 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
public void OnDiceRolled(int rolledVal) public void OnDiceRolled(int rolledVal)
{ {
CanRollDice = false; SetCanRollDiceForUser(false);
// add core dice logic here // add core dice logic here
Debug.Log($"Tile Index :: LUDO :: rolledVal: {rolledVal} :: {currentPlayerTypeTurn}"); Debug.Log($"Tile Index :: LUDO :: rolledVal: {rolledVal} :: {currentPlayerTypeTurn}");
diceRolledValue = rolledVal; diceRolledValue = rolledVal;
diceText.text = $"{diceRolledValue}"; diceText.text = $"{diceRolledValue}";
availPlayers.Clear();
if (rolledVal == Ludo_3D_Constants.Max_Dice_Rolls) if (rolledVal == Ludo_3D_Constants.Max_Dice_Rolls)
{ {
canSwitchPlayer = false; canSwitchPlayer = false;
// provide option to select a pawn from the list // provide option to select a pawn from the list
// also play a simple animation before selecting // also play a simple animation before selecting
EnablePlayerSelectionStates(true);
CanRollDiceAgain = true; CanRollDiceAgain = true;
diceSixRollCounter++;
if (AreAllPawnsInFinishingPath())
CanRollDice = true;
pointerMeshRend.material = selectMat; pointerMeshRend.material = selectMat;
foreach (var playerPawn in playerGameDatasDict[currentPlayerTypeTurn].playerPawnsDict)
if (playerPawn.Value.GetPlayerState() == PlayerState.InFinishingPath)
playerPawn.Value.SetPlayerSelectionState(false);
Debug.Log($"### AreAllPawnsInFinishingPath");
if (AreAllPawnsInFinishingPath())
{
SetCanRollDiceForUser(true);
return;
}
Debug.Log($"### EnablePlayerSelectionStates");
EnablePlayerSelectionStates(true);
// pointerMeshRend.materials[0] = selectMat; // pointerMeshRend.materials[0] = selectMat;
} }
else // if there are any other pawns that are in safe or moving state else // if there are any other pawns that are in safe or moving state
{ {
// for player's logic // for player's logic
availPlayers.Clear(); InitActivePlayers();
availPlayers = playerGameDatasDict[currentPlayerTypeTurn].playerPawnsDict.Values.Select(pawn => pawn)
.Where(pawn => pawn.GetPlayerState() == PlayerState.InSafeZone ||
pawn.GetPlayerState() == PlayerState.Moving ||
pawn.GetPlayerState() == PlayerState.InFinishingPath).ToList();
Debug.Log($"availPlayers: {playerGameDatasDict[currentPlayerTypeTurn].playerPawnsDict.Values.Select(pawn => pawn).Where(pawn => pawn.GetPlayerState() == PlayerState.InHome).ToList().Count}");
int customAvailPlayers = availPlayers.Count(); int customAvailPlayers = availPlayers.Count();
Debug.Log($"before CustomAvailablePlayers: {customAvailPlayers}"); Debug.Log($"before CustomAvailablePlayers: {customAvailPlayers}");
List<int> indexesToRemove = new List<int>();
foreach (PlayerPawn playerPawn in availPlayers) for (int i = 0; i < availPlayers.Count; i++)
{ {
Debug.Log($"## playerPawn.GetPlayerState(): {playerPawn.GetPlayerState()}"); Debug.Log($"## playerPawn.GetPlayerState(): {availPlayers[i].GetPlayerState()}");
if (playerPawn.GetPlayerState() == PlayerState.InFinishingPath)
if (availPlayers[i].GetPlayerState() == PlayerState.InFinishingPath)
{ {
if (diceRolledValue <= tilesManager.GetFinishingTileDataLength(currentPlayerTypeTurn) - (playerPawn.CurrentTileIndex + 1)) Debug.Log($"diceRolledValue: {diceRolledValue}, FinishingDataLen: {tilesManager.GetFinishingTileDataLength(currentPlayerTypeTurn)}, playerPawn.CurrentTileIndex: {availPlayers[i].CurrentTileIndex}");
if (diceRolledValue <= tilesManager.GetFinishingTileDataLength(currentPlayerTypeTurn) - (availPlayers[i].CurrentTileIndex + 1))
{ {
playerPawn.SetPlayerSelectionState(true); availPlayers[i].SetPlayerSelectionState(true);
} }
else else
{ {
indexesToRemove.Add(i);
availPlayers[i].SetPlayerSelectionState(false);
customAvailPlayers--; customAvailPlayers--;
} }
continue; continue;
} }
playerPawn.SetPlayerSelectionState(true); availPlayers[i].SetPlayerSelectionState(true);
} }
foreach (int i in indexesToRemove) availPlayers.RemoveAt(i);
// if (availPlayers.Count() < 1) // if (availPlayers.Count() < 1)
Debug.Log($"CustomAvailablePlayers: {customAvailPlayers}"); Debug.Log($"CustomAvailablePlayers: {customAvailPlayers}");
canSwitchPlayer = customAvailPlayers < 1; canSwitchPlayer = customAvailPlayers < 1;
@ -438,12 +504,22 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
Debug.Log($"CanRollDiceAgain: {CanRollDiceAgain}, canSwitchPlayer: {canSwitchPlayer}"); Debug.Log($"CanRollDiceAgain: {CanRollDiceAgain}, canSwitchPlayer: {canSwitchPlayer}");
} }
private void InitActivePlayers()
{
availPlayers = playerGameDatasDict[currentPlayerTypeTurn].playerPawnsDict.Values.Select(pawn => pawn)
.Where(pawn => pawn.GetPlayerState() == PlayerState.InSafeZone ||
pawn.GetPlayerState() == PlayerState.Moving ||
pawn.GetPlayerState() == PlayerState.InFinishingPath).ToList();
}
private bool AreAllPawnsInFinishingPath() private bool AreAllPawnsInFinishingPath()
{ {
bool areAllPawnsInFinishingPath = false; bool areAllPawnsInFinishingPath = false;
foreach (var pawn in playerGameDatasDict[currentPlayerTypeTurn].playerPawnsDict) foreach (var pawn in playerGameDatasDict[currentPlayerTypeTurn].playerPawnsDict)
{ {
if (pawn.Value.GetPlayerState() == PlayerState.InFinishingPath && pawn.Value.GetPlayerState() != PlayerState.HasFinished) if (pawn.Value.GetPlayerState() == PlayerState.HasFinished) continue;
if (pawn.Value.GetPlayerState() == PlayerState.InFinishingPath)
{ {
areAllPawnsInFinishingPath = true; areAllPawnsInFinishingPath = true;
continue; continue;
@ -463,6 +539,12 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
playerPawn.SetPlayerState(playerState); playerPawn.SetPlayerState(playerState);
} }
private void CheckDiceRollForBot(PlayerPawn playerPawn)
{
if (CanRollDiceAgain)
RollDiceForBot();
}
public void OnPawnSelected(PlayerPawn playerPawn) public void OnPawnSelected(PlayerPawn playerPawn)
{ {
EnablePlayerSelectionStates(false); EnablePlayerSelectionStates(false);
@ -478,21 +560,30 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
GetAndInitPositionInsideSafeZone(playerPawn, targetTile), GetAndInitPositionInsideSafeZone(playerPawn, targetTile),
onComplete: () => onComplete: () =>
{ {
CanRollDice = true; playerGameDatasDict[playerGameData.playerType].totalPawnsInHome--;
UpdatePlayerState(playerPawn, PlayerState.InSafeZone); UpdatePlayerState(playerPawn, PlayerState.InSafeZone);
if (CheckForMaxDiceRollAttempt())
{
return;
}
if (playerPawn.IsBotPlayer)
CheckDiceRollForBot(playerPawn);
else
SetCanRollDiceForUser(true);
}, playerGameData.startIndex); }, playerGameData.startIndex);
return; return;
} }
else if (playerPawn.GetPlayerState() == PlayerState.InFinishingPath else if (playerPawn.GetPlayerState() == PlayerState.InFinishingPath)
|| playerPawn.CurrentTileIndex == playerGameDatasDict[currentPlayerTypeTurn].endIndex)
{ {
int finishingPathIndex = GetNextFinishingTileIndex(playerPawn); ApplyFinishingPathLogic(playerPawn);
int targetIdx = finishingPathIndex + diceRolledValue > tilesManager.GetFinishingTileDataLength(currentPlayerTypeTurn) - 1 ? }
tilesManager.GetFinishingTileDataLength(currentPlayerTypeTurn) - 1 : finishingPathIndex + diceRolledValue; else if (playerPawn.CurrentTileIndex == playerGameDatasDict[currentPlayerTypeTurn].endIndex)
{
Debug.Log($"TargetIdx: {targetIdx}"); tilesManager.RetrieveTileBasedOnIndex(playerPawn.CurrentTileIndex).ResetPlayerPawn(playerPawn);
MoveThroughFinishingPath(playerPawn, finishingPathIndex, targetIdx); ApplyFinishingPathLogic(playerPawn);
} }
else if (playerPawn.GetPlayerState() == PlayerState.InSafeZone || playerPawn.GetPlayerState() == PlayerState.Moving) else if (playerPawn.GetPlayerState() == PlayerState.InSafeZone || playerPawn.GetPlayerState() == PlayerState.Moving)
{ {
@ -502,7 +593,7 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
int targetIdx = playerPawn.CurrentTileIndex + diceRolledValue; int targetIdx = playerPawn.CurrentTileIndex + diceRolledValue;
if (nextTileIdx == 0) if (nextTileIdx == 0)
targetIdx = targetIdx - playerPawn.CurrentTileIndex; targetIdx = (targetIdx - playerPawn.CurrentTileIndex) - 1;
Tile currentSittingTile = tilesManager.RetrieveTileBasedOnIndex(playerPawn.CurrentTileIndex); Tile currentSittingTile = tilesManager.RetrieveTileBasedOnIndex(playerPawn.CurrentTileIndex);
if (currentSittingTile.IsSafeZone) if (currentSittingTile.IsSafeZone)
@ -521,14 +612,25 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
} }
else else
{ {
currentSittingTile.ResetPlayerPawn(); currentSittingTile.ResetPlayerPawn(playerPawn);
} }
MoveThroughTiles(playerPawn, nextTileIdx, targetIndex: targetIdx); MoveThroughTiles(playerPawn, nextTileIdx, targetIndex: targetIdx);
} }
} }
private int GetNextGeneralTileIndex(PlayerPawn playerPawn) private void ApplyFinishingPathLogic(PlayerPawn playerPawn)
{
int finishingPathIndex = GetNextFinishingTileIndex(playerPawn);
int targetIdx = finishingPathIndex + diceRolledValue > tilesManager.GetFinishingTileDataLength(currentPlayerTypeTurn) - 1 ?
tilesManager.GetFinishingTileDataLength(currentPlayerTypeTurn) - 1 : finishingPathIndex + diceRolledValue;
Debug.Log($"TargetIdx: {targetIdx}, finishingPathIndex: {finishingPathIndex}");
MoveThroughFinishingPath(playerPawn, finishingPathIndex, targetIdx);
}
public int GetNextGeneralTileIndex(PlayerPawn playerPawn)
{ {
return playerPawn.CurrentTileIndex == tilesManager.GetGeneralTilesLength() - 1 ? 0 : playerPawn.CurrentTileIndex + 1; return playerPawn.CurrentTileIndex == tilesManager.GetGeneralTilesLength() - 1 ? 0 : playerPawn.CurrentTileIndex + 1;
} }
@ -564,9 +666,11 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
currentPlayerTypeTurn = allPlayerTypes[currentPlayerTurnIndex]; currentPlayerTypeTurn = allPlayerTypes[currentPlayerTurnIndex];
} }
diceSixRollCounter = 0;
diceText.text = $"{0}"; diceText.text = $"{0}";
} }
SetCanRollDiceForUser(!botTypesInGame.Contains(currentPlayerTypeTurn));
Debug.Log($"CurrentPlayerTurn: {currentPlayerTypeTurn}"); Debug.Log($"CurrentPlayerTurn: {currentPlayerTypeTurn}");
var tempPos = playerBaseHandler.GetPlayerBase(currentPlayerTypeTurn).transform.position; var tempPos = playerBaseHandler.GetPlayerBase(currentPlayerTypeTurn).transform.position;
pointerDebug.position = new Vector3(tempPos.x, 3f, tempPos.z); pointerDebug.position = new Vector3(tempPos.x, 3f, tempPos.z);
@ -635,24 +739,61 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
Debug.Log($"nextTile.IsSafeZone: {nextTile.IsSafeZone}"); Debug.Log($"nextTile.IsSafeZone: {nextTile.IsSafeZone}");
if (!nextTile.IsSafeZone) if (!nextTile.IsSafeZone)
{ {
Debug.Log($"nextTile.PlayerPawn: {nextTile.PlayerPawn}, {nextTile.transform.name}"); Debug.Log($"nextTile.HasPawnsAvailable: {nextTile.HasPawnsAvailable}");
if (nextTile.PlayerPawn != null) if (nextTile.HasPawnsAvailable && playerPawn.PlayerType != nextTile.CurrentHoldingPlayerType)
{ {
Debug.Log($"nextTile.PlayerPawn: {nextTile.CurrentHoldingPlayerType}, {nextTile.transform.name}");
Debug.Log($"nextTile.TotalPawnsInTile: {nextTile.TotalPawnsInTile}");
// play animation for moving back to base. // play animation for moving back to base.
// TODO :: Send existing pawn back to base. // TODO :: Send existing pawn back to base.
// means there's already a pawn there, move him back to the base. // means there's already a pawn there, move him back to the base.
var playerBasePos = playerBaseHandler.GetPlayerBase(nextTile.PlayerPawn.PlayerType) int counter = nextTile.TotalPawnsInTile;
.GetBasePlacementDataPosition(nextTile.PlayerPawn.PlayerId - 1).position; for (int i = counter; i > 0; i--)
Debug.Log($"playerBasePos: {playerBasePos}"); {
var pawn = nextTile.GetPlayerPawn();
Debug.Log($"pawn: {pawn}");
Debug.Log($"playerBase: {playerBaseHandler}");
var playerBasePos = playerBaseHandler.GetPlayerBase(pawn.PlayerType)
.GetBasePlacementDataPosition(pawn.PlayerId - 1);
Debug.Log($"playerBasePos: {playerBasePos}");
nextTile.PlayerPawn.MoveBackToHome(playerBasePos); playerGameDatasDict[pawn.PlayerType].totalPawnsInHome++;
pawn.MoveBackToHome(playerBasePos);
}
if (CheckForMaxDiceRollAttempt())
{
nextTile.InitPlayerPawn(playerPawn, currentPlayerTypeTurn);
return;
}
CanRollDiceAgain = true;
if (playerPawn.IsBotPlayer)
CheckDiceRollForBot(playerPawn);
else
SetCanRollDiceForUser(true);
} }
nextTile.InitPlayerPawn(playerPawn, currentPlayerTypeTurn); nextTile.InitPlayerPawn(playerPawn, currentPlayerTypeTurn);
if (CheckForMaxDiceRollAttempt())
{
return;
}
}
else
{
if (CheckForMaxDiceRollAttempt())
{
return;
}
} }
SwitchPlayer(playerPawn); SwitchPlayer(playerPawn);
CanRollDice = true; if (!CanRollDiceAgain)
{
SetCanRollDiceForUser(true);
}
} }
}, },
index); index);
@ -737,34 +878,52 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
} }
else else
{ {
Debug.Log($"CurrentTileIndex: {playerPawn.CurrentTileIndex} == lastIndex: {tilesManager.GetFinishingTileDataLength(currentPlayerTypeTurn) - 1}");
if (playerPawn.CurrentTileIndex == tilesManager.GetFinishingTileDataLength(currentPlayerTypeTurn) - 1) if (playerPawn.CurrentTileIndex == tilesManager.GetFinishingTileDataLength(currentPlayerTypeTurn) - 1)
{ {
UpdatePlayerState(playerPawn, PlayerState.HasFinished); UpdatePlayerState(playerPawn, PlayerState.HasFinished);
playerGameDatasDict[currentPlayerTypeTurn].totalPawnsFinished++; playerGameDatasDict[currentPlayerTypeTurn].totalPawnsFinished++;
Debug.Log($"totalPawnsFinished: {playerGameDatasDict[currentPlayerTypeTurn].totalPawnsFinished}, playerPawnsDict.Count: {playerGameDatasDict[currentPlayerTypeTurn].playerPawnsDict.Count}");
if (playerGameDatasDict[currentPlayerTypeTurn].totalPawnsFinished == playerGameDatasDict[currentPlayerTypeTurn].playerPawnsDict.Count) if (playerGameDatasDict[currentPlayerTypeTurn].totalPawnsFinished == playerGameDatasDict[currentPlayerTypeTurn].playerPawnsDict.Count)
{ {
CanRollDiceAgain = false; CanRollDiceAgain = false;
SwitchPlayer();
if (allPlayerTypes.Contains(currentPlayerTypeTurn)) if (allPlayerTypes.Contains(currentPlayerTypeTurn))
allPlayerTypes.Remove(currentPlayerTypeTurn); allPlayerTypes.Remove(currentPlayerTypeTurn);
SwitchPlayer();
Debug.Log($"PlayerTypes: {allPlayerTypes.Count}"); Debug.Log($"PlayerTypes: {allPlayerTypes.Count}");
} }
else else
{ {
CanRollDiceAgain = true; CanRollDiceAgain = true;
if (playerPawn.IsBotPlayer)
CheckDiceRollForBot(playerPawn);
} }
} }
else else
{ {
if (CheckForMaxDiceRollAttempt())
{
SetCanRollDiceForUser(true);
return;
}
SwitchPlayer(); SwitchPlayer();
} }
CanRollDice = true; SetCanRollDiceForUser(true);
} }
}, },
index); index);
} }
private void SetCanRollDiceForUser(bool state)
{
// if (botTypesInGame.Contains(playerType)) return;
CanRollDice = state;
}
} }

View File

@ -39,6 +39,7 @@ public class PlayerBase : MonoBehaviour
public Transform GetBasePlacementDataPosition(int idx) public Transform GetBasePlacementDataPosition(int idx)
{ {
Debug.Log($"Index: {idx}, basePlacementDatas[idx]: {basePlacementDatas[idx]}");
return basePlacementDatas[idx].placementTransform; return basePlacementDatas[idx].placementTransform;
} }
} }

View File

@ -20,8 +20,13 @@ public enum PawnType
public class PlayerPawn : MonoBehaviour public class PlayerPawn : MonoBehaviour
{ {
[SerializeField] private PlayerState playerState; [SerializeField] private PlayerState playerState;
[SerializeField] private Animator animator;
public bool CanSelectPlayer
{
get; private set;
}
private bool canSelectPlayerFromHome;
private GameplayManager gameplayManager; private GameplayManager gameplayManager;
public int CurrentTileIndex public int CurrentTileIndex
@ -56,8 +61,8 @@ public class PlayerPawn : MonoBehaviour
public void SetPlayerSelectionState(bool state) public void SetPlayerSelectionState(bool state)
{ {
canSelectPlayerFromHome = state; CanSelectPlayer = state;
if (canSelectPlayerFromHome) if (CanSelectPlayer)
{ {
// TODO :: Play animation for selecting any of the players // TODO :: Play animation for selecting any of the players
} }
@ -67,19 +72,40 @@ public class PlayerPawn : MonoBehaviour
{ {
StepsTaken++; StepsTaken++;
CurrentTileIndex = tileIndex; CurrentTileIndex = tileIndex;
transform.DOMove(startingPoint, 0.5f).onComplete = () => onComplete?.Invoke(); animator?.SetTrigger("Jump");
// SFX
SoundManager soundManager = InterfaceManager.Instance?.GetInterfaceInstance<SoundManager>();
soundManager?.PlayGameSoundClip(SoundType.Jump);
transform.DOMove(startingPoint, 0.6f).onComplete = () =>
{
animator?.ResetTrigger("Jump");
// Rotate Player
TilesManager tilesManager = InterfaceManager.Instance.GetInterfaceInstance<TilesManager>();
gameplayManager = gameplayManager ?? InterfaceManager.Instance.GetInterfaceInstance<GameplayManager>();
int nextTileIndex = gameplayManager.GetNextGeneralTileIndex(this);
Vector3 lookDirection = tilesManager.RetrieveTileBasedOnIndex(nextTileIndex).transform.position - transform.position;
lookDirection.y = 0;
transform.DOLookAt(transform.position + lookDirection, 0.2f);
onComplete?.Invoke();
};
} }
public void MoveToCustomTilePosition(Vector3 targetPoint) public void MoveToCustomTilePosition(Vector3 targetPoint)
{ {
StepsTaken++; StepsTaken++;
transform.DOMove(targetPoint, 0.5f); transform.DOMove(targetPoint, 1f);
} }
// when he is defeated // when he is defeated
public void MoveBackToHome(Vector3 pos) public void MoveBackToHome(Transform transformData)
{ {
transform.position = pos; transform.position = transformData.position;
transform.rotation = transformData.rotation;
SetPlayerState(PlayerState.InHome); SetPlayerState(PlayerState.InHome);
StepsTaken = 0; StepsTaken = 0;
} }
@ -93,7 +119,7 @@ public class PlayerPawn : MonoBehaviour
private void OnMouseDown() private void OnMouseDown()
{ {
if (IsBotPlayer || !canSelectPlayerFromHome) return; if (IsBotPlayer || !CanSelectPlayer) return;
SetGameplayManager(); SetGameplayManager();
gameplayManager.OnPawnSelected(this); gameplayManager.OnPawnSelected(this);

View File

@ -27,7 +27,10 @@ public class DiceRoller : MonoBehaviour
private void OnDiceRolled() private void OnDiceRolled()
{ {
int currentRolledVal = //Random.Range(1, Ludo_3D_Constants.Max_Dice_Rolls + 1); SoundManager soundManager = InterfaceManager.Instance?.GetInterfaceInstance<SoundManager>();
soundManager?.PlayGameSoundClip(SoundType.Dice);
int currentRolledVal = // Random.Range(1, Ludo_3D_Constants.Max_Dice_Rolls + 1);
diceTestValue != 0 ? diceTestValue : Random.Range(1, Ludo_3D_Constants.Max_Dice_Rolls + 1); diceTestValue != 0 ? diceTestValue : Random.Range(1, Ludo_3D_Constants.Max_Dice_Rolls + 1);
inputManager.SetDiceRollValue(currentRolledVal); inputManager.SetDiceRollValue(currentRolledVal);
} }

View File

@ -24,11 +24,13 @@ public class InputManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
public void Initialize() public void Initialize()
{ {
Debug.Log($"Initialize");
InterfaceManager.Instance?.RegisterInterface<InputManager>(this); InterfaceManager.Instance?.RegisterInterface<InputManager>(this);
} }
public void InitializeData() public void InitializeData()
{ {
Debug.Log($"InitializeData");
GameplayManager = InterfaceManager.Instance?.GetInterfaceInstance<GameplayManager>(); GameplayManager = InterfaceManager.Instance?.GetInterfaceInstance<GameplayManager>();
} }

View File

@ -9,6 +9,7 @@ public abstract class BootLoader : MonoBehaviour
protected virtual void Start() protected virtual void Start()
{ {
InterfaceManager.InitInstance(); InterfaceManager.InitInstance();
InitBootLoaders(); InitBootLoaders();

View File

@ -19,9 +19,9 @@ public class GameBootLoader : BootLoader
} }
} }
} }
protected override void InitializeData() protected override void InitializeData()
{ {
Debug.Log($"InitializeData: for loaders");
InitializeScriptablesData(); InitializeScriptablesData();
IDataLoader dataLoader = null; IDataLoader dataLoader = null;
@ -29,6 +29,7 @@ public class GameBootLoader : BootLoader
{ {
if (GetLoader<IDataLoader>(loader.transform, out dataLoader)) if (GetLoader<IDataLoader>(loader.transform, out dataLoader))
{ {
Debug.Log($"InitializeData: {loader.transform.name}");
dataLoader.InitializeData(); dataLoader.InitializeData();
} }
} }

View File

@ -34,17 +34,17 @@ public class SafeTile : Tile
playerPawns = new Dictionary<int, PlayerPawn>() playerPawns = new Dictionary<int, PlayerPawn>()
}); });
Debug.Log($"tileName: {name}, playerPawn.PlayerId: {playerPawn.PlayerId}"); Debug.Log($"targetSafeTile. tileName: {name}, playerPawn.PlayerId: {playerPawn.PlayerId}");
playerTypesDict[playerType].playerPawns.Add(playerPawn.PlayerId, playerPawn); playerTypesDict[playerType].playerPawns.Add(playerPawn.PlayerId, playerPawn);
playerTypesDict[playerType].commonPlacementTransform = placementQueue.Dequeue(); playerTypesDict[playerType].commonPlacementTransform = placementQueue.Dequeue();
Debug.Log($"targetSafeTile. Adding player {playerType} {playerTypesDict[playerType].playerCount} tileName: {name}"); Debug.Log($"targetSafeTile. tileName: {name} Adding player {playerType} {playerTypesDict[playerType].playerCount} tileName: {name}");
} }
else else
{ {
Debug.Log($"tileName: {name}, playerPawn.PlayerId: {playerPawn.PlayerId}"); Debug.Log($"tileName: {name}, playerPawn.PlayerId: {playerPawn.PlayerId}");
playerTypesDict[playerType].playerCount++; playerTypesDict[playerType].playerCount++;
Debug.Log($"targetSafeTile. Adding player {playerType} {playerTypesDict[playerType].playerCount}, tileName: {name}"); Debug.Log($"targetSafeTile. tileName: {name} Adding player {playerType} {playerTypesDict[playerType].playerCount}, tileName: {name}");
playerTypesDict[playerType].playerPawns.Add(playerPawn.PlayerId, playerPawn); playerTypesDict[playerType].playerPawns.Add(playerPawn.PlayerId, playerPawn);
} }
} }
@ -55,16 +55,16 @@ public class SafeTile : Tile
{ {
if (playerTypesDict[playerType].playerCount > 0) if (playerTypesDict[playerType].playerCount > 0)
{ {
Debug.Log($"targetSafeTile. Removing player {playerType} {playerTypesDict[playerType].playerCount}, tileName: {name}"); Debug.Log($"targetSafeTile. tileName: {name} Removing player {playerType} {playerTypesDict[playerType].playerCount}, tileName: {name}");
playerTypesDict[playerType].playerCount--; playerTypesDict[playerType].playerCount--;
Debug.Log($"targetSafeTile. Removing player {playerType} after: {playerTypesDict[playerType].playerCount}"); Debug.Log($"targetSafeTile. tileName: {name} Removing player {playerType} after: {playerTypesDict[playerType].playerCount}");
playerTypesDict[playerType].playerPawns.Remove(playerPawn.PlayerId); playerTypesDict[playerType].playerPawns.Remove(playerPawn.PlayerId);
if (playerTypesDict[playerType].playerCount == 0) if (playerTypesDict[playerType].playerCount == 0)
{ {
placementQueue.Enqueue(playerTypesDict[playerType].commonPlacementTransform); placementQueue.Enqueue(playerTypesDict[playerType].commonPlacementTransform);
playerTypesDict.Remove(playerType); playerTypesDict.Remove(playerType);
Debug.Log($"targetSafeTile. Removing player {playerType}"); Debug.Log($"targetSafeTile. tileName: {name} Removing player {playerType}");
lastOccupiedIndex--; lastOccupiedIndex--;
} }
} }

View File

@ -27,18 +27,30 @@ public class Tile : MonoBehaviour
protected int lastOccupiedIndex = 0; protected int lastOccupiedIndex = 0;
public PlayerPawn PlayerPawn // Change implementation private List<PlayerPawn> PlayerPawns = new List<PlayerPawn>(); // Change implementation
public bool HasPawnsAvailable => PlayerPawns.Count > 0;
public PlayerType CurrentHoldingPlayerType => PlayerPawns[0].PlayerType;
public int TotalPawnsInTile => PlayerPawns.Count;
public PlayerPawn GetPlayerPawn()
{ {
get; private set; var pawn = PlayerPawns[0];
PlayerPawns.RemoveAt(0);
return pawn;
} }
public virtual void InitPlayerPawn(PlayerPawn playerPawn, PlayerType playerType) public virtual void InitPlayerPawn(PlayerPawn playerPawn, PlayerType playerType)
{ {
PlayerPawn = playerPawn; PlayerPawns.Add(playerPawn);
Debug.Log($"Adding new PlayerPawn {playerPawn.name}, playerType: {playerType} to {name}");
Debug.Log($"Adding new PlayerPawn {PlayerPawns.Count} {name}");
} }
public void ResetPlayerPawn() public void ResetPlayerPawn(PlayerPawn movingPawn)
{ {
PlayerPawn = null; PlayerPawns.Remove(movingPawn);
Debug.Log($"Resetting new PlayerPawn {movingPawn.name} {name}");
Debug.Log($"Resetting new PlayerPawn {PlayerPawns.Count} {name}");
} }
} }