public static GameObject CreateClientFruiton(int id, GameObject parent)
        {
            FruitonDatabase fruitonDatabase  = GameManager.Instance.FruitonDatabase;
            Fruiton         kernelFruiton    = FruitonFactory.makeFruiton(id, fruitonDatabase);
            var             newFruitonObject = UnityEngine.Object.Instantiate(Resources.Load("Models/Battle/BoyFighter", typeof(GameObject))) as GameObject;

            newFruitonObject.GetComponentInChildren <SkeletonAnimation>().skeleton.SetSkin(kernelFruiton.model);
            newFruitonObject.AddComponent <ClientFruiton>().KernelFruiton = kernelFruiton;
            newFruitonObject.transform.parent = parent.transform;

            return(newFruitonObject);
        }
        public static IEnumerable <Fruiton> CreateAllKernelFruitons()
        {
            FruitonDatabase fruitonDatabase = GameManager.Instance.FruitonDatabase;
            var             result          = new List <Fruiton>();

            foreach (int key in fruitonDatabase.fruitonDb._keys)
            {
                // This check is here because Haxe IntMap may also contain invalid key-value pairs, which can be recognised by the fact that their key is 0.
                if (key == 0)
                {
                    continue;
                }
                result.Add(FruitonFactory.makeFruiton(key, fruitonDatabase));
            }
            return(result);
        }
        /// <summary>
        /// Loads fruiton team and displays it on the grid.
        /// </summary>
        /// <param name="team">team to load</param>
        /// <param name="dbFridgeMapping">fruiton id to fridge fruiton game object map</param>
        public void LoadTeam(FruitonTeam team, Dictionary <int, FridgeFruiton> dbFridgeMapping)
        {
            ClearFruitons();
            if (dbFridgeMapping != null)
            {
                List <int> availableFruitons = GameManager.Instance.AvailableFruitons;
                foreach (var fruiton in GameManager.Instance.AllPlayableFruitons)
                {
                    var dbId = fruiton.dbId;
                    dbFridgeMapping[dbId].Count = availableFruitons.Count(id => id == dbId);
                }
            }

            // reset background color of every square
            for (var x = 0; x < gridSquares.GetLength(0); x++)
            {
                for (var y = 0; y < gridSquares.GetLength(1); y++)
                {
                    gridSquares[x, y].ResetDefaultBgColor();
                    gridSquares[x, y].CancelHighlight();
                }
            }

            for (int i = 0; i < team.FruitonIDs.Count; i++)
            {
                var fruitonId     = team.FruitonIDs[i];
                var pos           = team.Positions[i];
                var kernelFruiton = FruitonFactory.makeFruiton(fruitonId, GameManager.Instance.FruitonDatabase);
                var x             = IsMirrored ? 1 - pos.Y : pos.Y;
                var y             = pos.X - 2;
                if (dbFridgeMapping != null && --dbFridgeMapping[fruitonId].Count < 0)
                {
                    // set background color of squares containing not owned fruitons to red
                    gridSquares[x, y].SetSecondaryBgColorAsDefault();
                    gridSquares[x, y].CancelHighlight();
                }
                gridSquares[x, y].SetFruiton(kernelFruiton);
            }
        }