Заготовка роутера конца игры
This commit is contained in:
parent
ffa123e8c1
commit
67f9167523
@ -35,6 +35,7 @@ Transform:
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 1661318112489111391}
|
||||
- {fileID: 1649651658890651227}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!96 &2785177574404548980
|
||||
@ -308,6 +309,100 @@ MonoBehaviour:
|
||||
acceleration: 200
|
||||
maxFallingRotationSpeed: 500
|
||||
spriteRenderer: {fileID: 5157516706225878083}
|
||||
mask: {fileID: 4898561958825486297}
|
||||
winDots: {fileID: 1649651658890651227}
|
||||
winAnimationDuration: 1
|
||||
--- !u!1 &5381885663262334684
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1649651658890651227}
|
||||
- component: {fileID: 4851732468212733041}
|
||||
m_Layer: 0
|
||||
m_Name: WinDots
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1649651658890651227
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5381885663262334684}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: -1.885, y: -1.411, z: 0}
|
||||
m_LocalScale: {x: 0.1, y: 0.1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 2308229979791902274}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!212 &4851732468212733041
|
||||
SpriteRenderer:
|
||||
serializedVersion: 2
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5381885663262334684}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 0
|
||||
m_ReceiveShadows: 0
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 0
|
||||
m_RayTraceProcedural: 0
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_ForceMeshLod: -1
|
||||
m_MeshLodSelectionBias: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 0
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_GlobalIlluminationMeshLod: 0
|
||||
m_SortingLayerID: -5330059
|
||||
m_SortingLayer: 2
|
||||
m_SortingOrder: 1
|
||||
m_MaskInteraction: 1
|
||||
m_Sprite: {fileID: 21300000, guid: 8a5c9e10e873e84469d2775643ee2963, type: 3}
|
||||
m_Color: {r: 0.906171, g: 0.72264147, b: 1, a: 0.39215687}
|
||||
m_FlipX: 0
|
||||
m_FlipY: 0
|
||||
m_DrawMode: 0
|
||||
m_Size: {x: 1, y: 1}
|
||||
m_AdaptiveModeThreshold: 0.5
|
||||
m_SpriteTileMode: 0
|
||||
m_WasSpriteAssigned: 1
|
||||
m_SpriteSortPoint: 0
|
||||
--- !u!1 &7100645357252458328
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -318,8 +413,9 @@ GameObject:
|
||||
m_Component:
|
||||
- component: {fileID: 1661318112489111391}
|
||||
- component: {fileID: 5157516706225878083}
|
||||
- component: {fileID: 4898561958825486297}
|
||||
m_Layer: 0
|
||||
m_Name: image
|
||||
m_Name: image/mask
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
@ -389,13 +485,72 @@ SpriteRenderer:
|
||||
m_SortingLayer: 2
|
||||
m_SortingOrder: 0
|
||||
m_MaskInteraction: 0
|
||||
m_Sprite: {fileID: 21300000, guid: 8d6432ff047c62946a41e3235f28ba57, type: 3}
|
||||
m_Sprite: {fileID: 21300000, guid: 024833a84adf142449000086760fe890, type: 3}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_FlipX: 0
|
||||
m_FlipY: 0
|
||||
m_DrawMode: 0
|
||||
m_Size: {x: 1.6384, y: 1.6384}
|
||||
m_Size: {x: 1.2641976, y: 1.2641976}
|
||||
m_AdaptiveModeThreshold: 0.5
|
||||
m_SpriteTileMode: 0
|
||||
m_WasSpriteAssigned: 0
|
||||
m_WasSpriteAssigned: 1
|
||||
m_SpriteSortPoint: 0
|
||||
--- !u!331 &4898561958825486297
|
||||
SpriteMask:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7100645357252458328}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 0
|
||||
m_RayTraceProcedural: 0
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_ForceMeshLod: -1
|
||||
m_MeshLodSelectionBias: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: 15d0c3709176029428a0da2f8cecf0b5, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_GlobalIlluminationMeshLod: 0
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_MaskInteraction: 0
|
||||
m_Sprite: {fileID: 21300000, guid: 024833a84adf142449000086760fe890, type: 3}
|
||||
m_MaskAlphaCutoff: 0.2
|
||||
m_FrontSortingLayerID: 0
|
||||
m_BackSortingLayerID: 0
|
||||
m_FrontSortingLayer: 0
|
||||
m_BackSortingLayer: 0
|
||||
m_FrontSortingOrder: 0
|
||||
m_BackSortingOrder: 0
|
||||
m_IsCustomRangeActive: 0
|
||||
m_SpriteSortPoint: 0
|
||||
m_MaskSource: 0
|
||||
|
||||
@ -4287,6 +4287,50 @@ CanvasRenderer:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 233260561}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!1 &240039282
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 240039284}
|
||||
- component: {fileID: 240039283}
|
||||
m_Layer: 0
|
||||
m_Name: EndgameHandler
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!114 &240039283
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 240039282}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f7668d2cc6a5cfd4db6e4fb4d83dd1a3, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::EndGameHandler
|
||||
--- !u!4 &240039284
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 240039282}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: -2.95738, y: -3.20088, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &245771467
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -4630,6 +4674,7 @@ MonoBehaviour:
|
||||
CharactersConfigurator: {fileID: 141381088}
|
||||
menuGameplayTransit: {fileID: 29868612}
|
||||
turnManager: {fileID: 1329752846}
|
||||
endGameHandler: {fileID: 240039283}
|
||||
setPasswordPanel: {fileID: 131572818}
|
||||
vitrinaPanel: {fileID: 61619038}
|
||||
qrPanel: {fileID: 1060301113}
|
||||
@ -4642,7 +4687,7 @@ Transform:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 259182278}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 20, y: 6, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
@ -38771,16 +38816,17 @@ SceneRoots:
|
||||
m_ObjectHideFlags: 0
|
||||
m_Roots:
|
||||
- {fileID: 1396811479}
|
||||
- {fileID: 259182280}
|
||||
- {fileID: 1948752564}
|
||||
- {fileID: 519420032}
|
||||
- {fileID: 29868613}
|
||||
- {fileID: 240039284}
|
||||
- {fileID: 1122363135}
|
||||
- {fileID: 1081324697}
|
||||
- {fileID: 1967587903}
|
||||
- {fileID: 411367487}
|
||||
- {fileID: 1768372452}
|
||||
- {fileID: 1259803112}
|
||||
- {fileID: 259182280}
|
||||
- {fileID: 1542626845}
|
||||
- {fileID: 1851050357}
|
||||
- {fileID: 1165555974}
|
||||
|
||||
@ -65,6 +65,7 @@ public class GameManager : MonoBehaviour
|
||||
[SerializeField] private MenuGameplayTransit menuGameplayTransit;
|
||||
|
||||
[SerializeField] TurnManager turnManager;
|
||||
public EndGameHandler endGameHandler;
|
||||
|
||||
//public PvpPointer pvpPointer;
|
||||
//public MovesAndTimeCounter movesAndTimeCounter;
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
using UnityEngine;
|
||||
using DG.Tweening;
|
||||
using UnityEngine;
|
||||
|
||||
public class Chip : MonoBehaviour
|
||||
{
|
||||
@ -7,14 +8,26 @@ public class Chip : MonoBehaviour
|
||||
[SerializeField] float maxFallingRotationSpeed = 500;
|
||||
|
||||
[SerializeField] private SpriteRenderer spriteRenderer;
|
||||
[SerializeField] private SpriteMask mask;
|
||||
|
||||
[Header("Победная анимация")]
|
||||
[SerializeField] private Transform winDots;
|
||||
[SerializeField] private float winAnimationDuration = 1;
|
||||
|
||||
private float chipVelocity = 0;
|
||||
private float rotationSpeed = 0;
|
||||
|
||||
private float winDotsPosition = 1.5f;
|
||||
private Tween winTween;
|
||||
|
||||
public void Configure(Sprite sprite, Team team)
|
||||
{
|
||||
spriteRenderer.sprite = sprite;
|
||||
mask.sprite = sprite;
|
||||
this.team = team;
|
||||
|
||||
mask.enabled = false;
|
||||
winDots.gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
public virtual void RemoveFromField()
|
||||
@ -49,4 +62,28 @@ public class Chip : MonoBehaviour
|
||||
public void SetRandomRotationSpeed() => rotationSpeed = Random.Range(-maxFallingRotationSpeed, maxFallingRotationSpeed);
|
||||
|
||||
public void Rotate() => transform.Rotate(Vector3.forward * rotationSpeed * Time.deltaTime);
|
||||
|
||||
public void WinAnimation()
|
||||
{
|
||||
if(winTween != null)
|
||||
{
|
||||
winTween.Kill();
|
||||
winTween = null;
|
||||
|
||||
}
|
||||
|
||||
mask.enabled = true;
|
||||
winDots.gameObject.SetActive(true);
|
||||
|
||||
Vector2 startPosition = new Vector2(winDotsPosition, winDotsPosition);
|
||||
winDots.localPosition = startPosition;
|
||||
winTween = winDots.DOLocalMove(-startPosition, winAnimationDuration).SetEase(Ease.Linear);
|
||||
|
||||
winTween.onComplete = () =>
|
||||
{
|
||||
mask.enabled = false;
|
||||
winDots.gameObject.SetActive(false);
|
||||
};
|
||||
winTween.PlayForward();
|
||||
}
|
||||
}
|
||||
38
Assets/Scripts/Gameplay/EndGameHandler.cs
Normal file
38
Assets/Scripts/Gameplay/EndGameHandler.cs
Normal file
@ -0,0 +1,38 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class EndGameHandler : MonoBehaviour
|
||||
{
|
||||
public void HandleEndGame(Team lastPlayer, GameMode gameMode, CheckResult lastResult)
|
||||
{
|
||||
print("Конец игры");
|
||||
|
||||
|
||||
if (lastResult.Draw)
|
||||
DrawHandler();
|
||||
else
|
||||
WinHandler(winner: lastPlayer,
|
||||
gameMode: gameMode,
|
||||
winChipsCoords: lastResult.WinningIndexes);
|
||||
|
||||
}
|
||||
|
||||
private void DrawHandler()
|
||||
{
|
||||
print("Это ничья");
|
||||
}
|
||||
|
||||
private void WinHandler(Team winner, GameMode gameMode, HashSet<(int row, int col)> winChipsCoords)
|
||||
{
|
||||
Debug.Log($"Победа {winner}; Режим {gameMode}");
|
||||
PlayWinChipsAnimation(winChipsCoords);
|
||||
}
|
||||
|
||||
private void PlayWinChipsAnimation(HashSet<(int row, int col)> winChipsCoords)
|
||||
{
|
||||
Chip[,] grid = Board.Instance.Grid;
|
||||
|
||||
foreach (var winCoord in winChipsCoords)
|
||||
grid[winCoord.col, winCoord.row].WinAnimation();
|
||||
}
|
||||
}
|
||||
2
Assets/Scripts/Gameplay/EndGameHandler.cs.meta
Normal file
2
Assets/Scripts/Gameplay/EndGameHandler.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f7668d2cc6a5cfd4db6e4fb4d83dd1a3
|
||||
@ -1,9 +1,8 @@
|
||||
using Cysharp.Threading.Tasks.Triggers;
|
||||
using System;
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
public class TurnManager : MonoBehaviour
|
||||
{
|
||||
{//todo: добавить отслеживание по таймеру
|
||||
[Header("Players")]
|
||||
[SerializeField] private Player player1;
|
||||
[SerializeField] private Player player2;
|
||||
@ -92,13 +91,11 @@ public class TurnManager : MonoBehaviour
|
||||
{
|
||||
isGameOver = true;
|
||||
currentPlayer.Sleep();
|
||||
|
||||
ControlsPerformer.Instance.SetControlable(null);
|
||||
|
||||
BasePlayer lastPlayer = (BasePlayer)currentPlayer;
|
||||
Team lastPlayerTeam = ((BasePlayer)currentPlayer).team;
|
||||
var result = FieldChecker.lastResult;
|
||||
|
||||
|
||||
|
||||
Debug.Log($"end: {result.End}; draw: {result.Draw}; lastPlayer: {lastPlayer.team}");
|
||||
GameManager.instance.endGameHandler.HandleEndGame(lastPlayerTeam, gameMode, result);
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user