Example #1
0
 public StartDeckCardDrawingSystem(Contexts contexts, DeckSetting setting) : base(contexts)
 {
     _gameContext  = contexts.game;
     _cardContext  = contexts.card;
     _setting      = setting;
     _eventContext = contexts.gameEvent;
 }
Example #2
0
        public Task CardPlayed(CardPlayedDto data)
        {
            var ctx = new GameEventContext(data.GameId, data.RoundIndex);
            var e   = new CardPlayed(ctx, new PlayerIndex(data.PlayerIndex), _deck[data.CardIndex]);

            _gameEventCallback(e);
            return(Task.CompletedTask);
        }
Example #3
0
        public Task TrickWon(TrickWonDto data)
        {
            var ctx = new GameEventContext(data.GameId, data.RoundIndex);
            var e   = new TrickWon(ctx, new PlayerIndex(data.PlayerIndex));

            _gameEventCallback(e);
            return(Task.CompletedTask);
        }
Example #4
0
 private HandReceivedDto GetHandReceivedData(GameEventContext ctx, HandReceived hand)
 {
     if (hand.Player == _playerIndex)
     {
         var knownHand = hand.Hand as KnownHand;
         return(HandReceivedDto.ForKnownHand(ctx.GameId, ctx.RoundIndex, hand.Player, knownHand.Select(GetIndex).ToList()));
     }
     return(HandReceivedDto.ForSecretHand(ctx.GameId, ctx.RoundIndex, hand.Player, hand.Hand.NumberOfCards));
 }
Example #5
0
        public void TrickStateHasValueSemantics()
        {
            var gameCtx = new GameEventContext("game", 12);

            var ts1 = TrickState.Initial.Next(new CardPlayed(gameCtx, new PlayerIndex(3), new Card(Suit.Diamonds, Rank.Queen)));
            var ts2 = TrickState.Initial.Next(new CardPlayed(gameCtx, new PlayerIndex(3), new Card(Suit.Diamonds, Rank.Queen)));

            Assert.Equal(ts1, ts2);
        }
Example #6
0
        public Task GuessGiven(GuessGivenDto data)
        {
            var ctx = new GameEventContext(data.GameId, data.RoundIndex);
            var e   = new GuessGiven(ctx, new PlayerIndex(data.PlayerIndex), data.Count);

            System.Console.WriteLine(e);
            _gameEventCallback(e);
            return(Task.CompletedTask);
        }
 public BossActiveSkillUsingSystem(Contexts contexts, TurnNotification noti, SystemController syscon)
     : base(contexts)
 {
     _cardContext = contexts.card;
     _unitContext = contexts.unit;
     _eventContext = contexts.gameEvent;
     _noti = noti;
     _syscon = syscon;
 }
Example #8
0
 void Awake()
 {
     m_rectTransform = GetComponent <RectTransform>();
     m_nRadius       = m_controllerRect.rect.width / 2 - 20;
     m_nSqrRadius    = m_nRadius * m_nRadius;
     m_nPower        = 100;
     m_bMousePressed = false;
     m_EvtCtx        = new GameEventContext();
 }
        public void TrickWonIsMappedAndBack()
        {
            var ctx      = new GameEventContext("g", 12);
            var trickWon = new TrickWon(ctx, new PlayerIndex(1));

            var persistable = GameEventSerializer.Convert(trickWon);
            var recreated   = GameEventSerializer.Convert(persistable) as TrickWon;

            Assert.Equal(1, recreated.Player.Value);
        }
        public void GuessGivenIsMappedAndBack()
        {
            var ctx        = new GameEventContext("g", 12);
            var guessGiven = new GuessGiven(ctx, new PlayerIndex(1), 23);

            var persistable = GameEventSerializer.Convert(guessGiven);
            var recreated   = GameEventSerializer.Convert(persistable) as GuessGiven;

            Assert.Equal(1, recreated.Player.Value);
            Assert.Equal(23, recreated.Count);
        }
        public void HandReceivedIsMappedAndBack()
        {
            var ctx = new GameEventContext("g", 12);
            var handReceivedEvent = new HandReceived(ctx, new PlayerIndex(4), new KnownHand(new[] { new Card(Suit.Club, Rank.Four), new Card(Suit.Hearts, Rank.Ace) }));

            var persistable = GameEventSerializer.Convert(handReceivedEvent);
            var recreated   = GameEventSerializer.Convert(persistable) as HandReceived;

            Assert.Equal(4, recreated.Player.Value);
            Assert.Equal(handReceivedEvent.Hand, recreated.Hand);
        }
        public void CardPlayedIsMappedAndBack()
        {
            var ctx        = new GameEventContext("g", 12);
            var aCard      = new Card(Suit.Diamonds, Rank.King);
            var cardPlayed = new CardPlayed(ctx, new PlayerIndex(2), aCard);

            var persistable = GameEventSerializer.Convert(cardPlayed);
            var recreated   = GameEventSerializer.Convert(persistable) as CardPlayed;

            Assert.Equal(2, recreated.Player.Value);
            Assert.Equal(aCard, recreated.Card);
        }
Example #13
0
 public GameEventHub(EumelGameRoomDefinition definition, GameProgress progress)
 {
     _gameEventContext = new(definition.Name, -1);
     _numPlayers       = definition.Players.Count;
     _plan             = definition.Plan;
     // TODO: join event types. Make GameSeriesStarted contents static data of the room
     _events = new EventCollection <GameEvent>();
     if (progress.LastRoundEvents.Any())
     {
         ForwardTo(progress);
     }
 }
Example #14
0
        public Task HandReceived(HandReceivedDto data)
        {
            System.Console.WriteLine(data);
            var hand = data.CardIndices == null ?
                       (IHand) new UnknownHand(data.NumberOfCards) :
                       new KnownHand(data.CardIndices.Select(i => _deck[i]));
            var ctx = new GameEventContext(data.GameId, data.RoundIndex);
            var e   = new HandReceived(ctx, new PlayerIndex(data.PlayerIndex), hand);

            System.Console.WriteLine(e);
            _gameEventCallback(e);
            return(Task.CompletedTask);
        }
Example #15
0
 public void MoveToNextRound()
 {
     if (!HasMoreRounds)
     {
         throw new InvalidOperationException("No more rounds");
     }
     _gameEventContext = _gameEventContext with {
         RoundIndex = _gameEventContext.RoundIndex + 1
     };
     CurrentRoundSettings = _plan.Rounds[_gameEventContext.RoundIndex];
     State = GameState.Initial(_numPlayers, CurrentRoundSettings);
     _events.Clear();
 }
Example #16
0
    public Contexts()
    {
        game      = new GameContext();
        gameEvent = new GameEventContext();
        input     = new InputContext();

        var postConstructors = System.Linq.Enumerable.Where(
            GetType().GetMethods(),
            method => System.Attribute.IsDefined(method, typeof(Entitas.CodeGeneration.Attributes.PostConstructorAttribute))
            );

        foreach (var postConstructor in postConstructors)
        {
            postConstructor.Invoke(this, null);
        }
    }
Example #17
0
 public void RemoveEventReceiver(GameEventType evt, GameEventContext context, GameEventHandler handler)
 {
     if (eventReceivers == null)
     {
         eventReceivers = new Dictionary <GameEventType, HashSet <GameEventContext> >();
     }
     if (!eventReceivers.ContainsKey(evt))
     {
         return;
     }
     if (handler != null)
     {
         context.UnBind(evt, handler);
     }
     eventReceivers[evt].Remove(context);
 }
Example #18
0
        public static GameEvent Convert(PersistedEvent persisted)
        {
            var context = new GameEventContext(persisted.GameUuid, persisted.RoundIndex);

            return(persisted.Type switch
            {
                PersistedEventType.HandReceived =>
                RecreateHandReceived(context, JsonSerializer.Deserialize <HandReceivedPayload>(persisted.Payload)),
                PersistedEventType.GuessGiven =>
                RecreateGuessGiven(context, JsonSerializer.Deserialize <GuessPayload>(persisted.Payload)),
                PersistedEventType.CardPlayed =>
                RecreateCardPlayed(context, JsonSerializer.Deserialize <CardPlayedPayload>(persisted.Payload)),
                PersistedEventType.TrickWon =>
                RecreateTrickWon(context, JsonSerializer.Deserialize <TrickWonPayload>(persisted.Payload)),
                _ => throw new NotImplementedException()
            });
Example #19
0
 public void AddEventReceiver(GameEventType evt, GameEventContext context, GameEventHandler handler)
 {
     if (handler == null)
     {
         return;
     }
     if (eventReceivers == null)
     {
         eventReceivers = new Dictionary <GameEventType, HashSet <GameEventContext> >();
     }
     if (eventReceivers.ContainsKey(evt) == false || eventReceivers[evt] == null)
     {
         HashSet <GameEventContext> set = new HashSet <GameEventContext>();
         eventReceivers.Add(evt, set);
     }
     context.Bind(evt, handler);
     eventReceivers[evt].Add(context);
 }
Example #20
0
        public void GameState_DispatchingWithUnknownHands_Succeeds()
        {
            var gameCtx   = new GameEventContext("game", 12);
            var gamestate = GameState.Initial(3, new EumelRoundSettings(0, 1));

            gamestate = gamestate.Dispatch(new HandReceived(gameCtx, new PlayerIndex(0), new UnknownHand(1)));
            gamestate = gamestate.Dispatch(new HandReceived(gameCtx, new PlayerIndex(1), new UnknownHand(1)));
            gamestate = gamestate.Dispatch(new HandReceived(gameCtx, new PlayerIndex(2), new UnknownHand(1)));

            gamestate = gamestate.Dispatch(new GuessGiven(gameCtx, new PlayerIndex(0), 0));
            gamestate = gamestate.Dispatch(new GuessGiven(gameCtx, new PlayerIndex(1), 0));
            gamestate = gamestate.Dispatch(new GuessGiven(gameCtx, new PlayerIndex(2), 0));

            gamestate = gamestate.Dispatch(new CardPlayed(gameCtx, new PlayerIndex(0), new Card(Suit.Hearts, Rank.Ace)));
            System.Console.WriteLine(gamestate);
            Assert.Equal(0, gamestate.Players[0].Hand.NumberOfCards);
            Assert.Equal(1, gamestate.Players[1].Hand.NumberOfCards);
            Assert.True(gamestate.Turn.IsPlay);
            Assert.False(gamestate.Turn.IsRoundOver);
            Assert.Equal(new PlayerIndex(1), gamestate.Turn.PlayerIndex);
        }
Example #21
0
 public RoundLimitGameEndSystem(Contexts contexts) : base(contexts)
 {
     _eventContext = contexts.gameEvent;
 }
Example #22
0
 public GameBaseState()
 {
     m_estateType = EGAME_STATE_TYPE.EGAME_STATE_BASE;
     m_evtCtx     = new GameEventContext();
 }
Example #23
0
 public CameraMode()
 {
     m_type   = ECameraModeType.DefaultCamera;
     m_EvtCtx = new GameEventContext();
 }
Example #24
0
 void Awake()
 {
     m_EvtCtx = new GameEventContext();
 }
Example #25
0
 public StartTurnDrawSystem(Contexts contexts, DeckSetting setting) : base(contexts.game)
 {
     _cardContext  = contexts.card;
     _setting      = setting;
     _eventContext = contexts.gameEvent;
 }
Example #26
0
 public IGameSystem()
 {
     mEvtCtx = new GameEventContext();
 }
Example #27
0
 public AllPlayerDeadGameEnd(Contexts contexts) : base(contexts)
 {
     _eventContext = contexts.gameEvent;
     _gameContext  = contexts.game;
 }
Example #28
0
 void Awake()
 {
     instance = this;
     evtCtx   = new GameEventContext();
 }
 public MissionDeadOrAliveFailSystem(Contexts contexts, WeatherResloveDisplayer weatherDisplay) : base(contexts)
 {
     _eventContext = contexts.gameEvent;
     _display      = weatherDisplay;
 }
Example #30
0
 public EventReactiveSystem(Contexts contexts) : base(contexts.gameEvent)
 {
     _context = contexts.gameEvent;
 }