public static bool FindTurnNode(ciFramework frameW, ref XElement nodeTurn, XElement nodeGame, int turnKey) { foreach (XElement lcNode in nodeGame.Element("turns").Descendants("turn")) { if (turnKey == Convert.ToInt16(lcNode.Attribute("key").Value)) { nodeTurn = lcNode; return true; } } return frameW.ErrorAdd("Oyun Turu Yüklenemedi"); }
public static bool FindGameNode(ciFramework frameW, ref XElement nodeGame, XDocument games, short gameKey) { foreach (XElement lcNode in games.Element("games").Descendants("game")) { if (gameKey == Convert.ToInt16(lcNode.Attribute("key").Value)) { nodeGame = lcNode; return true; } } return frameW.ErrorAdd("Oyun Yüklenemedi"); }
public static bool PlayerSave(ciFramework frameW, csPlayer player) { if (string.IsNullOrEmpty(player.Name)) return frameW.ErrorAdd("İsim girilmeli"); // csPlayers players = null; if (!Load(frameW, ref players)) return false; XDocument docPlayers = null; if (!King.Utils.LoadDb(frameW, ref docPlayers, "Players")) return false; player.Key =Convert.ToInt16( players.Count+1); var playNode = new XElement("player"); playNode.Add(new XAttribute("id",player.Key)); playNode.Add(new XAttribute("name", player.Name)); docPlayers.Element("players").Add(playNode); King.Utils.SaveDb(docPlayers, "Players"); return true; }
public static bool LoadDb(ciFramework frameW, ref XDocument ret, string file) { var fi = new System.IO.FileInfo(FullFileName(file)); if (!fi.Exists) { return frameW.ErrorAdd(fi.FullName); } try { ret = XDocument.Load(fi.FullName); } catch (Exception ex) { return frameW.ErrorAdd(ex.Message); } return true; }
public static bool Load(ciFramework frameW, ref csPlayers ret) { ret = new csPlayers(); XDocument docPlayers = null; if (!King.Utils.LoadDb(frameW, ref docPlayers, "Players")) return false; foreach (XElement lcNode in docPlayers.Element("players").Descendants("player")) { var lcRec = new csPlayer { Key = Convert.ToInt16(lcNode.Attribute("id").Value), Name = lcNode.Attribute("name").Value }; ret.Add(lcRec); } return true; }
/// <summary> /// Liste amaçlı Load /// </summary> /// <returns></returns> public static bool Load(ciFramework frameW, ref csGames ret) { ret = new csGames(); XDocument docGames = null; if (!King.Utils.LoadDb(frameW, ref docGames, "Games")) return false; foreach (XElement lcNode in docGames.Element("games").Descendants("game")) { var lcRec = new csGameList { Key = Convert.ToInt16(lcNode.Attribute("key").Value), Date = Convert.ToString(lcNode.Attribute("date").Value) }; if (lcNode.Attribute("played") != null) lcRec.PlayedTurn = Convert.ToByte(lcNode.Attribute("played").Value); if (lcNode.Attribute("king") != null) lcRec.IsKing = lcNode.Attribute("king").Value=="1"; ret.Add(lcRec); if (lcRec.PlayedTurn == 20 || lcRec.IsKing) { lcRec.Ups = lcNode.Attribute("ups").Value; lcRec.Downs = lcNode.Attribute("downs").Value; } } return true; }
/// <summary>Oyunu Komple Yükler ve de bazı verileri de pratiklik olsun diye set eder</summary> public static bool GameView(ciFramework frameW, csGameView game, short key) { csPlayers players = null; if (!King.UtilPlayers.Load(frameW, ref players)) return false; XDocument docGames = null; if (!King.Utils.LoadDb(frameW, ref docGames, "Games")) return false; XElement nodeGame = null; if (!King.Utils.FindGameNode(frameW, ref nodeGame, docGames, key)) return false; // game.Key = key; game.Date = Convert.ToString(nodeGame.Attribute("date").Value); game.IsKing = nodeGame.Attribute("king") != null && nodeGame.Attribute("king").Value == "1"; // Players foreach (XElement nodePlayer in nodeGame.Element("players").Descendants("player")) { var player = new csGamePlayer();// player.Key = Convert.ToInt16(nodePlayer.Attribute("key").Value); player.Name = players.FirstOrDefault(f => f.Key == player.Key).Name; game.Players.Add(player); // } // oynanan turnler var nodeTurns = nodeGame.Element("turns"); if (nodeTurns != null) { foreach (XElement nodeTurn in nodeTurns.Descendants("turn")) { var turn = new csGameTurn();// turn.Key = Convert.ToInt16(nodeTurn.Attribute("key").Value); turn.Type = (enmGameType)Convert.ToByte(nodeTurn.Attribute("type").Value); turn.Player = Convert.ToInt16(nodeTurn.Attribute("player").Value); turn.IsKing = nodeTurn.Attribute("king") != null && nodeTurn.Attribute("king").Value == "1"; // kimler almış elleri foreach (XElement nodeMove in nodeTurn.Element("moves").Descendants("move")) { var move = new csGameTurn.csGameMove();// move.Player = Convert.ToInt16(nodeMove.Attribute("player").Value); move.Quantity = Convert.ToByte(nodeMove.Attribute("quantity").Value); turn.Moves.Add(move); // } game.Turns.Add(turn); // } } // olası OyunTiplerini de ekleyelim var gameTypes = GameTypes(); foreach (var gameType in gameTypes) { game.AvailTurns.Add(new csAvailTurn { GameType = gameType }); } // oynanmış turnlerden data bulalım foreach (var turn in game.Turns) { var gameType = game.AvailTurns.FirstOrDefault(f => f.GameType.Key == turn.Type); gameType.Played += 1; // oynayan kim var playerDef = game.Players.FirstOrDefault(f => f.Key == turn.Player); playerDef.Played += 1; if (gameType.GameType.Key == enmGameType.Trump) { playerDef.PlayedTrump += 1; } else { playerDef.PlayedPenalty += 1; } // her oyundaki her eli playerlara paylaştıralım foreach (var move in turn.Moves) { var playerMove = game.Players.FirstOrDefault(f => f.Key == move.Player); if (gameType.GameType.Key == enmGameType.Trump) { playerMove.TotalUp += move.Quantity * gameType.GameType.Value; } else { playerMove.TotalDown += move.Quantity * gameType.GameType.Value; } playerMove.Total = playerMove.TotalUp - playerMove.TotalDown; } } return true; }
public bool SaveModel(ciFramework frameW) { return King.UtilPlayers.PlayerSave(frameW, Data); }
public bool TurnRemoveModel(ciFramework frameW) { if (!King.UtilGames.GameTurnRemove(frameW,Key, TurnRemoveKey)) return false; if (!LoadModel(frameW)) return false; return King.UtilGames.GameSummarySave(frameW,Game);// tekrar bütün gamei gönderelim }
public bool LoadModel(ciFramework frameW) { Game = new csGameView(); return King.UtilGames.GameView(frameW, Game, Key); }
public bool InitModel(ciFramework frameW) { return King.UtilGames.Load(frameW, ref Games); }
public bool InitModel(ciFramework frameW) { return King.UtilGames.Add(frameW,Data); }
public bool LoadModel(ciFramework frameW) { return King.UtilPlayers.Load(frameW, ref Players); }
public static bool Add(ciFramework frameW, csGameList game) { if (game.Players == null || game.Players.Count != 4) { return frameW.ErrorAdd("4 oyuncu olmalı"); } // var unks = new HashSet<int>(); foreach (var player in game.Players) { if (player.Key == 0) { return frameW.ErrorAdd("Bütün oyuncular seçilmeli"); } unks.Add(player.Key); } if (unks.Count != 4) return frameW.ErrorAdd("Bir Oyuncu 2 defa seçilemez"); csGames games = null; if (!Load(frameW, ref games)) return false; game.Key = Convert.ToInt16(games.Count + 1); XDocument docGames = null; if (!King.Utils.LoadDb(frameW, ref docGames, "Games")) return false; var nodeGames = docGames.Element("games"); var nodeGame = new XElement("game"); nodeGames.Add(nodeGame); game.Date = DateTime.Now.ToString("dd/MM/yy HH:mm"); nodeGame.Add(new XAttribute("key", game.Key)); nodeGame.Add(new XAttribute("date", game.Date)); var nodePlayers = new XElement("players"); nodeGame.Add(nodePlayers); foreach (var player in game.Players) { var nodePlayer = new XElement("player"); nodePlayer.Add(new XAttribute("key", player.Key)); //turnleri şimdi açmaya gerek yok(zaten yok da) nodePlayers.Add(nodePlayer); } King.Utils.SaveDb(docGames, "Games"); return true; }
public static bool GameTurnSave(ciFramework frameW, short gameKey, csGameTurn turn) { // toplam el ile seçilen uyuyor mu diye bakalım var gameTypeDef = GameType(turn.Type); int totalMove = 0; foreach (var itemMove in turn.Moves) { totalMove += itemMove.Quantity; } if (totalMove != gameTypeDef.HowMany) return frameW.ErrorAdd("Toplam " + gameTypeDef.HowMany + " El Seçilmeli"); // XDocument docGames = null; if (!King.Utils.LoadDb(frameW, ref docGames, "Games")) return false; XElement nodeGame = null; if (!King.Utils.FindGameNode(frameW, ref nodeGame, docGames, gameKey)) return false; //turns node var nodeTurns = nodeGame.Element("turns"); if (nodeTurns == null) { nodeTurns = new XElement("turns"); nodeGame.Add(nodeTurns); } // turn oluştur veya bul XElement nodeTurn = null; if (turn.Key == 0) { turn.Key = nodeTurns.Nodes().Count() + 1; nodeTurn = new XElement("turn"); nodeTurn.Add(new XAttribute("key", turn.Key)); nodeTurns.Add(nodeTurn); } else { if (!King.Utils.FindTurnNode(frameW, ref nodeTurn, nodeGame, turn.Key)) return false; } // update veya insert King.Utils.UpdateAttribute(nodeTurn, "player", Convert.ToString(turn.Player)); King.Utils.UpdateAttribute(nodeTurn, "type", Convert.ToByte(turn.Type).ToString()); King.Utils.UpdateAttribute(nodeTurn, "king", (turn.IsKing ? 1 : 0).ToString()); //eski move varsa da silelim if (nodeTurn.Element("moves") != null) nodeTurn.Element("moves").Remove(); // var nodeMoves = new XElement("moves"); nodeTurn.Add(nodeMoves); foreach (var itemMove in turn.Moves) { if (itemMove.Quantity > 0) { var nodeMove = new XElement("move"); nodeMoves.Add(nodeMove); nodeMove.Add(new XAttribute("player", itemMove.Player.ToString())); nodeMove.Add(new XAttribute("quantity", itemMove.Quantity.ToString())); } } King.Utils.SaveDb(docGames, "Games"); return true; }
public static bool GameSummarySave(ciFramework frameW, csGameView gameView) { XDocument docGames = null; if (!King.Utils.LoadDb(frameW, ref docGames, "Games")) return false; XElement nodeGame = null; if (!King.Utils.FindGameNode(frameW, ref nodeGame, docGames, gameView.Key)) return false; // roota summary de ekleyelim XAttribute attrPlayed = nodeGame.Attribute("played"); if (attrPlayed == null) { attrPlayed = new XAttribute("played", "0"); nodeGame.Add(attrPlayed); } attrPlayed.Value = gameView.Turns.Count().ToString(); // king ise kim yapmış short? kingPlayer = null; gameView.IsKing = false; foreach (var turn in gameView.Turns) { if (turn.IsKing) { // eğer king ise game nodu'una da set edelim gameView.IsKing = true; kingPlayer = turn.Player; break; } } King.Utils.UpdateAttribute(nodeGame, "king", gameView.IsKing?"1":"0"); XAttribute upPlayers = nodeGame.Attribute("ups"); XAttribute downPlayers = nodeGame.Attribute("downs"); if (upPlayers == null) { upPlayers = new XAttribute("ups", ""); nodeGame.Add(upPlayers); } else { upPlayers.Value = ""; } if (downPlayers == null) { downPlayers = new XAttribute("downs", ""); nodeGame.Add(downPlayers); } else { downPlayers.Value = ""; } // if (gameView.Turns.Count() == 20 || gameView.IsKing) { foreach (var player in gameView.Players) { if ((kingPlayer != null && Convert.ToInt16(player.Key) == kingPlayer) || (kingPlayer == null && player.Total > 0)) { upPlayers.Value += (string.IsNullOrEmpty(upPlayers.Value) ? "" : ",") + player.Name; } else { downPlayers.Value += (string.IsNullOrEmpty(downPlayers.Value) ? "" : ",") + player.Name; } } } // King.Utils.SaveDb(docGames, "Games"); return true; }
public static bool GameTurnRemove(ciFramework frameW, short gameKey, byte turnKey) { XDocument docGames = null; if (!King.Utils.LoadDb(frameW, ref docGames, "Games")) return false; XElement nodeGame = null; if (!King.Utils.FindGameNode(frameW, ref nodeGame, docGames, gameKey)) return false; XElement nodeTurn = null; if (!King.Utils.FindTurnNode(frameW, ref nodeTurn, nodeGame, turnKey)) return false; nodeTurn.Remove(); King.Utils.SaveDb(docGames, "Games"); return true; }