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.
176 lines
5.1 KiB
176 lines
5.1 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using TheGameExtreme.model;
|
|
using TheGameExtreme.model.@event;
|
|
using TheGameExtreme.model.manager;
|
|
using Xamarin.Forms;
|
|
|
|
namespace TheGameExtreme.viewmodel
|
|
{
|
|
public class Main : INotifyPropertyChanged
|
|
{
|
|
private List<Player> players;
|
|
private GameManager gameManager;
|
|
private int currentIndexPlayer;
|
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
private string stack0;
|
|
public String Stack0
|
|
{
|
|
get { return stack0; }
|
|
set
|
|
{
|
|
stack0 = value;
|
|
OnPropertyChanged("Stack0");
|
|
}
|
|
}
|
|
public string stack1;
|
|
public String Stack1
|
|
{
|
|
get { return stack1; }
|
|
set
|
|
{
|
|
stack1 = value;
|
|
OnPropertyChanged("Stack1");
|
|
}
|
|
}
|
|
public string stack2;
|
|
public String Stack2
|
|
{
|
|
get { return stack2; }
|
|
set
|
|
{
|
|
stack2 = value;
|
|
OnPropertyChanged("Stack2");
|
|
}
|
|
}
|
|
public string stack3;
|
|
public String Stack3
|
|
{
|
|
get { return stack3; }
|
|
set
|
|
{
|
|
stack3 = value;
|
|
OnPropertyChanged("Stack3");
|
|
}
|
|
}
|
|
private int valueCard1;
|
|
public int ValueCard1
|
|
{
|
|
get { return valueCard1; }
|
|
set
|
|
{
|
|
valueCard1 = value;
|
|
OnPropertyChanged("ValueCard1");
|
|
}
|
|
}
|
|
private void OnPropertyChanged(string v)
|
|
{
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(v));
|
|
}
|
|
|
|
|
|
public Main()
|
|
{
|
|
stack0 = "1";
|
|
stack1 = "1";
|
|
stack2 = "100";
|
|
stack3 = "100";
|
|
|
|
players = new List<Player> { new Player("Clément"), new Player("Baptiste") };
|
|
|
|
gameManager = new SoloGameManager(2, players);
|
|
|
|
gameManager.TopRangeChanged += OnTopRangeChanged;
|
|
players.ForEach(player =>
|
|
{
|
|
player.HandCardChanged += OnHandCardChanged;
|
|
});
|
|
gameManager.CurrentPlayerChanged += OnCurrentPlayerChanged;
|
|
|
|
valueCard1 = players[currentIndexPlayer].getCardList()[0].Value;
|
|
}
|
|
|
|
public void OnTopRangeChanged(object source, TopRangeChangedEventArgs args)
|
|
{
|
|
switch (args.NumStackChanged)
|
|
{
|
|
case 0:
|
|
stack0 = args.NewTopRangeCard.Value.ToString();
|
|
break;
|
|
case 1:
|
|
Stack1 = args.NewTopRangeCard.Value.ToString();
|
|
break;
|
|
case 2:
|
|
Stack2 = args.NewTopRangeCard.Value.ToString();
|
|
break;
|
|
case 3:
|
|
Stack3 = args.NewTopRangeCard.Value.ToString();
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void OnHandCardChanged(object source, HandCardChangedEventArgs args) // Double les appels car les joueurs sont les mêmes dans le model et ici
|
|
{
|
|
players[currentIndexPlayer].getCardList().ForEach(card =>
|
|
{
|
|
|
|
});
|
|
valueCard1 = players[currentIndexPlayer].getCardList()[0].Value;
|
|
}
|
|
|
|
private void OnCurrentPlayerChanged(object source, CurrentPlayerChangedEventArgs args)
|
|
{
|
|
currentIndexPlayer = args.NewCurrentPlayer;
|
|
}
|
|
|
|
public void played(string text)
|
|
{
|
|
if (players[currentIndexPlayer].getCardList().Count != 0)
|
|
{
|
|
int r = new Random().Next(0, 3);
|
|
playOneCard(text, r);
|
|
}
|
|
else
|
|
{
|
|
// Throw Exception
|
|
}
|
|
}
|
|
|
|
private void playOneCard(string text, int r)
|
|
{
|
|
switch (text)
|
|
{
|
|
case "card1":
|
|
gameManager.joue(players[currentIndexPlayer].getCardList()[0], r);
|
|
break;
|
|
case "card2":
|
|
gameManager.joue(players[currentIndexPlayer].getCardList()[1], r);
|
|
break;
|
|
case "card3":
|
|
gameManager.joue(players[currentIndexPlayer].getCardList()[2], r);
|
|
break;
|
|
case "card4":
|
|
gameManager.joue(players[currentIndexPlayer].getCardList()[3], r);
|
|
break;
|
|
case "card5":
|
|
gameManager.joue(players[currentIndexPlayer].getCardList()[4], r);
|
|
break;
|
|
case "card6":
|
|
gameManager.joue(players[currentIndexPlayer].getCardList()[5], r);
|
|
break;
|
|
case "card7":
|
|
gameManager.joue(players[currentIndexPlayer].getCardList()[6], r);
|
|
break;
|
|
}
|
|
}
|
|
|
|
public void endTurn()
|
|
{
|
|
gameManager.endTurn();
|
|
}
|
|
|
|
}
|
|
}
|