コード例 #1
0
    /// <summary>
    /// returns the closest gameobject with a collider on it that is an instance of ParentObject and of the givent type
    /// ignores enemy entities and dead entities
    /// </summary>
    public static GameObject GetNearestEntityByType(int radius, ParentObjectNameEnum entityTypeToFind, Transform center)
    {
        Collider[] collider           = Physics.OverlapSphere(center.position, radius, 256);
        GameObject bestTarget         = null;
        float      closestDistanceSqr = Mathf.Infinity;
        Vector3    currentPosition    = center.position;

        foreach (Collider potentialTarget in collider)
        {
            if (potentialTarget.GetComponent <ParentObject>() != null && potentialTarget.GetComponent <ParentObject>().ObjectName == entityTypeToFind)
            {
                if (potentialTarget.gameObject != center.gameObject.transform.gameObject && potentialTarget.gameObject.GetComponent <Entity>().Owner == OwnerEnum.Player && potentialTarget.gameObject.GetComponent <Entity>().IsAlive() && !potentialTarget.gameObject.GetComponent <Entity>().OnWall)
                {
                    Vector3 directionToTarget = potentialTarget.transform.position - currentPosition;
                    float   dSqrToTarget      = directionToTarget.sqrMagnitude;
                    if (dSqrToTarget < closestDistanceSqr)
                    {
                        closestDistanceSqr = dSqrToTarget;
                        bestTarget         = potentialTarget.gameObject;
                    }
                }
            }
        }
        return(bestTarget);
    }
コード例 #2
0
    public GameObject Get(ParentObjectNameEnum objectNameEnum)
    {
        switch (objectNameEnum)
        {
        case ParentObjectNameEnum.Monozyt:
            return(monozyt);

        case ParentObjectNameEnum.B_Lymphozyt:
            return(b_lymphozyt);

        case ParentObjectNameEnum.Makrophag:
            return(makrophag);

        case ParentObjectNameEnum.Tomato:
            return(tomato);

        case ParentObjectNameEnum.Schnupfen:
            return(schnupfen);

        case ParentObjectNameEnum.Malaria:
            return(malaria);

        case ParentObjectNameEnum.Fuchsbandwurm:
            return(fuchsbandwurm);

        case ParentObjectNameEnum.DeathObject:
            return(deathobject);

        default:
            return(null);
        }
    }
コード例 #3
0
    private GameObject CreateEntity(ParentObjectNameEnum type)
    {
        Transform parent;

        if (type == ParentObjectNameEnum.Swordsman || type == ParentObjectNameEnum.Horseman || type == ParentObjectNameEnum.Bowman || type == ParentObjectNameEnum.DeathAngel || type == ParentObjectNameEnum.Character || type == ParentObjectNameEnum.Catapult)
        {
            parent = PoolHolder.Instance.Entities.transform;
        }
        else if (type == ParentObjectNameEnum.Arrow || type == ParentObjectNameEnum.Stone)
        {
            parent = PoolHolder.Instance.Arrows.transform;
        }
        else if (type == ParentObjectNameEnum.UpgradeParticles || type == ParentObjectNameEnum.FireballImpact || type == ParentObjectNameEnum.IceballImpact || type == ParentObjectNameEnum.HealImpact)
        {
            parent = PoolHolder.Instance.Particles.transform;
        }
        else
        {
            parent = PoolHolder.Instance.Buildings.transform;
        }
        GameObject gObject = Instantiate(PrefabHolder.Instance.Get(type), parent);

        pool.Add(gObject);
        return(gObject);
    }
コード例 #4
0
    private void CreatePool(ParentObjectNameEnum type)
    {
        Pool poolToAdd = gameObject.AddComponent <Pool>();

        poolToAdd.Type = type;
        poolToAdd.Size = 10;
        pools.Add(poolToAdd);
    }
コード例 #5
0
    public GameObject GetRenderObject(ParentObjectNameEnum type)
    {
        switch (type)
        {
        case ParentObjectNameEnum.Character:
            return(characterPrefabinternal);

        case ParentObjectNameEnum.Swordsman:
            return(swordsmanPrefabInternal);

        case ParentObjectNameEnum.Bowman:
            return(bowmanPrefabInternal);

        case ParentObjectNameEnum.Horseman:
            return(horsemanPrefabInternal);

        case ParentObjectNameEnum.Settler:
            return(settlerPrefabInternal);

        case ParentObjectNameEnum.Catapult:
            return(catapultPrefabInternal);

        case ParentObjectNameEnum.Forge:
            return(forgePrefabInternal);

        case ParentObjectNameEnum.Mainhouse:
            return(mainhousePrefabInternal);

        case ParentObjectNameEnum.Farm:
            return(farmPrefabInternal);

        case ParentObjectNameEnum.Mine:
            return(minePrefabInternal);

        case ParentObjectNameEnum.Barracks:
            return(barracksPrefabInternal);

        case ParentObjectNameEnum.WoodWall:
            return(woodenWallPrefabInternal);

        case ParentObjectNameEnum.StoneWall:
            return(stoneWallPrefabInternal);

        case ParentObjectNameEnum.StoneTower:
            return(stoneTowerPrefabInternal);

        default:
            return(null);
        }
    }
コード例 #6
0
 private Pool GetRightPool(ParentObjectNameEnum type)
 {
     if (pools.Count > 0)
     {
         foreach (Pool item in pools)
         {
             if (item.Type == type)
             {
                 return(item);
             }
         }
     }
     CreatePool(type);
     return(GetRightPool(type));
 }
コード例 #7
0
    private GameObject CreateEntity(ParentObjectNameEnum type)
    {
        Transform parent;

        if (type == ParentObjectNameEnum.Tomato || type == ParentObjectNameEnum.Malaria || type == ParentObjectNameEnum.Schnupfen)
        {
            parent = PoolHolder.Instance.Entities.transform;
        }
        else
        {
            parent = PoolHolder.Instance.Buildings.transform;
        }
        GameObject gObject = Instantiate(PrefabHolder.Instance.Get(type), parent);

        gObject.SetActive(false);
        pool.Add(gObject);
        return(gObject);
    }
コード例 #8
0
    public void SetImage(ParentObjectNameEnum parentName)
    {
        switch (parentName)
        {
        case ParentObjectNameEnum.Monozyt:
            renderCamera.transform.position = monozytCameraParent.transform.position;
            break;

        case ParentObjectNameEnum.B_Lymphozyt:
            renderCamera.transform.position = B_LymphozytCameraParent.transform.position;
            break;

        case ParentObjectNameEnum.Makrophag:
            renderCamera.transform.position = MakrophagCameraParent.transform.position;
            break;

        case ParentObjectNameEnum.Tomato:
            break;

        default:
            break;
        }
    }
コード例 #9
0
 public EntitySaveData(OwnerEnum owner, ParentObjectNameEnum objectName, EntityStateEnum entityState, int maxLevel, int currentLevel, float maxHealthpoints, float currentHealthPoints, int buildCost, int buildTime, float armor, EntityActionStateEnum entityActionState, EntityBehaviourEnum entityBehaviour, float baseDamage, float movementSpeed, float viewDistance, float attackRange, float attackDelay, int foodValue, SoundHolder dieSoundHolder, SoundHolder fightSoundHolder, int experience)
 {
     this.owner               = owner;
     this.objectName          = objectName;
     this.entityState         = entityState;
     this.maxLevel            = maxLevel;
     this.currentLevel        = currentLevel;
     this.maxHealthpoints     = maxHealthpoints;
     this.currentHealthPoints = currentHealthPoints;
     this.buildCost           = buildCost;
     this.buildTime           = buildTime;
     this.armor               = armor;
     this.entityActionState   = entityActionState;
     this.entityBehaviour     = entityBehaviour;
     this.baseDamage          = baseDamage;
     this.movementSpeed       = movementSpeed;
     this.viewDistance        = viewDistance;
     this.attackRange         = attackRange;
     this.attackDelay         = attackDelay;
     this.foodValue           = foodValue;
     this.dieSoundHolder      = dieSoundHolder;
     this.fightSoundHolder    = fightSoundHolder;
     this.experience          = experience;
 }
コード例 #10
0
 public ParentObject GetInfo(ParentObjectNameEnum objectNameEnum)
 {
     return(Get(objectNameEnum).GetComponent <ParentObject>());
 }
コード例 #11
0
 public GameObject GetObject(ParentObjectNameEnum type)
 {
     return(GetRightPool(type).GetPoolObject(false));
 }
コード例 #12
0
 public GameObject GetObjectActive(ParentObjectNameEnum type)
 {
     return(GetRightPool(type).GetPoolObject(true));
 }
コード例 #13
0
    public GameObject Get(ParentObjectNameEnum objectNameEnum)
    {
        switch (objectNameEnum)
        {
        case ParentObjectNameEnum.Character:
            return(characterPrefabInternal);

        case ParentObjectNameEnum.Swordsman:
            return(swordsmanPrefabInternal);

        case ParentObjectNameEnum.Bowman:
            return(bowmanPrefabInternal);

        case ParentObjectNameEnum.Horseman:
            return(horsemanPrefabInternal);

        case ParentObjectNameEnum.Catapult:
            return(catapultPrefabInternal);

        case ParentObjectNameEnum.Forge:
            return(forgePrefabInternal);

        case ParentObjectNameEnum.Mainhouse:
            return(mainhousePrefabInternal);

        case ParentObjectNameEnum.Farm:
            return(farmPrefabInternal);

        case ParentObjectNameEnum.Mine:
            return(minePrefabInternal);

        case ParentObjectNameEnum.Barracks:
            return(barracksPrefabInternal);

        case ParentObjectNameEnum.WoodWall:
            return(woodenWallPrefabInternal);

        case ParentObjectNameEnum.StoneWall:
            return(stoneWallPrefabInternal);

        case ParentObjectNameEnum.StoneTower:
            return(stoneTowerPrefabInternal);

        case ParentObjectNameEnum.Arrow:
            return(arrowPrefabInternal);

        case ParentObjectNameEnum.Stone:
            return(stonePrefabInternal);

        case ParentObjectNameEnum.UpgradeParticles:
            return(upgradeParticlesPrefabInternal);

        case ParentObjectNameEnum.DeathAngel:
            return(deathAngelPrefabInternal);

        case ParentObjectNameEnum.DeathObject:
            return(deathObjectPrefabInternal);

        case ParentObjectNameEnum.FireballImpact:
            return(fireballImpactPrefabInternal);

        case ParentObjectNameEnum.IceballImpact:
            return(iceballImpactPrefabInternal);

        case ParentObjectNameEnum.HealImpact:
            return(healImpactPrefabInternal);

        case ParentObjectNameEnum.SelectionCircle:
            return(selectionCirclePrefabInternal);

        case ParentObjectNameEnum.Settler:
            return(settlerPrefabInternal);

        default:
            return(null);
        }
    }