public override GameSaveState Create(GameEngine engine, Play.Player fromPlayer) { // Still need to a way to send users their state back // I'm thinking that the CardIdentity.Key could be // encrypted with Crypto.Encrypt(something,pkey) // and the server could store the player private key // so that you only have to ask the server to decrypt // the key and figure out the type // still need the card that's targeting this card or vise versa this.GlobalVariables = engine.GlobalVariables; this.StopTurn = engine.StopTurn; //this.TurnPlayer = engine.TurnPlayer.Id; if (engine.TurnPlayer != null) { this.TurnPlayer = engine.TurnPlayer.Id; } this.TurnNumber = engine.TurnNumber; if (Play.Player.LocalPlayer == fromPlayer) { CurrentUniqueId = engine.CurrentUniqueId; } Players = Play.Player.All.Where(x => x.Id != fromPlayer.Id).Select(x => new PlayerSaveState().Create(x, fromPlayer)).ToArray(); Table = new GroupSaveState().Create(Program.GameEngine.Table, fromPlayer); Table.Visiblity = GroupVisibility.Undefined; SessionId = engine.SessionId; return(this); }
public override MarkerSaveState Create(Play.Marker marker, Play.Player fromPlayer) { this.Id = marker.Model.Id; this.Count = marker.Count; this.Name = marker.Model.Name; return(this); }
public override CardSaveState Create(Play.Card card, Play.Player fromPlayer) { this.Id = card.Id; this.Type = card.Type.Model.Id; this.Index = card.GetIndex(); this.FaceUp = ((card.FaceUp && card.Group.Viewers.Contains(fromPlayer)) || (card.Group.Viewers.Contains(fromPlayer)) || card.IsVisibleToAll()); X = card.X; Y = card.Y; this.Markers = card.Markers.Select(x => new MarkerSaveState().Create(x, fromPlayer)).ToArray(); this.DeleteWhenLeavesGroup = card.DeleteWhenLeavesGroup; this.OverrideGroupVisibility = card.OverrideGroupVisibility; this.Orientation = card.Orientation; //this.IsTarget = card.tar //this.TargetedBy = card.TargetedBy.Id; if (card.TargetedBy != null) { this.TargetedBy = card.TargetedBy.Id; } this.TargetsOtherCards = card.TargetsOtherCards; this.HighlightColor = card.HighlightColor; this.PeekingPlayers = card.PeekingPlayers.Select(x => x.Id).ToArray(); this.Alternate = card.Alternate(); this.Controller = card.Controller.Id; this.Owner = card.Owner.Id; this.Size = card.Size.Name; this.PropertyOverrides = card.PropertyOverrides; return(this); }
public override CounterSaveState Create(Play.Counter counter, Play.Player fromPlayer) { this.Name = counter.Name; this.Value = counter.Value; this.TypeId = counter.Definition.Id; this.Id = counter.Id; return(this); }
public override GroupSaveState Create(Play.Group group, Play.Player fromPlayer) { this.Id = group.Id; if (group.Controller != null) { this.Controller = group.Controller.Id; } this.Cards = group.Cards.Select(x => new CardSaveState().Create(x, fromPlayer)).ToArray(); this.Viewers = group.Viewers.Select(x => x.Id).ToArray(); this.Visiblity = group.Visibility; return(this); }
public JodsEngineGameSaveState Load(GameEngine engine, Play.Player fromPlayer) { var state = this; foreach (var gv in state.GlobalVariables) { Program.GameEngine.GlobalVariables[gv.Key] = gv.Value; } Program.GameEngine.StopTurn = state.StopTurn; Program.GameEngine.ChangeGameBoard(state.GameBoard); Program.GameEngine.TurnNumber = state.TurnNumber; Program.GameEngine.ActivePlayer = Play.Player.Find(state.ActivePlayer); foreach (var player in state.Players) { var playPlayer = Play.Player.Find(player.Id); playPlayer.Color = player.Color; playPlayer.ActualColor = player.Color; playPlayer.Brush = new SolidColorBrush(playPlayer.Color); playPlayer.TransparentBrush = new SolidColorBrush(playPlayer.Color) { Opacity = 0.4 }; if (player is JodsEnginePlayerSaveState playerSaveState) { foreach (var gv in playerSaveState.GlobalVariables) { playPlayer.GlobalVariables[gv.Key] = gv.Value; } foreach (var counter in playerSaveState.Counters) { var cnt = Play.Counter.Find(counter.Id); cnt.SetValue(counter.Value, playPlayer, false, false); } foreach (var g in playerSaveState.Groups) { LoadGroup(g, fromPlayer); } } } LoadGroup(Table, fromPlayer, true); return(this); }
public override CardSaveState Create(Play.Card card, Play.Player fromPlayer) { this.Id = card.Id; this.EncType = card.GetEncryptedKey().ToString(); if (card.Type.Revealing || fromPlayer == Play.Player.LocalPlayer) { Type = card.Type.Model.Id; } else { Type = Guid.Empty; } this.Index = card.GetIndex(); this.FaceUp = ((card.FaceUp && card.Group.Viewers.Contains(fromPlayer)) || (card.Group.Viewers.Contains(fromPlayer)) || (card.PlayersLooking.Contains(fromPlayer) || card.PeekingPlayers.Contains(fromPlayer) || card.IsVisibleToAll())); X = card.X; Y = card.Y; this.Markers = card.Markers.Select(x => new MarkerSaveState().Create(x, fromPlayer)).ToArray(); this.DeleteWhenLeavesGroup = card.DeleteWhenLeavesGroup; this.OverrideGroupVisibility = card.OverrideGroupVisibility; this.Orientation = card.Orientation; //this.IsTarget = card.tar //this.TargetedBy = card.TargetedBy.Id; if (card.TargetedBy != null) { this.TargetedBy = card.TargetedBy.Id; } this.TargetsOtherCards = card.TargetsOtherCards; this.HighlightColor = card.HighlightColor; this.PeekingPlayers = card.PeekingPlayers.Select(x => x.Id).ToArray(); this.Alternate = card.Alternate(); this.Controller = card.Controller.Id; this.Owner = card.Owner.Id; return(this); }
public GameSaveState Load(GameEngine engine, Play.Player fromPlayer) { var state = this; foreach (var gv in state.GlobalVariables) { Program.GameEngine.GlobalVariables[gv.Key] = gv.Value; } Program.GameEngine.StopTurn = state.StopTurn; Program.GameEngine.ChangeGameBoard(state.GameBoard); Program.GameEngine.TurnNumber = state.TurnNumber; Program.GameEngine.TurnPlayer = Play.Player.Find(state.TurnPlayer); foreach (var p in state.Players) { var player = Play.Player.Find(p.Id); foreach (var gv in p.GlobalVariables) { player.GlobalVariables[gv.Key] = gv.Value; } foreach (var counter in p.Counters) { var cnt = Play.Counter.Find(counter.Id); cnt.SetValue(counter.Value, player, false, false); } foreach (var g in p.Groups) { LoadGroup(g, fromPlayer); } } LoadGroup(Table, fromPlayer, true); return(this); }
public abstract T1 Create(T tp, Play.Player fromPlayer);
internal void LoadGroup(GroupSaveState g, Play.Player fromPlayer, bool isTable = false) { var group = Play.Group.Find(g.Id); if (!isTable) { group.Controller = Play.Player.Find(g.Controller); } group.Viewers = g.Viewers.Select(Play.Player.Find).ToList(); group.Visibility = g.Visiblity; foreach (var c in g.Cards) { var owner = Play.Player.Find(c.Owner); DataNew.Entities.Card model = null; if (c.Type != Guid.Empty) { model = Core.DataManagers.GameManager.Get() .GetById(Program.GameEngine.Definition.Id) .GetCardById(c.Type); } var card = Play.Card.Find(c.Id); if (fromPlayer == owner && card != null) { //card.Type.Key = ulong.Parse(c.EncType); card.SetModel(model.Clone()); //card.Type = new CardIdentity(card.Id){Key=(ulong)c.EncType,Model = model.Clone(),MySecret = owner == Play.Player.LocalPlayer}; //Play.Card.Remove(card); //card = null; } if (card == null) { card = new Play.Card(owner, c.Id, model, owner == Play.Player.LocalPlayer, c.Size); } group.Remove(card); group.Add(card); card.Group = group; card.SwitchTo(owner, c.Alternate, false); card.Controller = Play.Player.Find(c.Controller); card.DeleteWhenLeavesGroup = c.DeleteWhenLeavesGroup; card.SetFaceUp(c.FaceUp); card.SetHighlight(c.HighlightColor); card.SetIndex(c.Index); card.Orientation = c.Orientation; card.SetOverrideGroupVisibility(c.OverrideGroupVisibility); card.SetTargetedBy(Play.Player.Find(c.TargetedBy)); card.TargetsOtherCards = c.TargetsOtherCards; card.X = c.X; card.Y = c.Y; card.PropertyOverrides = c.PropertyOverrides; foreach (var m in c.Markers) { card.SetMarker(card.Owner, m.Id, m.Name, m.Count, false); } foreach (var pp in c.PeekingPlayers.Select(Play.Player.Find)) { card.PeekingPlayers.Add(pp); } } group.OnCardsChanged(); }
public OPlayer(Play.Player player) { this.player = player; }
public override GameSaveState Create(GameEngine tp, Play.Player fromPlayer) { return(Create(tp, fromPlayer, false)); }