コード例 #1
0
        /// <summary> 组装出招Vo </summary>
        /// <param name="roleid"></param>
        /// <param name="hitids"></param>
        private MovesVo BuildMovesVo(Int64 roleid, List <double> hitids)
        {
            var move = new MovesVo
            {
                attackId = roleid,
                hitIds   = hitids,
                rolesA   = ConvertRoleFightVo(GetRoles(true, true)),
                rolesB   = ConvertRoleFightVo(GetRoles(false, true)),
                times    = Round
            };

            if (!FirstRoles.Any())
            {
                move.yinA = 0;
            }
            else
            {
                var dic = FirstRoles.First();
                move.yinA = AllRoles.ContainsKey(dic.Value) ? YinCount[AllRoles[dic.Value].user_id] : 0;
            }
            if (!AfterRoles.Any())
            {
                move.yinB = 0;
            }
            else
            {
                var dic = AfterRoles.First();
                move.yinB = AllRoles.ContainsKey(dic.Value) ? YinCount[AllRoles[dic.Value].user_id] : 0;
            }
            return(move);
        }
コード例 #2
0
        public void AddRole(string role, AspectDependencyPosition position)
        {
            if (ContainsRole(role))
            {
                throw new InvalidOperationException(
                          string.Format("Aspect '{0}' already defined role '{1}'",
                                        Aspect.AspectAttribute.AttributeType.Name,
                                        role));
            }

            switch (position)
            {
            case AspectDependencyPosition.Before:
                BeforeRoles.Add(role);
                break;

            case AspectDependencyPosition.Any:
                AnyRoles.Add(role);
                break;

            case AspectDependencyPosition.After:
                AfterRoles.Add(role);
                break;

            default:
                throw new ArgumentOutOfRangeException("position");
            }
        }
コード例 #3
0
 /// <summary> 给全局前后手赋值 </summary>
 /// <param name="model"></param>
 /// <param name="flag">是否先手</param>
 private void GiveFirstAfter(PlayMatrix model, bool flag)
 {
     if (model.r1 != null)
     {
         if (flag)
         {
             FirstRoles.Add(1, model.r1.id);
         }
         else
         {
             AfterRoles.Add(1, model.r1.id);
         }
     }
     if (model.r2 != null)
     {
         if (flag)
         {
             FirstRoles.Add(2, model.r2.id);
         }
         else
         {
             AfterRoles.Add(2, model.r2.id);
         }
     }
     if (model.r3 != null)
     {
         if (flag)
         {
             FirstRoles.Add(3, model.r3.id);
         }
         else
         {
             AfterRoles.Add(3, model.r3.id);
         }
     }
     if (model.r4 != null)
     {
         if (flag)
         {
             FirstRoles.Add(4, model.r4.id);
         }
         else
         {
             AfterRoles.Add(4, model.r4.id);
         }
     }
     if (model.r5 != null)
     {
         if (flag)
         {
             FirstRoles.Add(5, model.r5.id);
         }
         else
         {
             AfterRoles.Add(5, model.r5.id);
         }
     }
 }
コード例 #4
0
        public int GetOrderIndex(Dictionary <string, int> roleIndexMapping)
        {
            var minIndex = 0;

            if (AfterRoles.Count != 0)
            {
                var afterRolesIndexes = AfterRoles
                                        .Where(roleIndexMapping.ContainsKey)
                                        .Select(x => roleIndexMapping[x])
                                        .ToList();

                if (afterRolesIndexes.Count != 0)
                {
                    minIndex = afterRolesIndexes.Max() + 1;
                }
            }

            var maxIndex = int.MaxValue;

            if (BeforeRoles.Count != 0)
            {
                var beforeRolesIndexes = BeforeRoles
                                         .Where(roleIndexMapping.ContainsKey)
                                         .Select(x => roleIndexMapping[x])
                                         .ToList();

                if (beforeRolesIndexes.Count != 0)
                {
                    maxIndex = beforeRolesIndexes.Min() - 1;
                }
            }

            if (minIndex > maxIndex)
            {
                throw new InvalidOperationException();
            }

            return(minIndex);
        }