You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

132 lines
4.2 KiB

using System.Collections;
using System.IO;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class Card : MonoBehaviour {//, IPointerEnterHandler, IPointerExitHandler{
public GameObject cardCanvas;
private GameObject cardPreview;
public static bool preparingCard = false;
public static GameObject cardBeingPrepared;
public bool preparedCard = false;
public static Vector3 preparingOffset = new Vector3(0f,40f);
private GameObject actionMenu;
private static GameObject thrownCards;
private static float yOffsetTable = 0.51f/2;
private MainMenuController mmc;
private Quaternion currentRotation;
public string inPileName;
public bool isInCommonPile;
public int idx;
public string uuid;
void Start() {
currentRotation = Quaternion.identity;
mmc = GameLoader.mmc;
cardPreview = GameObject.FindGameObjectsWithTag("CardPreview")[0];
thrownCards = GameObject.Find("ThrownCards");
actionMenu = transform.Find("ActionMenu").gameObject;
actionMenu.SetActive(false);
GetComponent<Button>().onClick.AddListener(OnClickCard);
}
// Card Previewing Code
// public void OnPointerEnter(PointerEventData edata) {
// if(cardPreview && !cardBeingPrepared) {
// SetPreview();
// }
// }
//public void OnPointerExit(PointerEventData edata) {
// if(cardPreview && !cardBeingPrepared) {
// HidePreview();
// }
// }
public void OnClickCard() {
if ((!preparingCard || cardBeingPrepared != gameObject) && !IsThrown()) {
cardBeingPrepared = gameObject;
//SetPreview();
preparingCard = true;
} else {
var conn = Client.GetConnection();
if (conn != null) {
CardProperties card = GameLoader.GetCard(uuid);
PileProperties pile = GameLoader.GetPile(card.pileName);
conn.OnClickCard(pile.name, pile.owner == "", card.idx, mmc.currentUsername);
}
}
}
public void Update() {
if(cardBeingPrepared == gameObject && !IsThrown()) {
if (!preparedCard) {
transform.position += preparingOffset;
preparedCard = true;
}
} else {
if (preparedCard) {
transform.position -= preparingOffset;
preparedCard = false;
}
}
actionMenu.SetActive(preparedCard);
}
private void SetPreview() {
cardPreview.GetComponentsInChildren<RawImage>()[0].enabled = true;
cardPreview.GetComponentsInChildren<RawImage>()[0].texture = gameObject.GetComponentsInChildren<RawImage>()[0].texture;
}
private void HidePreview() {
cardPreview.GetComponentsInChildren<RawImage>()[0].enabled = false;
}
//public void ThrowCard() {
// GameObject pos = GameLoader.GetPile(GameLoader.GetCard(uuid).pileName).gameObject;
// var canvas = Instantiate(cardCanvas, pos.transform.position+new Vector3(0, yOffsetTable + pos.transform.childCount * 0.0075f, 0), transform.rotation);
// canvas.GetComponent<Canvas>().worldCamera = Camera.main;
// var newCard = Instantiate(gameObject, Vector3.zero, Quaternion.identity, canvas.transform);
// newCard.transform.localScale = Vector3.one;
// newCard.GetComponent<Card>().thrown = true;
// newCard.GetComponent<Card>().inPileName = inPileName;
// newCard.GetComponent<Card>().idx = pos.transform.childCount-1;
// newCard.GetComponent<Card>().isInCommonPile = true;
// canvas.transform.SetParent(pos.transform);
// canvas.tag = "ThrownCard";
// canvas.transform.localScale = new Vector3(0.01f, 0.01f);
// if (!thrown) {
// canvas.transform.Rotate(new Vector3(90f, 0f, 0f));
// canvas.transform.Rotate(new Vector3(0f, 0f, Random.Range(-20, 20)));
// }else {
// canvas.transform.rotation = currentRotation;
// }
// newCard.GetComponent<Card>().currentRotation = canvas.transform.rotation;
// Destroy(gameObject);
//}
public bool IsThrown() {
CardProperties card = GameLoader.GetCard(uuid);
PileProperties pile = GameLoader.GetPile(card.pileName);
return pile.owner == "";
}
public void DoContextualAction() {
if (preparedCard) {
var conn = Client.GetConnection();
if (conn != null) {
CardProperties card = GameLoader.GetCard(uuid);
PileProperties pile = GameLoader.GetPile(card.pileName);
conn.OnClickCard(pile.name, pile.owner == "", card.idx, mmc.currentUsername);
}
}
}
public void CancelContextualAction() {
if (preparedCard) {
cardBeingPrepared = null;
}
}
}