private void FreezeCompanions(int amount) { List <int> list = new List <int>(); for (int i = 1; i < Singleton <HeroUnlockRunner> .Instance.NumUnlockedHeroes.Value; i++) { if (!frozenCompanions.Contains(i)) { list.Add(i); } } int count = list.Count; for (int j = 0; j < amount && j < count; j++) { int freezeIndex = list[UnityEngine.Random.Range(0, list.Count)]; AbstractCreatureController orCreateCreature = Singleton <CreatureCollectionRunner> .Instance.GetOrCreateCreature(freezeIndex); orCreateCreature.Freeze(); frozenCompanions.Add(freezeIndex); list.Remove(freezeIndex); (from index in Singleton <DrJellyRunner> .Instance.UnfrozenCompanionIndex.Skip(1) where index == freezeIndex select index).Take(1).Subscribe(delegate(int index) { frozenCompanions.Remove(index); }).AddTo(this); } }
private AbstractCreatureController CreateCreature(int heroIndex) { GameObject gameObject = Singleton <PropertyManager> .Instance.InstantiateFromResources(GetPrefabPath(heroIndex), Vector3.zero, Quaternion.identity, null); AbstractCreatureController componentInChildren = gameObject.GetComponentInChildren <AbstractCreatureController>(); componentInChildren.Init(heroIndex, CreatureStateEnum.Enter); return(componentInChildren); }
public bool CollidesAnyAliveExcept(Vector3 pos, int heroIndex) { for (int i = 0; i < Singleton <EconomyHelpers> .Instance.GetNumHeroes(); i++) { if (i != heroIndex) { HeroRunner orCreateHeroRunner = Singleton <HeroTeamRunner> .Instance.GetOrCreateHeroRunner(i); if (!orCreateHeroRunner.Found.Value) { return(false); } AbstractCreatureController orCreateCreature = GetOrCreateCreature(i); if (orCreateCreature.Collides(pos)) { return(true); } } } return(false); }
private Vector3 GetHeroPosition(int heroIndex) { AbstractCreatureController orCreateCreature = Singleton <CreatureCollectionRunner> .Instance.GetOrCreateCreature(heroIndex); return(orCreateCreature.GetTargetPosition()); }