/// <summary>
        /// 倒置
        /// </summary>
        public void Reverse()
        {
            PublicInfo  TempPublic  = AllRole.MyPublicInfo;
            PrivateInfo TempPrivate = AllRole.MyPrivateInfo;

            AllRole.MyPublicInfo    = AllRole.YourPublicInfo;
            AllRole.MyPrivateInfo   = AllRole.YourPrivateInfo;
            AllRole.YourPublicInfo  = TempPublic;
            AllRole.YourPrivateInfo = TempPrivate;
            //关于方向的设置,还有战场位置
            AllRole.MyPublicInfo.Hero.战场位置.本方对方标识   = true;
            AllRole.YourPublicInfo.Hero.战场位置.本方对方标识 = false;
            foreach (var minion in AllRole.MyPublicInfo.BattleField.BattleMinions)
            {
                if (minion != null)
                {
                    minion.战场位置.本方对方标识 = true;
                }
            }
            foreach (var minion in AllRole.YourPublicInfo.BattleField.BattleMinions)
            {
                if (minion != null)
                {
                    minion.战场位置.本方对方标识 = false;
                }
            }
        }
Beispiel #2
0
        public static string[] GrabClientData(string IP)
        {
            string[] t = new string[10]; //might add more data later

            var url     = "http://api.ipstack.com/" + IP + "?access_key=" + PrivateInfo.getRandomKey(GetRandomInt());
            var request = WebRequest.Create(url);

            using (var w = new WebClient())
            {
                var json_data = string.Empty;
                try
                {
                    json_data = w.DownloadString(url);
                    JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
                    var result = jsSerializer.DeserializeObject(json_data);
                    Dictionary <string, object> obj2 = new Dictionary <string, object>();
                    obj2 = (Dictionary <string, object>)(result);

                    //Sometimes ipstack would be unable to determine some values, so try/catch is needed
                    try { t[0] = obj2["country_name"].ToString(); }
                    catch { t[0] = "Null Value"; }

                    try { t[1] = obj2["region_code"].ToString(); }
                    catch { t[1] = "Null Value"; }

                    try { t[2] = obj2["city"].ToString(); }
                    catch { t[2] = "Null Value"; }
                }
                catch
                {
                }
            }
            return(t);
        }
Beispiel #3
0
        /// <summary>
        /// 获得一个动作
        /// </summary>
        /// <param name="gameStatus"></param>
        /// <returns></returns>
        public static void GetAction(ActionStatus gameStatus)
        {
            String        Action       = String.Empty;
            PublicInfo    PlayInfo     = gameStatus.AllRole.MyPublicInfo;
            PrivateInfo   PlaySelfInfo = gameStatus.AllRole.MyPrivateInfo;
            List <String> Result       = new List <string>();

            //优先使用技能
            if (PlayInfo.IsHeroSkillEnable(true))
            {
                //召唤
                if (PlayInfo.Hero.HeroSkill.FirstAbilityDefine.MainAbilityDefine.TrueAtomicEffect.AtomicEffectType ==
                    Effect.AtomicEffectDefine.AtomicEffectEnum.召唤 &&
                    PlayInfo.BattleField.MinionCount != SystemManager.MaxMinionCount)
                {
                    gameStatus.Interrupt.ActionCard = new MinimizeBattleInfo.HandCardInfo();
                    gameStatus.Interrupt.ActionCard.Init(PlayInfo.Hero.HeroSkill);
                    gameStatus.ActionName                = "USEHEROSKILL";
                    gameStatus.Interrupt.Step            = 1;
                    gameStatus.Interrupt.ActionName      = "SPELL";
                    PlayInfo.crystal.CurrentRemainPoint -= PlayInfo.Hero.HeroSkill.使用成本;
                    PlayInfo.Hero.IsUsedHeroAbility      = true;
                    RunAction.StartActionCS(gameStatus, PlayInfo.Hero.HeroSkill.序列号, new string[] { });
                    gameStatus.Interrupt.ActionName = "SPELL";
                    return;
                }
            }
            //能上场的随从都上场
            int HandCardIndex = HasBattleMinion(gameStatus);

            if (HandCardIndex != -1)
            {
                int newPos = PlayInfo.BattleField.MinionCount + 1;
                var card   = PlaySelfInfo.handCards[HandCardIndex];
                RunAction.StartActionCS(gameStatus, card.序列号, new string[] { newPos.ToString() });
                PlayInfo.crystal.CurrentRemainPoint -= card.使用成本;
                PlaySelfInfo.RemoveUsedCard(card.序列号);
                PlayInfo.HandCardCount          = PlaySelfInfo.handCards.Count;
                gameStatus.Interrupt.ActionCard = new MinimizeBattleInfo.HandCardInfo();
                gameStatus.Interrupt.ActionCard.Init(card);
                gameStatus.Interrupt.ActionName = "MINION";
                return;
            }
            //能攻击的随从都攻击,优先攻击英雄
            int AttackPos = HasAttackMinion(gameStatus);

            if (AttackPos != -1)
            {
                int BeAttackedPos = GetAttackTarget(gameStatus);
                RunAction.Fight(gameStatus, AttackPos, BeAttackedPos, true);
                gameStatus.Interrupt.ActionName   = "FIGHT";
                gameStatus.Interrupt.ExternalInfo = AttackPos.ToString() + BeAttackedPos.ToString();
                return;
            }
            gameStatus.Interrupt.ActionName = ActionCode.strEndTurn;
        }
        public ApiSimulatorController(IOptions <MyRequest> myRequest, IOptions <PrivateInfo> privateInfo)
        {
            _myRequest   = myRequest.Value;
            _privateInfo = privateInfo.Value;

            //格式化Json
            _myRequest.ApiRequests.ToList().ForEach(s =>
            {
                if (s.Methord == "POST")
                {
                    s.ApiDatas = s.ApiDatas.ToJsonString();
                }
            });
        }
Beispiel #5
0
        /// <summary>
        /// 能上场的随从
        /// </summary>
        /// <returns></returns>
        private static int HasBattleMinion(ActionStatus gameStatus)
        {
            PrivateInfo PlaySelfInfo = gameStatus.AllRole.MyPrivateInfo;
            PublicInfo  PlayInfo     = gameStatus.AllRole.MyPublicInfo;

            if (PlayInfo.BattleField.MinionCount == SystemManager.MaxMinionCount)
            {
                return(-1);
            }
            for (int i = 0; i < PlaySelfInfo.handCards.Count; i++)
            {
                var card = PlaySelfInfo.handCards[i];
                if (card.卡牌种类 == Card.CardBasicInfo.资源类型枚举.随从)
                {
                    if (card.使用成本 <= PlayInfo.crystal.CurrentRemainPoint)
                    {
                        return(i);
                    }
                }
            }
            return(-1);
        }
Beispiel #6
0
 public ApiSimulatorController(IOptions <MyRequest> myRequest, IOptions <PrivateInfo> privateInfo)
 {
     _myRequest   = myRequest.Value;
     _privateInfo = privateInfo.Value;
 }
Beispiel #7
0
 public SiteAnalyticsController(IOptions <MyRequest> myRequest, IOptions <PrivateInfo> privateInfo)
 {
     _requests    = myRequest.Value.ApiRequests;
     _privateInfo = privateInfo.Value;
 }