예제 #1
0
        IEnumerator ConsumingFood()
        {
            ReusableWaitForSecondsEnumerator wait = new ReusableWaitForSecondsEnumerator(0.1f);

            while (true)
            {
                var mealStructs =
                    entitiesDB.QueryEntities <MealEntityStruct>(GameGroups.FOOD, out var foodcount);

                for (var j = 0; j < foodcount; j++)
                {
                    mealStructs[j].mealLeft -= mealStructs[j].eaters;

                    mealStructs[j].eaters = 0;

                    if (mealStructs[j].mealLeft <= 0)
                    {
                        _entityFunctions.RemoveEntity <FoodEntityDescriptor>(mealStructs[j].ID);
                    }
                }

                while (wait.IsDone() == false)
                {
                    yield return(Yield.It);
                }
            }
        }
                protected override void Add(BehaviourEntityViewForSimpleEntity entity)
                {
#if !PROFILE
                    Utility.Console.Log("EntityView Added");

                    _entityFunctions.RemoveEntity <SimpleEntityDescriptor>(entity.ID);
#endif
                }
                    protected override void Add(BehaviourEntityViewForEntity entity)
                    {
                        if (entity.simpleComponent.isInGroup == false)
                        {
                            Console.Log("EntityView Added");

                            _entityFunctions.RemoveEntity(entity.ID);
                        }
                        else
                        {
                            Console.Log("Grouped EntityView Added");

                            _entityFunctions.SwapEntityGroup(entity.ID, 0, 1);
                            Console.Log("Grouped EntityView Swapped");
                            _entityFunctions.RemoveEntity(entity.ID);
                        }
                    }
        IEnumerator CheckIfDead()
        {
            while (true)
            {
                var players = entitiesDB.QueryEntities <HealthEntityStruct>(ECSGroups.Player, out var numberOfPlayers);
                for (var i = 0; i < numberOfPlayers; i++)
                {
                    if (players[i].dead)
                    {
                        _playerDeathSequence.Next(this, PlayerDeathCondition.Death, players[i].ID);

                        _functions.RemoveEntity <PlayerEntityDescriptor>(players[i].ID);
                    }
                }

                yield return(null);
            }
        }
        IEnumerator ConsumingFood()
        {
            while (true)
            {
                var hungryDoofuses =
                    entitiesDB.QueryEntities <HungerEntityStruct>(GameGroups.DOOFUSES, out var doofusesCount);

                for (var j = 0; j < doofusesCount; j++)
                {
                    if (hungryDoofuses[j].hunger > 1000)
                    {
                        _entityFunctions.RemoveEntity <DoofusEntityDescriptor>(hungryDoofuses[j].ID);
                    }
                }

                yield return(Yield.It);
            }
        }
예제 #6
0
 private void OnZombieDeath(int ID, bool isAlive)
 {
     m_EntityFunctions.RemoveEntity(ID);
 }