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

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();
}
}
}