Пример #1
0
        /// <summary>
        /// 用于自己位置的初始化,实际上这个才是真正的初始化!在AddNewPlayer或者update以前,需要将self的others初始化
        /// </summary>
        /// <param name="getPosition">传入参数</param>
        /// <param name="fromUrl">返回的url</param>
        /// <param name="webSocketID">websocketID</param>
        /// <param name="fp">地点</param>
        /// <param name="carsNames"></param>
        /// <returns></returns>
        internal async Task <GetPositionResult> GetPosition(GetPosition getPosition)
        {
            GetPositionResult result;

            int OpenMore   = -1;//第一次打开?
            var notifyMsgs = new List <string>();

            lock (this.PlayerLock)
            {
                if (this._Players.ContainsKey(getPosition.Key))
                {
                    var fp          = Program.dt.GetFpByIndex(this._Players[getPosition.Key].StartFPIndex);
                    var fromUrl     = this._Players[getPosition.Key].FromUrl;
                    var webSocketID = this._Players[getPosition.Key].WebSocketID;
                    var carsNames   = this._Players[getPosition.Key].CarsNames;
                    var playerName  = this._Players[getPosition.Key].PlayerName;

                    /*
                     * 这已经走查过,在AddNewPlayer、UpdatePlayer时,others都进行了初始化
                     */
                    AddOtherPlayer(getPosition.Key, ref notifyMsgs);
                    this.brokenParameterT1RecordChanged(getPosition.Key, getPosition.Key, this._Players[getPosition.Key].brokenParameterT1, ref notifyMsgs);
                    GetAllCarInfomationsWhenInitialize(getPosition.Key, ref notifyMsgs);
                    //getAllCarInfomations(getPosition.Key, ref notifyMsgs);
                    OpenMore = this._Players[getPosition.Key].OpenMore;

                    var player = this._Players[getPosition.Key];
                    //var m2 = player.GetMoneyCanSave();

                    //    MoneyCanSaveChanged(player, m2, ref notifyMsgs);

                    SendPromoteCountOfPlayer("mile", player, ref notifyMsgs);
                    SendPromoteCountOfPlayer("business", player, ref notifyMsgs);
                    SendPromoteCountOfPlayer("volume", player, ref notifyMsgs);
                    SendPromoteCountOfPlayer("speed", player, ref notifyMsgs);

                    BroadCoastFrequency(player, ref notifyMsgs);
                    player.SetMoneyCanSave(player, ref notifyMsgs);

                    // player.RunSupportChangedF(ref notifyMsgs);
                    //player.this._Players[addItem.Key].SetMoneyCanSave = RoomMain.SetMoneyCanSave;
                    //MoneyCanSaveChanged(player, player.MoneyForSave, ref notifyMsgs);

                    SendMaxHolderInfoMation(player, ref notifyMsgs);

                    var players = this._Players;
                    foreach (var item in players)
                    {
                        if (item.Value.TheLargestHolderKey == player.Key)
                        {
                            player.TheLargestHolderKeyChanged(item.Key, item.Value.TheLargestHolderKey, item.Key, ref notifyMsgs);
                        }
                    }
                    var list = player.usedRoadsList;
                    for (var i = 0; i < list.Count; i++)
                    {
                        this.DrawSingleRoadF(player, list[i], ref notifyMsgs);
                    }

                    //this._Players[getPosition.Key];
                    this._Players[getPosition.Key].MoneyChanged(this._Players[getPosition.Key], this._Players[getPosition.Key].Money, ref notifyMsgs);

                    result = new GetPositionResult()
                    {
                        Success     = true,
                        CarsNames   = carsNames,
                        Fp          = fp,
                        FromUrl     = fromUrl,
                        NotifyMsgs  = notifyMsgs,
                        WebSocketID = webSocketID,
                        PlayerName  = playerName
                    };
                }
                else
                {
                    result = new GetPositionResult()
                    {
                        Success = false
                    };
                }
            }

            if (OpenMore == 0)
            {
                await CheckAllPromoteState(getPosition.Key);
                await CheckCollectState(getPosition.Key);
                await sendCarAbilityState(getPosition.Key);
                await sendCarStateAndPurpose(getPosition.Key);
                await TellOtherPlayerMyFatigueDegree(getPosition.Key);
                await TellMeOtherPlayersFatigueDegree(getPosition.Key);
                await TellMeOthersRightAndDuty(getPosition.Key);
            }
            else if (OpenMore > 0)
            {
                await CheckAllPromoteState(getPosition.Key);
                await CheckCollectState(getPosition.Key);
                await SendAllTax(getPosition.Key);

                await sendCarAbilityState(getPosition.Key);
                await sendCarStateAndPurpose(getPosition.Key);
                await TellOtherPlayerMyFatigueDegree(getPosition.Key);
                await TellMeOtherPlayersFatigueDegree(getPosition.Key);
                await TellMeOthersRightAndDuty(getPosition.Key);

                //   await sendPlayerFatigueDegree(getPosition.Key);
                //for(var i=0;i<)
                //AbilityChanged(player, car, ref notifyMsg, "business");
                //AbilityChanged(player, car, ref notifyMsg, "volume");
                //AbilityChanged(player, car, ref notifyMsg, "mile");
            }
            return(result);
        }
Пример #2
0
        public GetPositionResult GetPosition(GetPosition getPosition)
        {
            GetPositionResult result;

            int OpenMore   = -1;//第一次打开?
            var notifyMsgs = new List <string>();

            lock (this.PlayerLock)
            {
                if (this._Players.ContainsKey(getPosition.Key))
                {
                    if (this._Players[getPosition.Key].playerType == RoleInGame.PlayerType.player)
                    {
                        var player      = (Player)this._Players[getPosition.Key];
                        var fp          = Program.dt.GetFpByIndex(this._Players[getPosition.Key].StartFPIndex);
                        var fromUrl     = player.FromUrl;
                        var webSocketID = player.WebSocketID;
                        //var carsNames = this._Players[getPosition.Key].CarsNames;
                        var playerName = this._Players[getPosition.Key].PlayerName;

                        /*
                         * 这已经走查过,在AddNewPlayer、UpdatePlayer时,others都进行了初始化
                         */
                        AddOtherPlayer(getPosition.Key, ref notifyMsgs);
                        //   this.brokenParameterT1RecordChanged(getPosition.Key, getPosition.Key, this._Players[getPosition.Key].brokenParameterT1, ref notifyMsgs);
                        GetAllCarInfomationsWhenInitialize(getPosition.Key, ref notifyMsgs);
                        //getAllCarInfomations(getPosition.Key, ref notifyMsgs);
                        OpenMore = ((Player)this._Players[getPosition.Key]).OpenMore;

                        // var player = this._Players[getPosition.Key];
                        //var m2 = player.GetMoneyCanSave();

                        //    MoneyCanSaveChanged(player, m2, ref notifyMsgs);

                        SendPromoteCountOfPlayer("mile", player, ref notifyMsgs);
                        SendPromoteCountOfPlayer("business", player, ref notifyMsgs);
                        SendPromoteCountOfPlayer("volume", player, ref notifyMsgs);
                        SendPromoteCountOfPlayer("speed", player, ref notifyMsgs);

                        //   BroadCoastFrequency(player, ref notifyMsgs);
                        player.SetMoneyCanSave(player, ref notifyMsgs);

                        // player.RunSupportChangedF(ref notifyMsgs);
                        //player.this._Players[addItem.Key].SetMoneyCanSave = RoomMain.SetMoneyCanSave;
                        //MoneyCanSaveChanged(player, player.MoneyForSave, ref notifyMsgs);

                        SendMaxHolderInfoMation(player, ref notifyMsgs);

                        var players = this._Players;
                        foreach (var item in players)
                        {
                            if (item.Value.TheLargestHolderKey == player.Key)
                            {
                                player.TheLargestHolderKeyChanged(item.Key, item.Value.TheLargestHolderKey, item.Key, ref notifyMsgs);
                            }
                        }
                        var list = player.usedRoadsList;
                        for (var i = 0; i < list.Count; i++)
                        {
                            this.DrawSingleRoadF(player, list[i], ref notifyMsgs);
                        }

                        //this._Players[getPosition.Key];
                        ((Player)this._Players[getPosition.Key]).MoneyChanged(player, this._Players[getPosition.Key].Money, ref notifyMsgs);
                        ((Player)this._Players[getPosition.Key]).ShowLevelOfPlayerDetail(ref notifyMsgs);
                        this.DriverSelected(this._Players[getPosition.Key], this._Players[getPosition.Key].getCar(), ref notifyMsgs);
                        result = new GetPositionResult()
                        {
                            Success = true,
                            //CarsNames = carsNames,
                            Fp                = fp,
                            FromUrl           = fromUrl,
                            NotifyMsgs        = notifyMsgs,
                            WebSocketID       = webSocketID,
                            PlayerName        = playerName,
                            positionInStation = this._Players[getPosition.Key].positionInStation,
                            fPIndex           = this._Players[getPosition.Key].StartFPIndex
                        };
                    }
                    else
                    {
                        result = new GetPositionResult()
                        {
                            Success = false
                        }
                    };
                }
                else
                {
                    result = new GetPositionResult()
                    {
                        Success = false
                    };
                }
            }

            if (OpenMore == 0)
            {
                CheckAllPromoteState(getPosition.Key);
                CheckCollectState(getPosition.Key);
                sendCarAbilityState(getPosition.Key);
                sendCarStateAndPurpose(getPosition.Key);
            }
            else if (OpenMore > 0)
            {
                CheckAllPromoteState(getPosition.Key);
                CheckCollectState(getPosition.Key);

                sendCarAbilityState(getPosition.Key);
                sendCarStateAndPurpose(getPosition.Key);
            }
            return(result);
        }