示例#1
0
        public override Packet OnPacketReceive(Packet receivedPacket)
        {
            ClientPacketUpdatePet clientPacketUpdatePet = receivedPacket as ClientPacketUpdatePet;

            ConsoleHelper.Write("Receive - ClientPacketUpdatePet");

            PLFPet pet = clientPacketUpdatePet.PetProfile;

            //insert new profile into DB
            MySqlCommand updatePetCommand = new MySqlCommand();

            updatePetCommand.Connection  = Program.mySQLManager.MySQLConnection.MysqlConnection;
            updatePetCommand.CommandText =
                $"UPDATE `T_Pet` SET `petType`='{(int)pet.PetType}',`petName`='{pet.PetName.ToSQL()}' WHERE `petID`='{pet.PetID}'";

            ServerPacketConfirmation serverPacketConfirmation;

            try
            {
                updatePetCommand.ExecuteNonQuery();

                serverPacketConfirmation = new ServerPacketConfirmation(true, NetworkError.NONE);
            }
            catch (Exception e)
            {
                serverPacketConfirmation = new ServerPacketConfirmation(false, NetworkError.GLOBAL_UNKNOWN);
                Console.WriteLine(e.Message);
            }

            ConsoleHelper.Write("Send - ServerPacketConfirmation");

            return(serverPacketConfirmation);
        }
            public override void Selected(UIPickerView pickerView, nint row, nint component)
            {
                //set selected pet
                selectedPet = Application.PetManager.UserOwnPets[(int)row];

                //trigger event
                petChangeEvent?.Invoke(null, null);
            }
        /// <summary>
        /// Views the will appear.
        /// </summary>
        /// <param name="animated">If set to <c>true</c> animated.</param>
        public override void ViewWillAppear(bool animated)
        {
            //init picker
            InitPetPicker();

            //populate fields
            selectedPet     = Application.PetManager.SelectedPet;
            ivPetIcon.Image = IosPetHelper.GetImageForPetType(Application.PetManager.SelectedPet.PetType);
        }
示例#4
0
        public override void ViewWillAppear(bool animated)
        {
            //get selected pet and populate fields
            selectedPet     = Application.PetManager.SelectedPet;
            lblPetName.Text = selectedPet.PetName;
            ivPetIcon.Image = IosPetHelper.GetImageForPetType(selectedPet.PetType);

            //load page
            LoadPage();
        }
示例#5
0
        /// <summary>
        /// Views the will appear.
        /// </summary>
        /// <param name="animated">If set to <c>true</c> animated.</param>
        public override void ViewWillAppear(bool animated)
        {
            //if no selected pet
            if (Application.PetManager.SelectedPet == null)
            {
                return;
            }

            //get actual pet
            actualPet = Application.PetManager.SelectedPet;

            //update fields
            UpdatePetView();
            UpdatePetAttributes();
            UpdateScrollView();
        }
        public void InitPetPicker()
        {
            //create new picker model
            var petPickerModel = new PetPickerModel(Application.PetManager.UserOwnPets);

            //set picker view model
            pvUserPetView.Model = petPickerModel;

            //add event handler
            petPickerModel.petChangeEvent += (sender, e) =>
            {
                selectedPet = petPickerModel.selectedPet;

                ivPetIcon.Image = IosPetHelper.GetImageForPetType(selectedPet.PetType);
            };
        }
示例#7
0
        /// <summary>
        /// Updates the pet.
        /// </summary>
        /// <returns>The pet.</returns>
        /// <param name="pet">Pet.</param>
        public static ServerPacketConfirmation UpdatePet(PLFPet pet)
        {
            //create new client packet update pet
            ClientPacketUpdatePet clientPacketUpdatePet = new ClientPacketUpdatePet(0, pet);

            //send packet to the server
            ServerPacketConfirmation serverPacketConfirmation = TCPClient.SendPacket(clientPacketUpdatePet) as ServerPacketConfirmation;

            //if no answer
            if (serverPacketConfirmation == null)
            {
                return(new ServerPacketConfirmation(false, NetworkError.SERVER_UNAVAILABLE));
            }

            return(serverPacketConfirmation);
        }
        /// <summary>
        /// Buttons the save pet touch up inside.
        /// </summary>
        /// <param name="sender">Sender.</param>
        partial void BtnSavePet_TouchUpInside(UIButton sender)
        {
            //create new pet with selected type
            PLFPet pet = new PLFPet(selectedType);

            pet.PetName = tfPetNameField.Text;

            //send pet register to server
            ServerPacketAddPet serverPacketAddPet = ServerHelper.AddPet(Application.ActualUser, pet);

            //if register success
            if (serverPacketAddPet.RegisterSuccess)
            {
                //set pet id
                pet.PetID = serverPacketAddPet.PetID;

                //add pet to user pet list
                Application.PetManager.AddPet(pet);

                //reset fields
                selectedType        = PetType.OTHER;
                tfPetNameField.Text = "";

                //pop actual controller
                this.NavigationController.PopViewController(true);
                return;
            }

            //get the good error message
            String errorMessage = string.Empty;

            switch (serverPacketAddPet.NetworkError)
            {
            case NetworkError.SERVER_UNAVAILABLE:
                errorMessage = MSGBank.ERROR_NO_SERVER;
                break;

            default:
                errorMessage = $"Impossible d'ajouter ce familier";
                break;
            }
            BarHelper.DisplayErrorBar(uivMainView, MSGBank.ERROR_TITLE, errorMessage);
        }
示例#9
0
        /// <summary>
        /// Shares the pet.
        /// </summary>
        /// <returns>The pet.</returns>
        /// <param name="user">User.</param>
        /// <param name="pet">Pet.</param>
        /// <param name="receiverUserName">Receiver user name.</param>
        /// <param name="sharePower">Share power.</param>
        public static ServerPacketConfirmation SharePet(PLFUser user, PLFPet pet, String receiverUserName, int sharePower)
        {
            //get user id
            int userID = user.ID;

            //create new packet share pet
            ClientPacketSharePet clientPacketSharePet = new ClientPacketSharePet(userID, pet.PetID, receiverUserName, sharePower);

            //send packet to the server
            ServerPacketConfirmation serverPacketConfirmation = TCPClient.SendPacket(clientPacketSharePet) as ServerPacketConfirmation;

            //if no answer
            if (serverPacketConfirmation == null)
            {
                return(new ServerPacketConfirmation(false, NetworkError.SERVER_UNAVAILABLE));
            }

            return(serverPacketConfirmation);
        }
示例#10
0
        /// <summary>
        /// Adds the pet.
        /// </summary>
        /// <returns>The pet.</returns>
        /// <param name="user">User.</param>
        /// <param name="pet">Pet.</param>
        public static ServerPacketAddPet AddPet(PLFUser user, PLFPet pet)
        {
            //get user ID
            int userID = user.ID;

            //create new client add pet packet
            ClientPacketAddPet clientPacketAddPet = new ClientPacketAddPet(userID, pet);

            //send packet to server
            ServerPacketAddPet serverPacketAddPet = TCPClient.SendPacket(clientPacketAddPet) as ServerPacketAddPet;

            //if no answer
            if (serverPacketAddPet == null)
            {
                return(new ServerPacketAddPet(false, -1, NetworkError.SERVER_UNAVAILABLE));
            }

            return(serverPacketAddPet);
        }
示例#11
0
        /// <summary>
        /// Deletes the pet.
        /// </summary>
        /// <returns>The pet.</returns>
        /// <param name="user">User.</param>
        /// <param name="pet">Pet.</param>
        public static ServerPacketConfirmation DeletePet(PLFUser user, PLFPet pet)
        {
            //get user and pet id
            int userID = user.ID;
            int petID  = pet.PetID;

            //new client delete pet
            ClientPacketDeletePet clientPacketDeletePet = new ClientPacketDeletePet(userID, petID);

            //send delete packet to the server
            ServerPacketConfirmation serverPacketConfirmation = TCPClient.SendPacket(clientPacketDeletePet) as ServerPacketConfirmation;

            //if no answer
            if (serverPacketConfirmation == null)
            {
                return(new ServerPacketConfirmation(false, NetworkError.SERVER_UNAVAILABLE));
            }

            return(serverPacketConfirmation);
        }
示例#12
0
        /// <summary>
        /// Loads the user pet list.
        /// </summary>
        /// <param name="user">User.</param>
        public void LoadUserPetList(PLFUser user)
        {
            //clear actual petlist
            userPets.Clear();

            //send download pets id packet
            ServerPacketDownloadPetsID serverPacketDownloadPetsID = ServerHelper.DownloadPetsID(user);

            userPetsID = serverPacketDownloadPetsID.IdList;

            //foreach user own pets id
            foreach (var id in userPetsID)
            {
                //download pet infos from server
                PLFPet pet = ServerHelper.DownloadPet(id).Pet;

                //if pet isn't null
                if (pet != null)
                {
                    userPets.Add(pet);
                }
            }

            //get shared pets id
            int[] sharePetsId = serverPacketDownloadPetsID.SharedIdList;

            //foreach user share pets id
            foreach (var id in sharePetsId)
            {
                //download shared pet infos from server
                PLFPet pet = ServerHelper.DownloadPet(id, true).Pet;

                //if pet isn't null
                if (pet != null)
                {
                    userPets.Add(pet);
                }
            }
        }
示例#13
0
        PLFPet pet;             //pet

        public PetCard(PLFPet pet) : base(pet.PetName, $"Pet/{pet.PetType.ToString().ToLower()}.png", pet.Shared ? "Icon/share.png" : "null")
        {
            this.pet = pet;
        }
示例#14
0
 /// <summary>
 /// Adds the pet.
 /// </summary>
 /// <param name="pet">Pet.</param>
 public void AddPet(PLFPet pet)
 {
     //add pet to list
     userPets.Add(pet);
 }
示例#15
0
 /// <summary>
 /// Deletes the pet.
 /// </summary>
 /// <param name="pet">Pet.</param>
 public void DeletePet(PLFPet pet)
 {
     //remove pet from list
     userPets.Remove(pet);
 }
示例#16
0
        public override Packet OnPacketReceive(Packet receivedPacket)
        {
            //cast received packet
            ClientPacketAddPet clientPacketAddPet = receivedPacket as ClientPacketAddPet;

            ConsoleHelper.Write("Receive - ClientPacketAddPet");

            //get packet properties
            int    userID = clientPacketAddPet.OwnerUserID;
            PLFPet pet    = clientPacketAddPet.NewPet;

            //add packet command
            MySqlCommand registerNewPetCommand = new MySqlCommand();

            registerNewPetCommand.Connection  = Program.mySQLManager.MySQLConnection.MysqlConnection;
            registerNewPetCommand.CommandText =
                $"INSERT INTO `T_Pet`(`petType`, `petName`, `petAttributs`) VALUES ('{(int)pet.PetType}','{pet.PetName.ToSQL()}', '[]'); SELECT LAST_INSERT_ID();";

            MySqlDataReader mysqlDataReader = null;

            ServerPacketAddPet serverPacketAddPet;

            try
            {
                //execute sql reader
                mysqlDataReader = registerNewPetCommand.ExecuteReader();

                int petID = 0;

                //open reader
                while (mysqlDataReader.Read())
                {
                    petID = mysqlDataReader.GetInt32(0);
                }

                //new server packet
                serverPacketAddPet = new ServerPacketAddPet(true, petID, NetworkError.NONE);
            }
            catch (MySqlException e)
            {
                //write message
                Console.WriteLine(e.Number + " - " + e.Message);

                serverPacketAddPet = new ServerPacketAddPet(false, -1, NetworkError.GLOBAL_UNKNOWN);
            }
            catch (Exception e)
            {
                serverPacketAddPet = new ServerPacketAddPet(false, -1, NetworkError.GLOBAL_UNKNOWN);
                Console.WriteLine(e.Message);
            }

            //close reader
            if (mysqlDataReader != null && !mysqlDataReader.IsClosed)
            {
                mysqlDataReader.Close();
            }

            //add own relation if success
            if (serverPacketAddPet.RegisterSuccess)
            {
                MySqlCommand registerNewOwnCommand = new MySqlCommand();
                registerNewOwnCommand.Connection  = Program.mySQLManager.MySQLConnection.MysqlConnection;
                registerNewOwnCommand.CommandText =
                    $"INSERT INTO `T_Own`(`fkPetID`, `fkUserID`) VALUES ('{serverPacketAddPet.PetID}','{userID}') ";
                registerNewOwnCommand.ExecuteNonQuery();
            }

            ConsoleHelper.Write("Send - ServerPacketAddPet");

            return(serverPacketAddPet);
        }
示例#17
0
        int selectedPetAttributeID;                     //selected attribute id

        /// <summary>
        /// Initializes a new instance of the <see cref="T:PetLaForme.Manager.PetManager"/> class.
        /// </summary>
        public PetManager()
        {
            //init variables
            userPets    = new List <PLFPet>();
            selectedPet = null;
        }
示例#18
0
        public override Packet OnPacketReceive(Packet receivedPacket)
        {
            //get received packet
            ClientPacketDownloadPet clientPacketDownloadPet = receivedPacket as ClientPacketDownloadPet;

            ConsoleHelper.Write("Receive - ClientPacketDownloadPet");

            //read packet infos
            int petID = clientPacketDownloadPet.PetID;

            //get share power
            Dictionary <int, int> sharedPetPower = SQLHelper.GetPetSharePower(new List <int>()
            {
                petID
            });

            //download pet
            MySqlCommand downloadPetsCommand = new MySqlCommand();

            downloadPetsCommand.Connection  = Program.mySQLManager.MySQLConnection.MysqlConnection;
            downloadPetsCommand.CommandText = $@"SELECT * FROM `T_Pet` WHERE `petID` IN ({petID})";

            MySqlDataReader mysqlDataReader = null;

            PLFPet pet = new PLFPet(PetType.OTHER);

            try
            {
                //execute reader
                mysqlDataReader = downloadPetsCommand.ExecuteReader();

                //open reader
                while (mysqlDataReader.Read())
                {
                    //get pet
                    pet = new PLFPet(mysqlDataReader.GetInt32(0), (PetType)mysqlDataReader.GetInt32(1),
                                     mysqlDataReader.GetString(2));

                    //if is a shared pet
                    if (clientPacketDownloadPet.Shared)
                    {
                        pet.SharePower = sharedPetPower[mysqlDataReader.GetInt32(0)];
                    }
                }
                //close reader
                mysqlDataReader.Close();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            //close reader
            if (mysqlDataReader != null && !mysqlDataReader.IsClosed)
            {
                mysqlDataReader.Close();
            }

            ConsoleHelper.Write("Send - ServerPacketDownloadPet");

            return(new ServerPacketDownloadPet(pet));
        }
        PLFPet pet;                 //pet list

        public ServerPacketDownloadPet(PLFPet pet) : base(PacketType.SERVERPACKETDOWNLOADPET)
        {
            this.pet = pet;
        }
示例#20
0
        PLFPet newPet;                  //pet

        public ClientPacketAddPet(int ownerUserID, PLFPet newPet) : base(PacketType.CLIENTPACKETADDPET)
        {
            this.ownerUserID = ownerUserID;
            this.newPet      = newPet;
        }
示例#21
0
        PLFPet petProfile;              //pet profile

        public ClientPacketUpdatePet(int ownerUserID, PLFPet petProfile) : base(PacketType.CLIENTPACKETUPDATEPET)
        {
            this.petProfile = petProfile;
        }
示例#22
0
        public override Packet OnPacketReceive(Packet receivedPacket)
        {
            ClientPacketDownloadPets clientPacketDownloadPets = receivedPacket as ClientPacketDownloadPets;

            ConsoleHelper.Write("Receive - ClientPacketDownloadPets");

            int userID = clientPacketDownloadPets.UserID;

            List <int> ownPetIdList   = SQLHelper.GetIDList($"SELECT `fkPetID` FROM `T_Own` WHERE `fkUserID`='{userID}'", 0);
            List <int> sharePetIdList = SQLHelper.GetIDList($"SELECT `fkPetID` FROM `T_Share` WHERE `fkReceiverID`='{userID}'", 0);

            Dictionary <int, int> sharedPetPower = SQLHelper.GetPetSharePower(sharePetIdList);

            //download pet
            MySqlCommand downloadPetsCommand = new MySqlCommand();

            downloadPetsCommand.Connection  = Program.mySQLManager.MySQLConnection.MysqlConnection;
            downloadPetsCommand.CommandText = $@"SELECT * FROM `T_Pet` WHERE `petID` IN ({SQLHelper.IntListToString(ownPetIdList)})";

            //OLD
            //downloadPetsCommand.CommandText =
            //  $"SELECT T_Pet.`petID`, T_Pet.`petType`, T_Pet.`petName`, T_Pet.`petAttributs` FROM `T_Pet`, `T_Own` WHERE T_Own.`fkUserID` = '{userID}'";

            MySqlCommand downloadSharedPetsCommand = new MySqlCommand();

            downloadSharedPetsCommand.Connection  = Program.mySQLManager.MySQLConnection.MysqlConnection;
            downloadSharedPetsCommand.CommandText = $@"SELECT * FROM `T_Pet` WHERE `petID` IN ({SQLHelper.IntListToString(sharePetIdList)})";

            //OLD
            //downloadSharedPetsCommand.CommandText =
            //  $"SELECT T_Pet.`petID`, T_Pet.`petType`, T_Pet.`petName`, T_Pet.`petAttributs` FROM `T_Pet`, `T_Share` WHERE T_Share.`fkReceiverID` = '{userID}' ";

            MySqlDataReader mysqlDataReader = null;

            List <PLFPet> petList = new List <PLFPet>();

            try
            {
                //
                //          DOWNLOAD OWN PETS
                //
                if (ownPetIdList.Count > 0)
                {
                    mysqlDataReader = downloadPetsCommand.ExecuteReader();

                    //open reader
                    while (mysqlDataReader.Read())
                    {
                        PLFPet pet = new PLFPet(mysqlDataReader.GetInt32(0), (PetType)mysqlDataReader.GetInt32(1),
                                                mysqlDataReader.GetString(2));

                        //JsonConvert.DeserializeObject<List<PetAttribute>>(mysqlDataReader.GetString(3))

                        //scotch fix. TODO: fix it with sql command
                        if (!ListContains(petList, mysqlDataReader.GetInt32(0)))
                        {
                            petList.Add(pet);
                        }
                    }

                    mysqlDataReader.Close();
                }

                //
                //          DOWNLOAD SHARED PETS
                //

                if (sharePetIdList.Count > 0)
                {
                    mysqlDataReader = downloadSharedPetsCommand.ExecuteReader();

                    //open reader and read shared pets
                    while (mysqlDataReader.Read())
                    {
                        PLFPet pet = new PLFPet(mysqlDataReader.GetInt32(0), (PetType)mysqlDataReader.GetInt32(1),
                                                mysqlDataReader.GetString(2), sharedPetPower[mysqlDataReader.GetInt32(0)]);

                        //scotch fix. TODO: fix it with sql command
                        if (!ListContains(petList, mysqlDataReader.GetInt32(0)))
                        {
                            petList.Add(pet);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            if (mysqlDataReader != null && !mysqlDataReader.IsClosed)
            {
                mysqlDataReader.Close();
            }

            //new List<PLFPet>() { new PLFPet(1, PetType.CAT, "Test", new List<PetAttribute>()) }
            ConsoleHelper.Write("Send - ServerPacketDownloadPets");

            return(new ServerPacketDownloadPets(petList));
        }