本文整理汇总了C#中IHsGameState.GetTurnNumber方法的典型用法代码示例。如果您正苦于以下问题:C# IHsGameState.GetTurnNumber方法的具体用法?C# IHsGameState.GetTurnNumber怎么用?C# IHsGameState.GetTurnNumber使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IHsGameState
的用法示例。
在下文中一共展示了IHsGameState.GetTurnNumber方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TurnChange
private void TurnChange(IHsGameState gameState, IGame game)
{
if(!gameState.SetupDone || game.PlayerEntity == null)
return;
var activePlayer = game.PlayerEntity.HasTag(CURRENT_PLAYER) ? ActivePlayer.Player : ActivePlayer.Opponent;
gameState.GameHandler.TurnStart(activePlayer, gameState.GetTurnNumber());
if(activePlayer == ActivePlayer.Player)
gameState.PlayerUsedHeroPower = false;
else
gameState.OpponentUsedHeroPower = false;
}
示例2: NumTurnsInPlayChange
private void NumTurnsInPlayChange(IHsGameState gameState, int id, IGame game, int value)
{
if(value <= 0)
return;
Entity entity;
if(!game.Entities.TryGetValue(id, out entity))
return;
gameState.GameHandler.HandleTurnsInPlayChange(entity, gameState.GetTurnNumber());
}
示例3: Handle
//.........这里部分代码省略.........
}
}
game.Entities.Add(id, new Entity(id) { CardId = cardId });
}
gameState.CurrentEntityId = id;
gameState.CurrentEntityHasCardId = !string.IsNullOrEmpty(cardId);
}
else if (HsLogReaderConstants.UpdatingEntityRegex.IsMatch(logLine))
{
var match = HsLogReaderConstants.UpdatingEntityRegex.Match(logLine);
var cardId = match.Groups["cardId"].Value;
var rawEntity = match.Groups["entity"].Value;
int entityId;
if (rawEntity.StartsWith("[") && HsLogReaderConstants.EntityRegex.IsMatch(rawEntity))
{
var entity = HsLogReaderConstants.EntityRegex.Match(rawEntity);
entityId = int.Parse(entity.Groups["id"].Value);
}
else if (!int.TryParse(rawEntity, out entityId))
entityId = -1;
if (entityId != -1)
{
gameState.CurrentEntityId = entityId;
if (!game.Entities.ContainsKey(entityId))
game.Entities.Add(entityId, new Entity(entityId));
game.Entities[entityId].CardId = cardId;
}
if(gameState.JoustReveals > 0)
{
Entity currentEntity;
if(game.Entities.TryGetValue(entityId, out currentEntity))
{
if(currentEntity.IsControlledBy(game.Opponent.Id))
gameState.GameHandler.HandleOpponentJoust(currentEntity, cardId, gameState.GetTurnNumber());
else if(currentEntity.IsControlledBy(game.Player.Id))
gameState.GameHandler.HandlePlayerJoust(currentEntity, cardId, gameState.GetTurnNumber());
}
//gameState.JoustReveals--;
}
}
else if (HsLogReaderConstants.CreationTagRegex.IsMatch(logLine) && !logLine.Contains("HIDE_ENTITY"))
{
var match = HsLogReaderConstants.CreationTagRegex.Match(logLine);
_tagChangeHandler.TagChange(gameState, match.Groups["tag"].Value, gameState.CurrentEntityId, match.Groups["value"].Value, game);
}
else if ((logLine.Contains("Begin Spectating") || logLine.Contains("Start Spectator")) && game.IsInMenu)
gameState.GameHandler.SetGameMode(GameMode.Spectator);
else if (logLine.Contains("End Spectator"))
{
gameState.GameHandler.SetGameMode(GameMode.Spectator);
gameState.GameHandler.HandleGameEnd();
}
else if (HsLogReaderConstants.ActionStartRegex.IsMatch(logLine))
{
var playerEntity =
game.Entities.FirstOrDefault(
e => e.Value.HasTag(GAME_TAG.PLAYER_ID) && e.Value.GetTag(GAME_TAG.PLAYER_ID) == game.Player.Id);
var opponentEntity =
game.Entities.FirstOrDefault(
e => e.Value.HasTag(GAME_TAG.PLAYER_ID) && e.Value.GetTag(GAME_TAG.PLAYER_ID) == game.Opponent.Id);
var match = HsLogReaderConstants.ActionStartRegex.Match(logLine);
var actionStartingCardId = match.Groups["cardId"].Value.Trim();
var actionStartingEntityId = int.Parse(match.Groups["id"].Value);
if (string.IsNullOrEmpty(actionStartingCardId))
示例4: TagChange
public void TagChange(IHsGameState gameState, string rawTag, int id, string rawValue, IGame game, bool isRecursive = false)
{
if (gameState.LastId != id)
{
game.SecondToLastUsedId = gameState.LastId;
if (gameState.ProposedKeyPoint != null)
{
ReplayMaker.Generate(gameState.ProposedKeyPoint.Type, gameState.ProposedKeyPoint.Id, gameState.ProposedKeyPoint.Player, game);
gameState.ProposedKeyPoint = null;
}
}
gameState.LastId = id;
if (!game.Entities.ContainsKey(id))
game.Entities.Add(id, new Entity(id));
GAME_TAG tag;
if (!Enum.TryParse(rawTag, out tag))
{
int tmp;
if (int.TryParse(rawTag, out tmp) && Enum.IsDefined(typeof(GAME_TAG), tmp))
tag = (GAME_TAG)tmp;
}
var value = HsLogReaderV2.ParseTagValue(tag, rawValue);
var prevZone = game.Entities[id].GetTag(GAME_TAG.ZONE);
game.Entities[id].SetTag(tag, value);
if (tag == GAME_TAG.CONTROLLER && gameState.WaitForController != null && game.PlayerId == -1)
{
var p1 = game.Entities.FirstOrDefault(e => e.Value.GetTag(GAME_TAG.PLAYER_ID) == 1).Value;
var p2 = game.Entities.FirstOrDefault(e => e.Value.GetTag(GAME_TAG.PLAYER_ID) == 2).Value;
if (gameState.CurrentEntityHasCardId)
{
if (p1 != null)
p1.IsPlayer = value == 1;
if (p2 != null)
p2.IsPlayer = value != 1;
game.PlayerId = value;
game.OpponentId = value == 1 ? 2 : 1;
}
else
{
if (p1 != null)
p1.IsPlayer = value != 1;
if (p2 != null)
p2.IsPlayer = value == 1;
game.PlayerId = value == 1 ? 2 : 1;
game.OpponentId = value;
}
}
var controller = game.Entities[id].GetTag(GAME_TAG.CONTROLLER);
var player = game.Entities[id].HasTag(GAME_TAG.CONTROLLER) ? (controller == game.PlayerId ? "FRIENDLY" : "OPPOSING") : "";
var cardId = game.Entities[id].CardId;
if (tag == GAME_TAG.ZONE)
{
//Logger.WriteLine("--------" + player + " " + game.Entities[id].CardId + " " + (TAG_ZONE)prevZone + " -> " +
// (TAG_ZONE)value);
if (((TAG_ZONE)value == TAG_ZONE.HAND || ((TAG_ZONE)value == TAG_ZONE.PLAY) && game.IsMulliganDone) && gameState.WaitForController == null)
{
if (!game.IsMulliganDone)
prevZone = (int)TAG_ZONE.DECK;
if (controller == 0)
{
game.Entities[id].SetTag(GAME_TAG.ZONE, prevZone);
gameState.WaitForController = new { Tag = rawTag, Id = id, Value = rawValue };
//Logger.WriteLine("CURRENTLY NO CONTROLLER SET FOR CARD, WAITING...");
return;
}
}
switch ((TAG_ZONE)prevZone)
{
case TAG_ZONE.DECK:
switch ((TAG_ZONE)value)
{
case TAG_ZONE.HAND:
if (controller == game.PlayerId)
{
gameState.GameHandler.HandlePlayerDraw(cardId, gameState.GetTurnNumber());
gameState.ProposeKeyPoint(KeyPointType.Draw, id, ActivePlayer.Player);
}
else if (controller == game.OpponentId)
{
gameState.GameHandler.HandleOpponentDraw(gameState.GetTurnNumber());
gameState.ProposeKeyPoint(KeyPointType.Draw, id, ActivePlayer.Opponent);
}
break;
case TAG_ZONE.REMOVEDFROMGAME:
case TAG_ZONE.GRAVEYARD:
case TAG_ZONE.SETASIDE:
case TAG_ZONE.PLAY:
if (controller == game.PlayerId)
{
gameState.GameHandler.HandlePlayerDeckDiscard(cardId, gameState.GetTurnNumber());
gameState.ProposeKeyPoint(KeyPointType.DeckDiscard, id, ActivePlayer.Player);
}
else if (controller == game.OpponentId)
{
gameState.GameHandler.HandleOpponentDeckDiscard(cardId, gameState.GetTurnNumber());
gameState.ProposeKeyPoint(KeyPointType.DeckDiscard, id, ActivePlayer.Opponent);
}
break;
//.........这里部分代码省略.........
示例5: Handle
//.........这里部分代码省略.........
}
}
game.Entities.Add(id, new Entity(id) {CardId = cardId});
}
gameState.CurrentEntityId = id;
gameState.CurrentEntityHasCardId = !string.IsNullOrEmpty(cardId);
}
else if(UpdatingEntityRegex.IsMatch(logLine))
{
var match = UpdatingEntityRegex.Match(logLine);
var cardId = match.Groups["cardId"].Value;
var rawEntity = match.Groups["entity"].Value;
int entityId;
if(rawEntity.StartsWith("[") && EntityRegex.IsMatch(rawEntity))
{
var entity = EntityRegex.Match(rawEntity);
entityId = int.Parse(entity.Groups["id"].Value);
}
else if(!int.TryParse(rawEntity, out entityId))
entityId = -1;
if(entityId != -1)
{
gameState.CurrentEntityId = entityId;
if(!game.Entities.ContainsKey(entityId))
game.Entities.Add(entityId, new Entity(entityId));
game.Entities[entityId].CardId = cardId;
}
if(gameState.JoustReveals > 0)
{
Entity currentEntity;
if(game.Entities.TryGetValue(entityId, out currentEntity))
{
if(currentEntity.IsControlledBy(game.Opponent.Id))
gameState.GameHandler.HandleOpponentJoust(currentEntity, cardId, gameState.GetTurnNumber());
else if(currentEntity.IsControlledBy(game.Player.Id))
gameState.GameHandler.HandlePlayerJoust(currentEntity, cardId, gameState.GetTurnNumber());
}
//gameState.JoustReveals--;
}
}
else if(CreationTagRegex.IsMatch(logLine) && !logLine.Contains("HIDE_ENTITY"))
{
var match = CreationTagRegex.Match(logLine);
_tagChangeHandler.TagChange(gameState, match.Groups["tag"].Value, gameState.CurrentEntityId, match.Groups["value"].Value, game);
}
else if((logLine.Contains("Begin Spectating") || logLine.Contains("Start Spectator")) && game.IsInMenu)
gameState.GameHandler.SetGameMode(GameMode.Spectator);
else if(logLine.Contains("End Spectator"))
{
gameState.GameHandler.SetGameMode(GameMode.Spectator);
gameState.GameHandler.HandleGameEnd();
}
else if(ActionStartRegex.IsMatch(logLine))
{
Entity actionEntity;
var playerEntity =
game.Entities.FirstOrDefault(e => e.Value.HasTag(GAME_TAG.PLAYER_ID) && e.Value.GetTag(GAME_TAG.PLAYER_ID) == game.Player.Id);
var opponentEntity =
game.Entities.FirstOrDefault(e => e.Value.HasTag(GAME_TAG.PLAYER_ID) && e.Value.GetTag(GAME_TAG.PLAYER_ID) == game.Opponent.Id);
var match = ActionStartRegex.Match(logLine);
var actionStartingCardId = match.Groups["cardId"].Value.Trim();
var actionStartingEntityId = int.Parse(match.Groups["id"].Value);
if(string.IsNullOrEmpty(actionStartingCardId))
{
示例6: ZonePositionChange
private static void ZonePositionChange(IHsGameState gameState, int id, IGame game, int controller)
{
var entity = game.Entities[id];
var zone = entity.GetTag(ZONE);
if(zone == (int)HAND)
{
if(controller == game.Player.Id)
{
ReplayMaker.Generate(HandPos, id, ActivePlayer.Player, game);
gameState.GameHandler.HandleZonePositionUpdate(ActivePlayer.Player, entity, HAND, gameState.GetTurnNumber());
}
else if(controller == game.Opponent.Id)
{
ReplayMaker.Generate(HandPos, id, ActivePlayer.Opponent, game);
gameState.GameHandler.HandleZonePositionUpdate(ActivePlayer.Opponent, entity, HAND, gameState.GetTurnNumber());
}
}
else if(zone == (int)PLAY)
{
if(controller == game.Player.Id)
{
ReplayMaker.Generate(BoardPos, id, ActivePlayer.Player, game);
gameState.GameHandler.HandleZonePositionUpdate(ActivePlayer.Player, entity, PLAY, gameState.GetTurnNumber());
}
else if(controller == game.Opponent.Id)
{
ReplayMaker.Generate(BoardPos, id, ActivePlayer.Opponent, game);
gameState.GameHandler.HandleZonePositionUpdate(ActivePlayer.Opponent, entity, PLAY, gameState.GetTurnNumber());
}
}
}
示例7: ZoneChangeFromHand
private void ZoneChangeFromHand(IHsGameState gameState, int id, IGame game, int value, int prevValue, int controller, string cardId)
{
Entity entity;
if(!game.Entities.TryGetValue(id, out entity))
return;
switch((Zone)value)
{
case PLAY:
if(controller == game.Player.Id)
{
gameState.GameHandler.HandlePlayerPlay(entity, cardId, gameState.GetTurnNumber());
gameState.ProposeKeyPoint(Play, id, ActivePlayer.Player);
}
else if(controller == game.Opponent.Id)
{
gameState.GameHandler.HandleOpponentPlay(entity, cardId, entity.GetTag(ZONE_POSITION),
gameState.GetTurnNumber());
gameState.ProposeKeyPoint(Play, id, ActivePlayer.Opponent);
}
break;
case REMOVEDFROMGAME:
case SETASIDE:
case GRAVEYARD:
if(controller == game.Player.Id)
{
gameState.GameHandler.HandlePlayerHandDiscard(entity, cardId, gameState.GetTurnNumber());
gameState.ProposeKeyPoint(HandDiscard, id, ActivePlayer.Player);
}
else if(controller == game.Opponent.Id)
{
gameState.GameHandler.HandleOpponentHandDiscard(entity, cardId, entity.GetTag(ZONE_POSITION),
gameState.GetTurnNumber());
gameState.ProposeKeyPoint(HandDiscard, id, ActivePlayer.Opponent);
}
break;
case Zone.SECRET:
if(controller == game.Player.Id)
{
gameState.GameHandler.HandlePlayerSecretPlayed(entity, cardId, gameState.GetTurnNumber(), (Zone)prevValue);
gameState.ProposeKeyPoint(SecretPlayed, id, ActivePlayer.Player);
}
else if(controller == game.Opponent.Id)
{
gameState.GameHandler.HandleOpponentSecretPlayed(entity, cardId, entity.GetTag(ZONE_POSITION),
gameState.GetTurnNumber(), (Zone)prevValue, id);
gameState.ProposeKeyPoint(SecretPlayed, id, ActivePlayer.Opponent);
}
break;
case DECK:
if(controller == game.Player.Id)
{
gameState.GameHandler.HandlePlayerMulligan(entity, cardId);
gameState.ProposeKeyPoint(KeyPointType.Mulligan, id, ActivePlayer.Player);
}
else if(controller == game.Opponent.Id)
{
gameState.GameHandler.HandleOpponentMulligan(entity, entity.GetTag(ZONE_POSITION));
gameState.ProposeKeyPoint(KeyPointType.Mulligan, id, ActivePlayer.Opponent);
}
break;
default:
Log.Warn($"unhandled zone change (id={id}): {prevValue} -> {value}");
break;
}
}
示例8: ZoneChangeFromSecret
private void ZoneChangeFromSecret(IHsGameState gameState, int id, IGame game, int value, int prevValue, int controller, string cardId)
{
switch((Zone)value)
{
case Zone.SECRET:
case GRAVEYARD:
if(controller == game.Player.Id)
gameState.ProposeKeyPoint(SecretTriggered, id, ActivePlayer.Player);
if(controller == game.Opponent.Id)
{
Entity entity;
if(!game.Entities.TryGetValue(id, out entity))
return;
gameState.GameHandler.HandleOpponentSecretTrigger(entity, cardId, gameState.GetTurnNumber(), id);
gameState.ProposeKeyPoint(SecretTriggered, id, ActivePlayer.Opponent);
}
break;
default:
Log.Warn($"unhandled zone change (id={id}): {prevValue} -> {value}");
break;
}
}
示例9: ZoneChangeFromDeck
private static void ZoneChangeFromDeck(IHsGameState gameState, int id, IGame game, int value, int prevValue, int controller,
string cardId)
{
switch((TAG_ZONE)value)
{
case HAND:
if(controller == game.Player.Id)
{
gameState.GameHandler.HandlePlayerDraw(game.Entities[id], cardId, gameState.GetTurnNumber());
gameState.ProposeKeyPoint(Draw, id, ActivePlayer.Player);
}
else if(controller == game.Opponent.Id)
{
if(!string.IsNullOrEmpty(game.Entities[id].CardId) && gameState.SetupDone)
{
#if DEBUG
Log.Debug($"Opponent Draw (EntityID={id}) already has a CardID. Removing. Blizzard Pls.");
#endif
game.Entities[id].CardId = string.Empty;
}
gameState.GameHandler.HandleOpponentDraw(game.Entities[id], gameState.GetTurnNumber());
gameState.ProposeKeyPoint(Draw, id, ActivePlayer.Opponent);
}
break;
case SETASIDE:
case REMOVEDFROMGAME:
if(controller == game.Player.Id)
{
if(gameState.JoustReveals > 0)
{
gameState.JoustReveals--;
break;
}
gameState.GameHandler.HandlePlayerRemoveFromDeck(game.Entities[id], gameState.GetTurnNumber());
}
else if(controller == game.Opponent.Id)
{
if(gameState.JoustReveals > 0)
{
gameState.JoustReveals--;
break;
}
gameState.GameHandler.HandleOpponentRemoveFromDeck(game.Entities[id], gameState.GetTurnNumber());
}
break;
case GRAVEYARD:
if(controller == game.Player.Id)
{
gameState.GameHandler.HandlePlayerDeckDiscard(game.Entities[id], cardId, gameState.GetTurnNumber());
gameState.ProposeKeyPoint(DeckDiscard, id, ActivePlayer.Player);
}
else if(controller == game.Opponent.Id)
{
gameState.GameHandler.HandleOpponentDeckDiscard(game.Entities[id], cardId, gameState.GetTurnNumber());
gameState.ProposeKeyPoint(DeckDiscard, id, ActivePlayer.Opponent);
}
break;
case PLAY:
if(controller == game.Player.Id)
{
gameState.GameHandler.HandlePlayerDeckToPlay(game.Entities[id], cardId, gameState.GetTurnNumber());
gameState.ProposeKeyPoint(DeckDiscard, id, ActivePlayer.Player);
}
else if(controller == game.Opponent.Id)
{
gameState.GameHandler.HandleOpponentDeckToPlay(game.Entities[id], cardId, gameState.GetTurnNumber());
gameState.ProposeKeyPoint(DeckDiscard, id, ActivePlayer.Opponent);
}
break;
case TAG_ZONE.SECRET:
if(controller == game.Player.Id)
{
gameState.GameHandler.HandlePlayerSecretPlayed(game.Entities[id], cardId, gameState.GetTurnNumber(), true);
gameState.ProposeKeyPoint(SecretPlayed, id, ActivePlayer.Player);
}
else if(controller == game.Opponent.Id)
{
gameState.GameHandler.HandleOpponentSecretPlayed(game.Entities[id], cardId, -1, gameState.GetTurnNumber(), true, id);
gameState.ProposeKeyPoint(SecretPlayed, id, ActivePlayer.Player);
}
break;
default:
Log.Warn($"unhandled zone change (id={id}): {prevValue} -> {value}");
break;
}
}
示例10: ZoneChangeFromHand
private static void ZoneChangeFromHand(IHsGameState gameState, int id, IGame game, int value, int prevValue, int controller,
string cardId)
{
switch((TAG_ZONE)value)
{
case PLAY:
if(controller == game.Player.Id)
{
gameState.GameHandler.HandlePlayerPlay(game.Entities[id], cardId, gameState.GetTurnNumber());
gameState.ProposeKeyPoint(Play, id, ActivePlayer.Player);
}
else if(controller == game.Opponent.Id)
{
gameState.GameHandler.HandleOpponentPlay(game.Entities[id], cardId, game.Entities[id].GetTag(ZONE_POSITION),
gameState.GetTurnNumber());
gameState.ProposeKeyPoint(Play, id, ActivePlayer.Opponent);
}
break;
case REMOVEDFROMGAME:
case SETASIDE:
case GRAVEYARD:
if(controller == game.Player.Id)
{
gameState.GameHandler.HandlePlayerHandDiscard(game.Entities[id], cardId, gameState.GetTurnNumber());
gameState.ProposeKeyPoint(HandDiscard, id, ActivePlayer.Player);
}
else if(controller == game.Opponent.Id)
{
gameState.GameHandler.HandleOpponentHandDiscard(game.Entities[id], cardId, game.Entities[id].GetTag(ZONE_POSITION),
gameState.GetTurnNumber());
gameState.ProposeKeyPoint(HandDiscard, id, ActivePlayer.Opponent);
}
break;
case TAG_ZONE.SECRET:
if(controller == game.Player.Id)
{
gameState.GameHandler.HandlePlayerSecretPlayed(game.Entities[id], cardId, gameState.GetTurnNumber(), false);
gameState.ProposeKeyPoint(SecretPlayed, id, ActivePlayer.Player);
}
else if(controller == game.Opponent.Id)
{
gameState.GameHandler.HandleOpponentSecretPlayed(game.Entities[id], cardId, game.Entities[id].GetTag(ZONE_POSITION),
gameState.GetTurnNumber(), false, id);
gameState.ProposeKeyPoint(SecretPlayed, id, ActivePlayer.Opponent);
}
break;
case DECK:
if(controller == game.Player.Id)
{
gameState.GameHandler.HandlePlayerMulligan(game.Entities[id], cardId);
gameState.ProposeKeyPoint(Mulligan, id, ActivePlayer.Player);
}
else if(controller == game.Opponent.Id)
{
gameState.GameHandler.HandleOpponentMulligan(game.Entities[id], game.Entities[id].GetTag(ZONE_POSITION));
gameState.ProposeKeyPoint(Mulligan, id, ActivePlayer.Opponent);
}
break;
default:
Log.Warn($"unhandled zone change (id={id}): {prevValue} -> {value}");
break;
}
}
示例11: ZoneChangeFromPlay
private static void ZoneChangeFromPlay(IHsGameState gameState, int id, IGame game, int value, int prevValue, int controller,
string cardId)
{
switch((TAG_ZONE)value)
{
case HAND:
if(controller == game.Player.Id)
{
gameState.GameHandler.HandlePlayerBackToHand(game.Entities[id], cardId, gameState.GetTurnNumber());
gameState.ProposeKeyPoint(PlayToHand, id, ActivePlayer.Player);
}
else if(controller == game.Opponent.Id)
{
gameState.GameHandler.HandleOpponentPlayToHand(game.Entities[id], cardId, gameState.GetTurnNumber(), id);
gameState.ProposeKeyPoint(PlayToHand, id, ActivePlayer.Opponent);
}
break;
case DECK:
if(controller == game.Player.Id)
{
gameState.GameHandler.HandlePlayerPlayToDeck(game.Entities[id], cardId, gameState.GetTurnNumber());
gameState.ProposeKeyPoint(PlayToDeck, id, ActivePlayer.Player);
}
else if(controller == game.Opponent.Id)
{
gameState.GameHandler.HandleOpponentPlayToDeck(game.Entities[id], cardId, gameState.GetTurnNumber());
gameState.ProposeKeyPoint(PlayToDeck, id, ActivePlayer.Opponent);
}
break;
case REMOVEDFROMGAME:
case SETASIDE:
case GRAVEYARD:
if(controller == game.Player.Id)
{
gameState.GameHandler.HandlePlayerPlayToGraveyard(game.Entities[id], cardId, gameState.GetTurnNumber());
if(game.Entities[id].HasTag(HEALTH))
gameState.ProposeKeyPoint(Death, id, ActivePlayer.Player);
}
else if(controller == game.Opponent.Id)
{
gameState.GameHandler.HandleOpponentPlayToGraveyard(game.Entities[id], cardId, gameState.GetTurnNumber(), gameState.PlayersTurn());
if(game.Entities[id].HasTag(HEALTH))
gameState.ProposeKeyPoint(Death, id, ActivePlayer.Opponent);
}
break;
default:
Log.Warn($"unhandled zone change (id={id}): {prevValue} -> {value}");
break;
}
}
示例12: ZoneChangeFromSecret
private static void ZoneChangeFromSecret(IHsGameState gameState, int id, IGame game, int value, int prevValue, int controller,
string cardId)
{
switch((TAG_ZONE)value)
{
case TAG_ZONE.SECRET:
case GRAVEYARD:
if(controller == game.Player.Id)
gameState.ProposeKeyPoint(SecretTriggered, id, ActivePlayer.Player);
if(controller == game.Opponent.Id)
{
gameState.GameHandler.HandleOpponentSecretTrigger(game.Entities[id], cardId, gameState.GetTurnNumber(), id);
gameState.ProposeKeyPoint(SecretTriggered, id, ActivePlayer.Opponent);
}
break;
default:
Log.Warn($"unhandled zone change (id={id}): {prevValue} -> {value}");
break;
}
}
示例13: ZoneChangeFromOther
private static void ZoneChangeFromOther(IHsGameState gameState, int id, IGame game, int value, int prevValue, int controller,
string cardId)
{
switch((TAG_ZONE)value)
{
case PLAY:
if(controller == game.Player.Id)
{
gameState.GameHandler.HandlePlayerCreateInPlay(game.Entities[id], cardId, gameState.GetTurnNumber());
gameState.ProposeKeyPoint(Summon, id, ActivePlayer.Player);
}
if(controller == game.Opponent.Id)
{
gameState.GameHandler.HandleOpponentCreateInPlay(game.Entities[id], cardId, gameState.GetTurnNumber());
gameState.ProposeKeyPoint(Summon, id, ActivePlayer.Opponent);
}
break;
case DECK:
if(controller == game.Player.Id)
{
if(gameState.JoustReveals > 0)
break;
gameState.GameHandler.HandlePlayerGetToDeck(game.Entities[id], cardId, gameState.GetTurnNumber());
gameState.ProposeKeyPoint(CreateToDeck, id, ActivePlayer.Player);
}
if(controller == game.Opponent.Id)
{
if(gameState.JoustReveals > 0)
break;
gameState.GameHandler.HandleOpponentGetToDeck(game.Entities[id], gameState.GetTurnNumber());
gameState.ProposeKeyPoint(CreateToDeck, id, ActivePlayer.Opponent);
}
break;
case HAND:
if(controller == game.Player.Id)
{
gameState.GameHandler.HandlePlayerGet(game.Entities[id], cardId, gameState.GetTurnNumber());
gameState.ProposeKeyPoint(Obtain, id, ActivePlayer.Player);
}
else if(controller == game.Opponent.Id)
{
gameState.GameHandler.HandleOpponentGet(game.Entities[id], gameState.GetTurnNumber(), id);
gameState.ProposeKeyPoint(Obtain, id, ActivePlayer.Opponent);
}
break;
default:
Log.Warn($"unhandled zone change (id={id}): {prevValue} -> {value}");
break;
}
}
示例14: CurrentPlayerChange
private static void CurrentPlayerChange(IHsGameState gameState, int id, IGame game, int value)
{
if(value == 1)
{
var activePlayer = game.Entities[id].IsPlayer ? ActivePlayer.Player : ActivePlayer.Opponent;
gameState.GameHandler.TurnStart(activePlayer, gameState.GetTurnNumber());
if(activePlayer == ActivePlayer.Player)
gameState.PlayerUsedHeroPower = false;
else
gameState.OpponentUsedHeroPower = false;
}
}
示例15: ControllerChange
private void ControllerChange(IHsGameState gameState, int id, IGame game, int prevValue, int value)
{
Entity entity;
if(!game.Entities.TryGetValue(id, out entity))
return;
if(prevValue <= 0)
{
entity.Info.OriginalController = value;
return;
}
if(entity.HasTag(PLAYER_ID))
return;
if(value == game.Player.Id)
{
if(entity.IsInZone(Zone.SECRET))
{
gameState.GameHandler.HandleOpponentStolen(entity, entity.CardId, gameState.GetTurnNumber());
gameState.ProposeKeyPoint(SecretStolen, id, ActivePlayer.Player);
}
else if(entity.IsInZone(PLAY))
gameState.GameHandler.HandleOpponentStolen(entity, entity.CardId, gameState.GetTurnNumber());
}
else if(value == game.Opponent.Id)
{
if(entity.IsInZone(Zone.SECRET))
{
gameState.GameHandler.HandlePlayerStolen(entity, entity.CardId, gameState.GetTurnNumber());
gameState.ProposeKeyPoint(SecretStolen, id, ActivePlayer.Player);
}
else if(entity.IsInZone(PLAY))
gameState.GameHandler.HandlePlayerStolen(entity, entity.CardId, gameState.GetTurnNumber());
}
}