Ejemplo n.º 1
0
 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");
 }
Ejemplo n.º 2
0
 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");
 }
Ejemplo n.º 3
0
 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;
 }
Ejemplo n.º 4
0
 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;
 }
Ejemplo n.º 5
0
        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;
        }
Ejemplo n.º 6
0
        /// <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;
        }
Ejemplo n.º 7
0
        /// <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;

        }
Ejemplo n.º 8
0
 public bool SaveModel(ciFramework frameW)
 {           
     return King.UtilPlayers.PlayerSave(frameW, Data);
 }
Ejemplo n.º 9
0
 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
 }
Ejemplo n.º 10
0
 public bool LoadModel(ciFramework frameW)
 {
     Game = new csGameView();
     return King.UtilGames.GameView(frameW, Game, Key);
 }
Ejemplo n.º 11
0
 public bool InitModel(ciFramework frameW)
 {            
     return King.UtilGames.Load(frameW, ref Games);
 }
Ejemplo n.º 12
0
 public bool InitModel(ciFramework frameW)
 {
     return King.UtilGames.Add(frameW,Data);            
 }
Ejemplo n.º 13
0
 public bool LoadModel(ciFramework frameW)
 {         
     return King.UtilPlayers.Load(frameW, ref Players);
 }
Ejemplo n.º 14
0
        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;
        }
Ejemplo n.º 15
0
        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;
        }
Ejemplo n.º 16
0
 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;
 }
Ejemplo n.º 17
0
 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;
 }