コード例 #1
0
ファイル: ResourceConnector.cs プロジェクト: dianatatu/REACH
        public static void VoteResource(ResourceVoteData oldResVote, ResourceVoteData resVote)
        {
            ResourceData res        = GetResource(resVote.Id_Resource);
            double       adjustment = 0;

            if (oldResVote != null)
            {
                if (oldResVote.Value < 3)
                {
                    adjustment += (double)(3 - oldResVote.Value) * Ranking.RESOURCE_VOTE_POINT_VALUE;
                }
                else
                {
                    adjustment += -(double)(oldResVote.Value - 2) * Ranking.RESOURCE_VOTE_POINT_VALUE;
                }
            }
            if (resVote.Value < 3)
            {
                adjustment += -(double)(3 - resVote.Value) * Ranking.RESOURCE_VOTE_POINT_VALUE;
            }
            else
            {
                adjustment += (double)(resVote.Value - 2) * Ranking.RESOURCE_VOTE_POINT_VALUE;
            }

            UpdateResourceRank(res, adjustment);
        }
コード例 #2
0
        public void VoteResource(ResourceData resource, int value)
        {
            model.My_Votes[resource.Id] = value;
            ResourceVoteData resVote = new ResourceVoteData(resource.Id, LoggedInUserModel.Instance.User.Id, value);
            RMessage         msg     = new RMessage(MessageType.VOTE_RESOURCE_REQUEST, resVote);

            Service.Instance.AddMessage(msg);
            CheckResourceVote(resource);
        }
コード例 #3
0
        /* The CheckResourceVote MessageHandler
         * It handles messages of RANK_CHECK_RESOURCE_VOTE_REQUEST type.
         */
        private static void CheckResourceVote(RMessage message, TcpClient connection)
        {
            Console.WriteLine("CheckResourceVote");
            UserData         usr          = (UserData)(((List <Object>)message.Data)[0]);
            ResourceData     res          = (ResourceData)(((List <Object>)message.Data)[1]);
            ResourceVoteData resVote      = ResourceVoteConnector.CheckResourceVote(usr, res);
            List <Object>    replyContent = new List <Object>();

            replyContent.Add(usr);
            replyContent.Add(res);
            replyContent.Add(resVote);
            RMessage replyMessage = new RMessage(MessageType.RANK_CHECK_RESOURCE_VOTE_REPLY, replyContent);

            ServerCore.GetWorkerByConnection(connection).SendMessage(replyMessage);
        }
コード例 #4
0
        public void OnCheckResourceVote(RMessage message)
        {
            ResourceData     res     = (ResourceData)(((List <Object>)message.Data)[1]);
            ResourceVoteData resVote = (ResourceVoteData)(((List <Object>)message.Data)[2]);

            if (model.My_Votes.ContainsKey(res.Id))
            {
                model.My_Votes[res.Id] = resVote.Value;
            }
            else
            {
                model.My_Votes.Add(res.Id, resVote.Value);
            }

            ResourceVoteChecked(model);
        }
コード例 #5
0
        /* The ResourceVote MessageHandler
         * It handles messages of VOTE_RESOURCE_REQUEST type.
         */
        private static void ResourceVote(RMessage message, TcpClient connection)
        {
            Console.WriteLine("VoteResource");
            ResourceVoteData resVote = (ResourceVoteData)message.Data;

            ResourceVoteData oldResVote = ResourceVoteConnector.UpdateVote(resVote);

            ResourceConnector.VoteResource(oldResVote, resVote);
            UserConnector.UpdateUserRank(ServerCore.GetIdByConnection(connection), Ranking.USER_VOTED_RESOURCE_VALUE);

            ResourceData editedResource = ResourceConnector.GetResource(resVote.Id_Resource);

            RMessage            replyMessage = new RMessage(MessageType.EDIT_RESOURCE_REPLY, editedResource);
            List <ClientWorker> clientList   = ServerCore.GetAllWorkers();

            foreach (ClientWorker client in clientList)
            {
                client.SendMessage(replyMessage);
            }
        }