Skill.Effect[] ITeammate.GetActivitiesEffects(Team team, CommonSkillSet common_skill_set) { List<Skill.Effect> effects = new List<Skill.Effect>(); List<int> removSkills = new List<int>(); foreach (var pair in _ActivitiesSkills) { var skill = pair.Value; Skill.Effect effect = skill.GetActivitiesEffect(); if (team.Consumer(effect.Demand)) { effects.Add(effect); if (skill.IsConsumed()) { removSkills.Add(pair.Key); _Recover.Add(skill); _Recover.Add(common_skill_set.Licensing()); } } } if (_RemoveEnableEvent != null) _RemoveEnableEvent( (from removeSkill in removSkills select _ActivitiesSkills[removeSkill].ToIndex(removeSkill)).ToArray() ); foreach(var skill in removSkills) { _ActivitiesSkills.Remove(skill); } return effects.ToArray(); }
void ITeammate.Take(CommonSkillSet common_skill_set) { _Idle = new Dictionary<int, Skill>(); _Wait = new Queue<Skill>(); _Recover = new List<Skill>(); foreach (var skill in _Ability.Skills) { _Add(_Idle , SkillResources.Instance.Find(skill)); } var needCount = 10 - _Ability.Skills.Length; for (int i = 0; i < needCount; ++i) { _Add(_Idle , common_skill_set.Licensing()); } for (int i = 0; i < 20; ++i) { _Wait.Enqueue(common_skill_set.Licensing()); } }
public Activists(int order, int remaining, Team.Member member, Team[] targets, CommonSkillSet common_skill_set) { _Remaining = remaining; _CommonSkillSet = common_skill_set; _Targets = targets; this._Member = member; _Member.Teammate.SetBattleThinkTime(LocalTime.Instance.Ticks, (order + 1) * ThinkTime, false); }
private Activists[] _GetSurvivor(Team[] teams, CommonSkillSet common_skill_set) { var members = _Sort(teams); int i = 0; List<Activists> activistss = new List<Activists>(); foreach(var member in members) { activistss.Add(new Activists(i++, members.Count - i, member, (from team in teams where member.Owner != team select team).ToArray(), common_skill_set)); } return activistss.ToArray(); }
public ActionStage(Team[] teams, CommonSkillSet common_skill_set) { _Teams = teams; _Activists = new Queue<Activists>(_GetSurvivor(teams, common_skill_set)); }
private void _Take(Team[] teams, CommonSkillSet common_skill_set) { foreach (var team in teams) { foreach(var member in team.Members) { member.Teammate.Take(common_skill_set); } } }
internal void Initial(Team team1, Team team2) { _CommonSkillSet = new CommonSkillSet(); _CommonSkillSet.Shuffle(); _CommonSkillSet.EmptyEvent += () => { DrawEvent(); }; _Teams = new Team[] { team1 , team2 }; _StageMachine = new Regulus.Game.StageMachine(); _Take(_Teams , _CommonSkillSet); _InitialBroadcasting(_Teams); _ToStrategy(_Teams); }