Skip to content

Commit

Permalink
Fix Game Boards
Browse files Browse the repository at this point in the history
  • Loading branch information
davidmfinol committed Feb 3, 2024
1 parent 7da2e79 commit 766e0b9
Show file tree
Hide file tree
Showing 12 changed files with 349 additions and 47 deletions.
124 changes: 124 additions & 0 deletions Assets/Prefabs/CardGameView/Multiplayer/Board.prefab

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions Assets/Prefabs/CardGameView/Multiplayer/Board.prefab.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions Assets/Scenes/PlayGame.unity

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

123 changes: 123 additions & 0 deletions Assets/Scripts/Cgs/CardGameView/Multiplayer/Board.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */

using System.IO;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using UnityExtensionMethods;

namespace Cgs.CardGameView.Multiplayer
{
public class Board : CgsNetPlayable
{
public string GameBoardId
{
get => IsOnline ? _idNetworkVariable.Value : _gameBoardId;
set
{
_gameBoardId = value;
if (IsOnline)
_idNetworkVariable.Value = value;
}
}

private string _gameBoardId = string.Empty;
private readonly NetworkVariable<CgsNetString> _idNetworkVariable = new();

public Vector2 Size
{
get => IsOnline ? _sizeNetworkVariable.Value : _size;
set
{
_size = value;
if (IsOnline)
_sizeNetworkVariable.Value = value;
}
}

private Vector2 _size;
private readonly NetworkVariable<Vector2> _sizeNetworkVariable = new();

protected override void OnStartPlayable()
{
var rectTransform = (RectTransform) transform;

rectTransform.localScale = Vector3.one;

rectTransform.anchorMin = Vector2.zero;
rectTransform.anchorMax = Vector2.zero;
rectTransform.offsetMin =
new Vector2(Position.x, Position.y) * CardGameManager.PixelsPerInch;
rectTransform.offsetMax =
new Vector2(Size.x, Size.y) * CardGameManager.PixelsPerInch +
rectTransform.offsetMin;

var boardFilepath = CardGameManager.Current.GameBoardsDirectoryPath + "/" + GameBoardId + "." +
CardGameManager.Current.GameBoardImageFileType;
var boardImageSprite = File.Exists(boardFilepath)
? UnityFileMethods.CreateSprite(boardFilepath)
: null;
Debug.Log($"boardImage: {GameBoardId} {boardImageSprite != null}");
if (boardImageSprite != null)
{
var image = gameObject.GetOrAddComponent<Image>();
image.sprite = boardImageSprite;
}

rectTransform.localScale = Vector3.one;
}

protected override void OnPointerEnterPlayable(PointerEventData eventData)
{
// Disable preview
}

protected override void OnPointerExitPlayable(PointerEventData eventData)
{
// Disable preview
}

protected override void OnPointerUpSelectPlayable(PointerEventData eventData)
{
// Disable select
}

protected override void OnSelectPlayable(BaseEventData eventData)
{
// Disable select
}

protected override void OnDeselectPlayable(BaseEventData eventData)
{
// Disable select
}

protected override void OnBeginDragPlayable(PointerEventData eventData)
{
// Disable drag
}

protected override void OnDragPlayable(PointerEventData eventData)
{
// Disable drag
}

protected override void OnEndDragPlayable(PointerEventData eventData)
{
// Disable drag
}

protected override void PostDragPlayable(PointerEventData eventData)
{
// Disable drag
}

protected override void ActOnDrag()
{
// Disable drag
}
}
}
11 changes: 11 additions & 0 deletions Assets/Scripts/Cgs/CardGameView/Multiplayer/Board.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 6 additions & 2 deletions Assets/Scripts/Cgs/CardGameView/Multiplayer/CgsNetPlayable.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,12 @@ public class CgsNetPlayable : NetworkBehaviour, IPointerEnterHandler, IPointerEx

private NetworkObject _networkObject;

protected virtual bool IsProcessingSecondaryDragAction => PointerDragOffsets.Count > 1 || CurrentPointerEventData is
{button: PointerEventData.InputButton.Middle or PointerEventData.InputButton.Right};
protected virtual bool IsProcessingSecondaryDragAction => PointerDragOffsets.Count > 1 ||
CurrentPointerEventData is
{
button: PointerEventData.InputButton.Middle
or PointerEventData.InputButton.Right
};

public Vector2 Position
{
Expand Down
16 changes: 16 additions & 0 deletions Assets/Scripts/Cgs/Play/Multiplayer/CgsNetPlayer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,22 @@ private void UpdatePointsServerRpc(int points)

#endregion

#region Boards

public void RequestNewBoard(string gameBoardId, Vector2 size, Vector2 position)
{
CreateBoardServerRpc(gameBoardId, size, position);
}

[ServerRpc]
// ReSharper disable once MemberCanBeMadeStatic.Local
private void CreateBoardServerRpc(string gameBoardId, Vector2 size, Vector2 position)
{
PlayController.Instance.CreateBoard(gameBoardId, size, position);
}

#endregion

#region CardStacks

public void RequestNewDeck(string deckName, IEnumerable<UnityCard> cards, bool isFaceup)
Expand Down

0 comments on commit 766e0b9

Please sign in to comment.