Roulette/Assets/Scripts/BettingSpaceCombiner.cs
2023-03-07 01:42:04 +05:30

173 lines
5.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class BettingSpaceCombiner : MonoBehaviour
{
public CombinerType combinerType;
public List<int> combinedNumbers;
public bool isInverted = false;
EventTrigger eventTrigger;
void Start(){
eventTrigger = GetComponent<EventTrigger>();
EventTrigger.Entry OnEnter = new EventTrigger.Entry();
OnEnter.eventID = EventTriggerType.PointerEnter;
OnEnter.callback.AddListener(onEnter);
EventTrigger.Entry OnExit = new EventTrigger.Entry();
OnExit.eventID = EventTriggerType.PointerExit;
OnExit.callback.AddListener(onExit);
EventTrigger.Entry OnClick = new EventTrigger.Entry();
OnClick.eventID = EventTriggerType.PointerClick;
OnClick.callback.AddListener(onClick);
eventTrigger.triggers.Add(OnEnter);
eventTrigger.triggers.Add(OnExit);
eventTrigger.triggers.Add(OnClick);
}
void onEnter(BaseEventData e){
if(RouletteManager.spinning){return;}
RouletteManager.HighlightBettingSpace(combinedNumbers);
// Debug.Log("Comb : " + combinedNumbers.ToString());
}
void onExit(BaseEventData e){
if(RouletteManager.spinning){return;}
RouletteManager.ClearHighlightedBettingSpaces();
}
void onClick(BaseEventData e){
if(RouletteManager.spinning){return;}
PointerEventData ped = (PointerEventData) e as PointerEventData;
if(ped.button == PointerEventData.InputButton.Left){
if(RouletteManager.MoneyAvailable < RouletteManager.SelectedChip){return;}
GameObject newChip = Instantiate(RouletteManager.SelectedChipItem.gameObject,isInverted? transform.parent.parent :transform);
int chipsOnBoard = Mathf.Clamp(transform.childCount,0,5)-2;
newChip.GetComponent<RectTransform>().position = GetComponent<RectTransform>().position + new Vector3(0,(chipsOnBoard*3));
newChip.GetComponent<RectTransform>().sizeDelta = new Vector2(50,50);
RouletteManager.AddBet(RouletteManager.SelectedChip, combinerType, combinedNumbers, newChip);
}else{
RouletteManager.ClearBets(combinedNumbers);
}
}
void OnValidate(){
string[] args = name.Split("_");
if(args[0] == "Split"){
combinerType = CombinerType.Split;
}else if(args[0]== "Street"){
combinerType = CombinerType.Street;
}else if(args[0] == "Corner"){
combinerType = CombinerType.Corner;
}else if(args[0] == "Five"){
combinerType = CombinerType.Five;
}else if(args[0] == "Line"){
combinerType = CombinerType.Corner;
}else if(args[0] == "Dozen"){
combinerType = CombinerType.Dozen;
combinedNumbers = new List<int>();
int offset = 1;
if(args[1] == "2"){
offset+=12;
}else if(args[1] == "3"){
offset += 24;
}
for(int i=0; i < 12; i++){
combinedNumbers.Add(i+ offset);
}
return;
}else if(args[0] == "Row"){
combinerType = CombinerType.Row;
combinedNumbers = new List<int>();
int mult = 0;
if(args[1] == "2"){
mult=1;
}else if(args[1] == "3"){
mult=2;
}
for(int i=0; i < 36; i+=3){
combinedNumbers.Add((i+1) + mult);
}
return;
}else if(args[0] == "18"){
combinerType = CombinerType.Eighteen;
combinedNumbers = new List<int>();
int offset = 1;
if(args[1] == "2"){
offset += 18;
}
for(int i=0; i < 18; i++){
combinedNumbers.Add((i+1) + offset);
}
return;
}else if(args[0] == "Odd"){
combinerType = CombinerType.Odd;
combinedNumbers = new List<int>();
for(int i=0; i < 36; i++){
if(i%2!=0){combinedNumbers.Add((i+1));}
}
return;
}else if(args[0] == "Even"){
combinerType = CombinerType.Even;
combinedNumbers = new List<int>();
for(int i=0; i < 36; i++){
if(i%2==0){combinedNumbers.Add((i+1));}
}
return;
}else if(args[0] == "Red"){
combinerType = CombinerType.Red;
combinedNumbers = new List<int>();
for(int i=0; i < 36; i++){
if(RouletteManager.Reds.Contains((i+1))){combinedNumbers.Add((i+1));}
}
return;
}else if(args[0] == "Black"){
combinerType = CombinerType.Black;
combinedNumbers = new List<int>();
for(int i=0; i < 36; i++){
if(!RouletteManager.Reds.Contains((i+1))){combinedNumbers.Add((i+1));}
}
return;
}{
return;
}
combinedNumbers = new List<int>();
for(int i=1; i < args.Length; i++){
combinedNumbers.Add(int.Parse(args[i]));
}
// GetComponent<Image>().color = new Color(1,1,1,0);
}
}
public enum CombinerType{
Split,
Street,
Corner,
Line,
Five,
Dozen,
Row,
Eighteen,
Red,
Black,
Odd,
Even,
Single
}