Example #1
0
    private void OnStartActivityRes(StartRes res)
    {
        //先更新GlobaData的数据,然后回到应援活动界面!
        LoadingOverlay.Instance.Hide();
        FlowText.ShowMessage(I18NManager.Get("SupporterActivity_StartSuccess") + SupporterActivityModel.EncourageRuleDic[res.UserEncourageActivity.ActId].Title);
        //GlobalData.PlayerModel.UpdateUserPower(res.UserPower);
//		Debug.LogError(res.UserEncourageActivity);
        GlobalData.PropModel.UpdateProps(res.UserItems);

        //就这里可能出现问题!
        foreach (var v in res.UserFans)
        {
            GlobalData.DepartmentData.UpdateFansWithNum(v.FansType, v.Num);
        }
        SupporterActivityModel.UpdateEncourageActs(res.UserEncourageActivity);
        SupporterActivityModel.GetUserActVo(res.UserEncourageActivity.Id).NeedToChangeAni = true;
        SendMessage(new Message(MessageConst.CMD_SUPPORTERACTIVITY_STARTSUCCESS, res.LeftInterCount));

        EventDispatcher.TriggerEvent(EventConst.UpdateEnergy);
        SendMessage(new Message(MessageConst.MOUDLE_GUIDE_SUPPORTERACT_STARTSUCCESS));
    }
Example #2
0
        // Main function. It is capable of invoking new workers, adding and removing clients and transfering requests and replies between them
        public void Broker()
        {
            ZMessage incoming;
            ZError   error;
            var      poll = ZPollItem.CreateReceiver();

            while (!_stopLoops)
            {
                if (workers_socket.PollIn(poll, out incoming, out error, TimeSpan.FromMilliseconds(64)))
                {
                    string worker_id = incoming[0].ReadString();
                    workers.Add(worker_id);

                    string client_id = incoming[2].ReadString();

                    if (client_id != "READY")
                    {
                        using (var outgoing = new ZMessage())
                        {
                            var response = Serializer.Deserialize <Response>(incoming[4]);
                            var res      = response as ClaimRes;
                            if (res.Ok)
                            {
                                //Console.WriteLine(res.Ok.ToString() + " " + res.Position[0].ToString() + " " + res.Position[1].ToString() + " " + res.UserId.ToString());
                                playfield[res.Position[0] - 1, res.Position[1] - 1] = res.UserId;
                            }

                            outgoing.Add(incoming[2]);
                            outgoing.Add(new ZFrame());
                            outgoing.Add(incoming[4]);

                            users_socket.Send(outgoing);
                            requests++;
                        }
                    }
                }
                if (workers.Count > 0)
                {
                    while (toRemove > 0)
                    {
                        toRemove--;

                        var request = new StartReq()
                        {
                            desire = true
                        };
                        using (var message = new ZMessage())
                            using (var responseStream = new MemoryStream())
                            {
                                message.Add(new ZFrame(workers[0]));
                                message.Add(new ZFrame());
                                message.Add(new ZFrame());
                                message.Add(new ZFrame());

                                Serializer.Serialize(responseStream, request);

                                message.Add(new ZFrame(responseStream.ToArray()));

                                workers_socket.Send(message);
                            }
                        while (workers.Count == 0)
                        {
                            Thread.Sleep(10);
                        }
                    }

                    if (users_socket.PollIn(poll, out incoming, out error, TimeSpan.FromMilliseconds(64)))
                    {
                        using (var receivedFrame = incoming[2])
                        {
                            var request = Serializer.Deserialize <Request>(receivedFrame);
                            //Console.WriteLine(request.RequesType);
                            switch (request.RequesType)
                            {
                            case RequesType.ClaimReq:
                            {
                                using (var outgoing = new ZMessage())
                                {
                                    outgoing.Add(new ZFrame(workers[0]));
                                    outgoing.Add(new ZFrame());
                                    outgoing.Add(incoming[0]);
                                    outgoing.Add(new ZFrame());
                                    outgoing.Add(incoming[2]);

                                    workers_socket.Send(outgoing);
                                }
                                workers.RemoveAt(0);
                                break;
                            }

                            case RequesType.StartReq:
                            {
                                var sr = request as StartReq;
                                //Console.WriteLine(request.RequesType);
                                var response = new StartRes();
                                response.size = size;

                                if (sr.desire)
                                {
                                    if (users.Contains(request.UserId))
                                    {
                                        response.Ok = false;
                                    }
                                    else
                                    {
                                        response.Ok       = true;
                                        response.Position = new List <int>
                                        {
                                            _random.Next(0, size),
                                            _random.Next(0, size)
                                        };
                                        users.Add(request.UserId);
                                        playfield[response.Position[0], response.Position[1]] = request.UserId;
                                        requests++;
                                        if ((users.Count == 2) || (users.Count / 10 > workerCount))
                                        {
                                            Process.Start(workersList[workerCount % workersList.Count], size.ToString() + " " + (++workerCount).ToString() + " " + myAdress);

                                            Console.WriteLine("New worker added, id: " + workerCount);
                                        }
                                        Console.WriteLine("New user added, id: {0}, symbol: {0}", request.UserId);
                                    }
                                }
                                else
                                {
                                    users.Remove(request.UserId);
                                    if (users.Count == 1 || ((users.Count) % 10 == 0 && users.Count > 0))
                                    {
                                        toRemove++;
                                    }
                                    Console.WriteLine("User removed, id: {0}, symbol: {0}", request.UserId);
                                    response.Ok = true;
                                    for (int i = 0; i < size; ++i)
                                    {
                                        for (int j = 0; j < size; ++j)
                                        {
                                            if (playfield[i, j] == request.UserId)
                                            {
                                                playfield[i, j] = 0;
                                            }
                                        }
                                    }
                                }
                                using (var responseStream = new MemoryStream())
                                    using (var outgoing = new ZMessage())
                                    {
                                        Serializer.Serialize(responseStream, response);

                                        outgoing.Add(incoming[0]);
                                        outgoing.Add(new ZFrame());
                                        outgoing.Add(new ZFrame(responseStream.ToArray()));

                                        users_socket.Send(outgoing);
                                    }

                                break;
                            }
                            }
                        }
                    }
                }
            }
        }