Beispiel #1
0
        /// <summary>
        /// Gets all relationships matching the specified filter - includes inherited relationships.
        /// </summary>
        /// <param name="filter">Filter criteria.</param>
        /// <returns>List of <see cref="Property"/> objects.</returns>
        public override IEnumerable <Relationship> FindRelationships(Func <Relationship, bool> filter)
        {
            var relsFound       = new List <Relationship>();
            var relNamesVisited = new List <string>();

            objType curClass = this;

            while (curClass != null)
            {
                foreach (var curRelationship in curClass.Relationships)
                {
                    var curRelName     = curRelationship.Name;
                    var alreadyVisited = ((from relName in relNamesVisited
                                           where (relName.CompareTo(curRelName) == 0)
                                           select relName).FirstOrDefault() != null);

                    if (!alreadyVisited)
                    {
                        relNamesVisited.Add(curRelName);

                        if (filter == null || filter(curRelationship))
                        {
                            relsFound.Add(curRelationship);
                        }
                    }
                }
                curClass = curClass.DerivesFrom;
            }

            return(relsFound);
        }
Beispiel #2
0
 void Start()
 {
     if (this.gameObject.GetComponent <Text>())
     {
         thisobjType = objType.TEXT;
         text        = this.gameObject.GetComponent <Text>();
     }
 }
Beispiel #3
0
 public ProgRecord(string prName, string prPath, string prAlias, int prActive, string prIP, objType prType)
 {
     pName   = prName;
     pPath   = prPath;
     pAlias  = prAlias;
     pActive = prActive;
     pIP     = prIP;
     pType   = prType;
 }
Beispiel #4
0
    private GameObject CreateSingleObject(objType objToCreate)
    {
        GameObject currentObj = Instantiate(GetPrefabType(objToCreate));

        SetInactiveObjParent(objToCreate, currentObj);

        currentObj.name = Enum.GetName(typeof(objType), objToCreate);
        currentObj.SetActive(false);
        return(currentObj);
    }
Beispiel #5
0
    public void ResetObj(GameObject obj, objType objTypeOfObjToReset)
    {
        bool checkIfWasNull             = false;
        Queue <GameObject> currentQueue = GetObjQueue(objTypeOfObjToReset, ref checkIfWasNull);

        SetInactiveObjParent(objTypeOfObjToReset, obj);

        obj.SetActive(false);
        currentQueue.Enqueue(obj);
    }
 public static AbstractFactory GetFactory(objType obj)
 {
     if (obj == objType.Shape)
     {
         return(new ShapeFactory());
     }
     if (obj == objType.Color)
     {
         return(new ColorFactory());
     }
     return(null);
 }
Beispiel #7
0
 private void SetInactiveObjParent(objType objToCreate, GameObject currentObj)
 {
     //Only bullets are curve independent
     if (objType.Bullet == objToCreate)
     {
         currentObj.transform.parent = bulletElements.transform;
     }
     else
     {
         currentObj.transform.parent = curveElements.transform;
     }
 }
Beispiel #8
0
        public static List <GameObject> GetObjsOfType(List <GameObject> objects, objType type)
        {
            List <GameObject> matches = new List <GameObject>();

            foreach (GameObject go in objects)
            {
                Properties prop = go.GetComponent <Properties>();
                if (prop.type == type)
                {
                    matches.Add(go);
                }
            }
            return(matches);
        }
Beispiel #9
0
    private GameObject GetPrefabType(objType objToCreate)
    {
        GameObject prefabToGenerate;

        switch (objToCreate)
        {
        case objType.Asteroid:
            int randomAsteroid = UnityEngine.Random.Range(0, asteroidPrefabList.Count);
            prefabToGenerate = asteroidPrefabList[randomAsteroid];
            break;

        case objType.Bullet:
            prefabToGenerate = this.bulletPrefab;
            break;

        case objType.PortalBarrel:
            prefabToGenerate = this.portalBarrelPrefab;
            break;

        case objType.PortalPlanet:
            prefabToGenerate = this.portalPlanetPrefab;
            break;

        case objType.DarkHole:
            prefabToGenerate = this.darkHolePrefab;
            break;

        case objType.PowerUpShield:
            prefabToGenerate = this.powerUpShieldPrefab;
            break;

        case objType.PowerUpSnail:
            prefabToGenerate = this.powerUpSnailPrefab;
            break;

        case objType.PowerUpLaser:
            prefabToGenerate = this.powerUpLaserPrefab;
            break;

        case objType.PowerUpGrenade:
            prefabToGenerate = this.powerUpGrenadePrefab;
            break;

        default:
            Debug.LogError("<color=red> Dynamic pool received an incorrect object type </color>");
            prefabToGenerate = asteroidPrefabList[0];
            break;
        }
        return(prefabToGenerate);
    }
Beispiel #10
0
    public GameObject GetObj(objType objToCreate)
    {
        GameObject         currentObj;
        bool               checkIfWasNull = false;
        Queue <GameObject> currentQueue   = GetObjQueue(objToCreate, ref checkIfWasNull);

        if (currentQueue.Count != 0)
        {
            currentObj = currentQueue.Dequeue();
            currentObj.SetActive(true);
        }
        else
        {
            currentObj = CreateSingleObject(objToCreate);
            currentObj.SetActive(true);
        }
        return(currentObj);
    }
Beispiel #11
0
    void updateLayer()
    {
        // Send out a ray left and right to look for type to effect, and the effect to grant
        RaycastHit2D[] ruleHit = Physics2D.RaycastAll(props.pos, new Vector3(1, 0), squareSize);
        RaycastHit2D[] objHit  = Physics2D.RaycastAll(props.pos, new Vector3(-1, 0), squareSize);

        List <GameObject> allObjs = GameObject.Find("SceneManager").GetComponent <SceneManager>().gameObjs;

        // removes all effects from the type we were previously effecting
        if (lastEffectingType != null)
        {
            List <GameObject> effectedObjs = GetObjsOfType(allObjs, lastEffectingType);
            foreach (GameObject go in effectedObjs)
            {
                go.layer = layers.none;
            }
            lastEffectingType = objType.None;
        }

        // if there is some object to the left and right
        if (ruleHit.Length > 1 && objHit.Length > 1)
        {
            GameObject rule     = ruleHit[1].collider.gameObject; // TODO these should check for the first applicable object not the 2nd one. (ie ignore none layer objects)
            GameObject obj      = objHit[1].collider.gameObject;
            Properties ruleProp = rule.GetComponent <Properties>();
            Properties objProp  = obj.GetComponent <Properties>();

            int layer = 0;

            // determine the destination layer corresponding to the adjacent rule
            switch (ruleProp.type)
            {
            case objType.StopRule:
                layer = layers.stop;
                break;

            case objType.PushRule:
                layer = layers.push;
                break;
            }

            // determine the object type corresponding to the adjacent type
            objType typeToSet = objType.None;
            switch (objProp.type)
            {
            case objType.RockRule:
                typeToSet = objType.Rock;
                break;

            case objType.WallRule:
                typeToSet = objType.Wall;
                break;
            }

            // set all objects of that type to the destination rule layer
            List <GameObject> effectedObjs = GetObjsOfType(allObjs, typeToSet);
            foreach (GameObject go in effectedObjs)
            {
                go.layer = layer;
            }
            lastEffectingType = typeToSet;
        }
    }
Beispiel #12
0
    GameObject initObj(objType entityType, Vector3 position)
    {
        GameObject go   = new GameObject();
        Properties prop = go.AddComponent <Properties>();

        prop.go  = go;
        prop.pos = position;
        SpriteRenderer sr = go.AddComponent <SpriteRenderer>();

        prop.dest = prop.pos;
        prop.type = entityType;
        go.layer  = 13;

        switch (entityType)
        {
        case objType.Yaga:
            go.name   = "Yaga";
            sr.sprite = Resources.Load <Sprite>("Sprites/yaga");
            go.layer  = layers.player;
            break;

        case objType.Wall:
            go.name   = "Wall";
            sr.sprite = Resources.Load <Sprite>("Sprites/wallTop");
            SpriteManager sp = go.AddComponent <SpriteManager>();
            sp.parent = go;
            break;

        case objType.Rock:
            go.name   = "Rock";
            sr.sprite = Resources.Load <Sprite>("Sprites/rock");
            break;

        case objType.RockRule:
            go.name   = "RockRule";
            sr.sprite = Resources.Load <Sprite>("Sprites/rules/rock");
            go.layer  = layers.rule;
            break;

        case objType.WallRule:
            go.name   = "WallRule";
            sr.sprite = Resources.Load <Sprite>("Sprites/rules/wall");
            go.layer  = layers.rule;
            break;

        case objType.IsSetter:
            go.name   = "IsSetter";
            sr.sprite = Resources.Load <Sprite>("Sprites/rules/is");
            StateManager st = go.AddComponent <StateManager>();
            st.parent = go;
            go.layer  = layers.rule;
            break;

        case objType.PushRule:
            go.name   = "PushRule";
            sr.sprite = Resources.Load <Sprite>("Sprites/rules/push");
            go.layer  = layers.rule;
            break;

        case objType.StopRule:
            go.name   = "StopRule";
            sr.sprite = Resources.Load <Sprite>("Sprites/rules/stop");
            go.layer  = layers.rule;
            break;
        }
        go.AddComponent <BoxCollider2D>();

        return(go);
    }
Beispiel #13
0
    public void Generate(objType objToCreate, GameObject prefab)
    {
        bool queueWasNull = false;
        Queue <GameObject> currentQueue = GetObjQueue(objToCreate, ref queueWasNull);

        if (queueWasNull)
        {
            int numToCreate = 0;

            switch (objToCreate)
            {
            case objType.Bullet:
                numToCreate       = numToCreateBullets;
                this.bulletPrefab = prefab;
                break;

            case objType.Asteroid:
                numToCreate             = numToCreateAsteroids;
                this.asteroidPrefabList = new List <GameObject>();
                this.asteroidPrefabList.Add(prefab);
                break;

            case objType.PortalBarrel:
                numToCreate             = numToCreatePortalBarrels;
                this.portalBarrelPrefab = prefab;
                break;

            case objType.PortalPlanet:
                numToCreate             = numToCreatePortalPlanets;
                this.portalPlanetPrefab = prefab;
                break;

            case objType.DarkHole:
                numToCreate         = numToCreateDarkHoles;
                this.darkHolePrefab = prefab;
                break;

            case objType.PowerUpShield:
                numToCreate = numToCreatePowerUpShield;
                this.powerUpShieldPrefab = prefab;
                break;

            case objType.PowerUpSnail:
                numToCreate             = numToCreatePowerUpSnail;
                this.powerUpSnailPrefab = prefab;
                break;

            case objType.PowerUpLaser:
                numToCreate             = numToCreatePowerUpLaser;
                this.powerUpLaserPrefab = prefab;
                break;

            case objType.PowerUpGrenade:
                numToCreate = numToCreatePowerUpGrenade;
                this.powerUpGrenadePrefab = prefab;
                break;

            default:
                Debug.LogError("<color=red> Dynamic pool received an incorrect object type </color>");
                break;
            }

            for (int i = 0; i < numToCreate; i++)
            {
                currentQueue.Enqueue(CreateSingleObject(objToCreate));
            }
        }
    }
Beispiel #14
0
    //FIXME:Should move the check and creation to another function
    private Queue <GameObject> GetObjQueue(objType objToCreate, ref bool queueWasNull)
    {
        Queue <GameObject> currentQueue;

        switch (objToCreate)
        {
        case objType.Asteroid:
            if (asteroidQueue is null)
            {
                queueWasNull  = true;
                asteroidQueue = new Queue <GameObject>();
            }
            currentQueue = asteroidQueue;
            break;

        case objType.Bullet:
            if (bulletQueue is null)
            {
                queueWasNull = true;
                bulletQueue  = new Queue <GameObject>();
            }
            currentQueue = bulletQueue;
            break;

        case objType.PortalBarrel:
            if (portalBarrelQueue is null)
            {
                queueWasNull      = true;
                portalBarrelQueue = new Queue <GameObject>();
            }
            currentQueue = portalBarrelQueue;
            break;

        case objType.PortalPlanet:
            if (portalPlanetQueue is null)
            {
                queueWasNull      = true;
                portalPlanetQueue = new Queue <GameObject>();
            }
            currentQueue = portalPlanetQueue;
            break;

        case objType.DarkHole:
            if (darkHoleQueue is null)
            {
                queueWasNull  = true;
                darkHoleQueue = new Queue <GameObject>();
            }
            currentQueue = darkHoleQueue;
            break;

        case objType.PowerUpShield:
            if (powerUpShieldQueue is null)
            {
                queueWasNull       = true;
                powerUpShieldQueue = new Queue <GameObject>();
            }
            currentQueue = powerUpShieldQueue;
            break;

        case objType.PowerUpSnail:
            if (powerUpSnailQueue is null)
            {
                queueWasNull      = true;
                powerUpSnailQueue = new Queue <GameObject>();
            }
            currentQueue = powerUpSnailQueue;
            break;

        case objType.PowerUpLaser:
            if (powerUpLaserQueue is null)
            {
                queueWasNull      = true;
                powerUpLaserQueue = new Queue <GameObject>();
            }
            currentQueue = powerUpLaserQueue;
            break;

        case objType.PowerUpGrenade:
            if (powerUpGrenadedQueue is null)
            {
                queueWasNull         = true;
                powerUpGrenadedQueue = new Queue <GameObject>();
            }
            currentQueue = powerUpGrenadedQueue;
            break;

        default:
            Debug.LogError("<color=red> Dynamic pool received an incorrect object type </color>");
            currentQueue = asteroidQueue;
            break;
        }
        return(currentQueue);
    }