/// <summary> /// Get ActorRoles mapped to roles held in RoleFilter Flags /// </summary> /// <param name="role">RoleFilter</param> /// <returns>List of IfcActorRole</returns> private List <IfcActorRole> GetActorRoles(RoleFilter role) { if (RoleMap == null) { RoleMap = new Dictionary <RoleFilter, IfcActorRole>(); } List <IfcActorRole> actorRoles = new List <IfcActorRole>(); if (role.HasFlag(RoleFilter.Architectural)) { actorRoles.Add(RoleMap.ContainsKey(RoleFilter.Architectural) ? RoleMap[RoleFilter.Architectural] : MapRole(RoleFilter.Architectural, IfcRole.Architect)); } if (role.HasFlag(RoleFilter.Mechanical)) { actorRoles.Add(RoleMap.ContainsKey(RoleFilter.Mechanical) ? RoleMap[RoleFilter.Mechanical] : MapRole(RoleFilter.Mechanical, IfcRole.MechanicalEngineer)); } if (role.HasFlag(RoleFilter.Electrical)) { actorRoles.Add(RoleMap.ContainsKey(RoleFilter.Electrical) ? RoleMap[RoleFilter.Electrical] : MapRole(RoleFilter.Electrical, IfcRole.ElectricalEngineer)); } if (role.HasFlag(RoleFilter.Plumbing)) { actorRoles.Add(RoleMap.ContainsKey(RoleFilter.Plumbing) ? RoleMap[RoleFilter.Plumbing] : MapRole(RoleFilter.Plumbing, IfcRole.UserDefined)); } if (role.HasFlag(RoleFilter.FireProtection)) { actorRoles.Add(RoleMap.ContainsKey(RoleFilter.FireProtection) ? RoleMap[RoleFilter.FireProtection] : MapRole(RoleFilter.FireProtection, IfcRole.UserDefined)); } if (role.HasFlag(RoleFilter.Unknown)) { actorRoles.Add(RoleMap.ContainsKey(RoleFilter.Unknown) ? RoleMap[RoleFilter.Unknown] : MapRole(RoleFilter.Unknown, IfcRole.UserDefined)); } return(actorRoles); }
/// <summary> /// Get ActorRoles mapped to roles held in RoleFilter Flags /// </summary> /// <param name="role">RoleFilter</param> /// <returns>List of IfcActorRole</returns> private List <IIfcActorRole> GetActorRoles(RoleFilter role) { if (RoleMap == null) { RoleMap = new Dictionary <RoleFilter, IIfcActorRole>(); } var actorRoles = new List <IIfcActorRole>(); using (var tx = Model.BeginTransaction("RoleSettings")) { if (role.HasFlag(RoleFilter.Architectural)) { actorRoles.Add( RoleMap.ContainsKey(RoleFilter.Architectural) ? RoleMap[RoleFilter.Architectural] : MapRole(RoleFilter.Architectural, IfcRoleEnum.ARCHITECT)); } if (role.HasFlag(RoleFilter.Mechanical)) { actorRoles.Add( RoleMap.ContainsKey(RoleFilter.Mechanical) ? RoleMap[RoleFilter.Mechanical] : MapRole(RoleFilter.Mechanical, IfcRoleEnum.MECHANICALENGINEER)); } if (role.HasFlag(RoleFilter.Electrical)) { actorRoles.Add( RoleMap.ContainsKey(RoleFilter.Electrical) ? RoleMap[RoleFilter.Electrical] : MapRole(RoleFilter.Electrical, IfcRoleEnum.ELECTRICALENGINEER)); } if (role.HasFlag(RoleFilter.Plumbing)) { actorRoles.Add( RoleMap.ContainsKey(RoleFilter.Plumbing) ? RoleMap[RoleFilter.Plumbing] : MapRole(RoleFilter.Plumbing, IfcRoleEnum.USERDEFINED)); } if (role.HasFlag(RoleFilter.FireProtection)) { actorRoles.Add( RoleMap.ContainsKey(RoleFilter.FireProtection) ? RoleMap[RoleFilter.FireProtection] : MapRole(RoleFilter.FireProtection, IfcRoleEnum.USERDEFINED)); } if (role.HasFlag(RoleFilter.Unknown)) { actorRoles.Add( RoleMap.ContainsKey(RoleFilter.Unknown) ? RoleMap[RoleFilter.Unknown] : MapRole(RoleFilter.Unknown, IfcRoleEnum.USERDEFINED)); } tx.Commit(); } return(actorRoles); }
/// <summary> /// 生存している人狼のリストを取得する /// (自分が人狼のとき、及びゲーム終了後のみ結果を取得できる) /// </summary> /// <returns></returns> public List <Agent> GetAliveWerewolf() { List <Agent> ret = new List <Agent>(); foreach (Agent agent in latestGameInfo.AliveAgentList) { if (RoleMap.ContainsKey(agent) && RoleMap[agent] == Role.WEREWOLF) { ret.Add(agent); } } return(ret); }