/// <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); }
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"); } }
/// <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); } } }
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); }