Esempio n. 1
0
 // Use to process your families.
 protected override void onProcess(int familiesUpdateCount)
 {
     if (Input.GetMouseButtonDown(0))
     {
         // Only one GO is under pointer
         GameObject leverFocused_GO = levers.First();
         if (leverFocused_GO != null)
         {
             Lever lever = leverFocused_GO.GetComponent <Lever> ();
             // Check if the hero is near to the boiler (only hero can produce this component thanks to Unity Physics layers)
             Triggered3D triggered = leverFocused_GO.GetComponent <Triggered3D> ();
             if (triggered != null)
             {
                 lever.isOn = !lever.isOn;
                 SpriteRenderer sr = leverFocused_GO.GetComponent <SpriteRenderer> ();
                 if (lever.isOn)
                 {
                     sr.sprite = lever.on;
                     MonitoringManager.trace(fm, "turnOn", MonitoringManager.Source.PLAYER);
                 }
                 else
                 {
                     sr.sprite = lever.off;
                     MonitoringManager.trace(fm, "turnOff", MonitoringManager.Source.PLAYER);
                 }
             }
         }
     }
 }
Esempio n. 2
0
 // Use to process your families.
 protected override void onProcess(int familiesUpdateCount)
 {
     if (Input.GetMouseButtonDown(0) && exit_GO.GetComponent <PointerOver>() != null)
     {
         ComponentMonitoring monitor = exit_GO.GetComponent <ComponentMonitoring> ();
         // Check if hero is near to exit (only hero can produce this component thanks to Unity Physics layers)
         Triggered3D triggered = exit_GO.GetComponent <Triggered3D> ();
         if (triggered != null)
         {
             MonitoringManager.trace(monitor, "perform", MonitoringManager.Source.PLAYER);
             GameObjectManager.setGameObjectState(endScreen_GO, true);
             foreach (FSystem sys in FSystemManager.fixedUpdateSystems())
             {
                 sys.Pause = true;
             }
             foreach (FSystem sys in FSystemManager.lateUpdateSystems())
             {
                 sys.Pause = true;
             }
             foreach (FSystem sys in FSystemManager.updateSystems())
             {
                 sys.Pause = true;
             }
         }
     }
 }
Esempio n. 3
0
 // Use to process your families.
 protected override void onProcess(int familiesUpdateCount)
 {
     if (!gameInfo.First().GetComponent <GameInfo>().triggered&& !gameInfo.First().GetComponent <GameInfo>().levelEditorMode)
     {
         gameInfo.First().GetComponent <GameInfo>().levelLost = false;
         foreach (GameObject target in obstacles)
         {
             Triggered3D t = target.GetComponent <Triggered3D>();
             if (t)
             {         //if the obstacle is triggered
                 foreach (GameObject go in t.Targets)
                 {     //for each go that triggered the obstacle
                     if (go.tag == "Object")
                     { //if go is the ball
                         foreach (FSystem s in FSystemManager.fixedUpdateSystems())
                         {
                             if (s.ToString() == "ApplyForce" || s.ToString() == "MoveSystem")
                             {
                                 s.Pause = true;//pause the game
                             }
                         }
                         gameInfo.First().GetComponent <GameInfo>().gamePaused = true;
                         gameInfo.First().GetComponent <GameInfo>().levelLost  = true;
                         gameInfo.First().GetComponent <GameInfo>().triggered  = true;
                     }
                 }
             }
         }
     }
     gameInfo.First().GetComponent <GameInfo> ().levelLostText.SetActive(gameInfo.First().GetComponent <GameInfo>().levelLost);        //show the text if the level is failed
 }
Esempio n. 4
0
 // Use to process your families.
 protected override void onProcess(int familiesUpdateCount)
 {
     foreach (GameObject ff in forcefields)
     {
         Triggered3D trig = ff.GetComponent <Triggered3D> ();
         if (trig != null)
         {
             foreach (GameObject go in trig.Targets)
             {
                 if (go.tag == "Object")
                 {
                     Move mv = go.GetComponent <Move>();
                     if (ff.GetComponent <ForceField>().ffType == 0 || ff.GetComponent <ForceField>().ffType == 1)
                     {//if attractive or repulsive
                      //CircleEuler(ff, go, mv, 1000);
                         CircleVerlet(ff, go, mv, 1000);
                     }
                     else if (ff.GetComponent <ForceField>().ffType == 2)
                     {//if uniform
                         Uniform(ff, go, mv, 1000);
                     }
                 }
             }
         }
     }
 }
Esempio n. 5
0
 // Use to process your families.
 protected override void onProcess(int familiesUpdateCount)
 {
     if (Input.GetMouseButtonDown(0))
     {
         // Only one GO could be under pointer
         GameObject boiler_go = boilers.First();
         if (boiler_go != null)
         {
             // Check if the hero is near to the boiler (only hero can produce this component thanks to Unity Physics layers)
             Triggered3D triggered = boiler_go.GetComponent <Triggered3D> ();
             if (triggered != null)
             {
                 ComponentMonitoring cm = boiler_go.GetComponent <ComponentMonitoring> ();
                 Boiler boiler          = boiler_go.GetComponent <Boiler> ();
                 if (boiler.isOn)
                 {
                     MonitoringManager.trace(cm, "turnOff", MonitoringManager.Source.PLAYER);
                 }
                 else
                 {
                     MonitoringManager.trace(cm, "turnOn", MonitoringManager.Source.PLAYER);
                 }
                 // Check if boiler is on OR boiler is not constrained OR the constraint is ok
                 if (boiler.isOn || boiler.constraint == null || boiler.constraint.activeInHierarchy)
                 {
                     Animator anim = boiler_go.GetComponent <Animator> ();
                     boiler.isOn = !boiler.isOn;
                     anim.SetBool("isOn", boiler.isOn);
                 }
             }
         }
     }
 }
Esempio n. 6
0
 // Use to process your families.
 protected override void onProcess(int familiesUpdateCount)
 {
     if (Input.GetMouseButtonDown(0))
     {
         // Only one GO is under pointer
         GameObject door_GO = doors.First();
         if (door_GO != null)
         {
             // Check if hero is near to the door (only hero can produce this component thanks to Unity Physics layers)
             Triggered3D triggered = door_GO.GetComponent <Triggered3D> ();
             if (triggered != null)
             {
                 Door door = door_GO.GetComponent <Door> ();
                 ComponentMonitoring monitor = door_GO.GetComponent <ComponentMonitoring> ();
                 if (door.isOpen)
                 {
                     MonitoringManager.trace(monitor, "turnOff", MonitoringManager.Source.PLAYER);
                 }
                 else
                 {
                     MonitoringManager.trace(monitor, "turnOn", MonitoringManager.Source.PLAYER);
                 }
                 // Check if the door is constrained
                 if (door.constraint == null || door.constraint.activeInHierarchy)
                 {
                     Animator anim = door_GO.GetComponentInParent <Animator> ();
                     door.isOpen = !door.isOpen;
                     anim.SetBool("isOpen", door.isOpen);
                 }
             }
         }
     }
 }
Esempio n. 7
0
    // Use to process your families.
    protected override void onProcess(int familiesUpdateCount)
    {
        if (!gameInfo.First().GetComponent <GameInfo>().triggered&& !gameInfo.First().GetComponent <GameInfo>().levelEditorMode)
        {
            gameInfo.First().GetComponent <GameInfo>().levelCleared = false;
            foreach (GameObject target in targets)
            {
                Triggered3D t = target.GetComponent <Triggered3D>();
                if (t)
                {         //if the target is triggered
                    foreach (GameObject go in t.Targets)
                    {     //for each go that triggered the target
                        if (go.tag == "Object")
                        { //if go is the ball
                            foreach (FSystem s in FSystemManager.fixedUpdateSystems())
                            {
                                if (s.ToString() == "ApplyForce" || s.ToString() == "MoveSystem")
                                {
                                    s.Pause = true;//pause the game
                                }
                            }
                            gameInfo.First().GetComponent <GameInfo>().gamePaused   = true;
                            gameInfo.First().GetComponent <GameInfo>().levelCleared = true;
                            gameInfo.First().GetComponent <GameInfo>().triggered    = true;
                        }
                    }
                }
            }
        }
        gameInfo.First().GetComponent <GameInfo> ().levelClearedText.SetActive(gameInfo.First().GetComponent <GameInfo>().levelCleared);        //show the text if the level is cleared

        if (editorMode && !gameInfo.First().GetComponent <GameInfo>().levelEditorMode)
        {
            if (gameInfo.First().GetComponent <GameInfo>().validating)
            {
                foreach (Transform child in gameInfo.First().GetComponent <GameInfo>().levelClearedText.transform)
                {
                    if (child.gameObject.name == "Retry")
                    {
                        child.gameObject.GetComponentInChildren <Text>().text = "Validate";
                    }
                }
            }
            else
            {
                foreach (Transform child in gameInfo.First().GetComponent <GameInfo>().levelClearedText.transform)
                {
                    if (child.gameObject.name == "Retry")
                    {
                        child.gameObject.GetComponentInChildren <Text>().text = "Retry";
                    }
                }
            }
        }
        editorMode = gameInfo.First().GetComponent <GameInfo>().levelEditorMode;
    }
Esempio n. 8
0
    private void MakeDecision(GameObject go)
    {
        Pathogene    pathogene = go.GetComponent <Pathogene>();
        PathFollower follower  = go.GetComponent <PathFollower>();
        MoveToward   move      = go.GetComponent <MoveToward>();

        if (pathogene.target == null) // No target, maybe already dead or pathogene just spawned
        {
            pathogene.target = FindNextTarget(go.transform.position);
            if (pathogene.target == null)
            {
                return;
            }

            Node next = GetClosestWaypointTo(go.transform.position).GetComponent <Node>();
            Node dest = GetClosestWaypointTo(pathogene.target.transform.position).GetComponent <Node>();

            if (follower == null) // We could have reach the final waypoint, PathFollower component may have been removed
            {
                GameObjectManager.addComponent <PathFollower>(go, new
                {
                    nextWaypoint = next,
                    destination  = dest
                });
            }
            else
            {
                follower.nextWaypoint = next;
                follower.destination  = dest;
            }
            move.target = next.transform.position;
        }
        else if (follower == null) // Final waypoint has been reached, but target still exists
        {
            move.target = pathogene.target.transform.position;
        }

        // Pathogenes are opportunists : if a cell is closer than their target, they will go kill it
        Triggered3D triggered = go.GetComponent <Triggered3D>();

        if (triggered != null) // Cell in range ?
        {
            foreach (GameObject target in triggered.Targets)
            {
                if (target.GetComponent <Cell>() != null && target.GetComponent <Removed>() == null)
                {
                    move.target = target.transform.position;
                    return;
                }
            }
        }
    }
Esempio n. 9
0
 private void onNewCollision(GameObject robot)
 {
     if (activeCoin)
     {
         Triggered3D trigger = robot.GetComponent <Triggered3D>();
         foreach (GameObject target in trigger.Targets)
         {
             //Check if the player collide with a coin
             if (target.CompareTag("Coin"))
             {
                 gameData.totalCoin++;
                 target.GetComponent <AudioSource>().Play();
                 MainLoop.instance.StartCoroutine(coinDestroy(target));
             }
         }
     }
 }
Esempio n. 10
0
 private void onNewCollision(GameObject robot)
 {
     if (activeRedDetector)
     {
         Triggered3D trigger = robot.GetComponent <Triggered3D>();
         foreach (GameObject target in trigger.Targets)
         {
             //Check if the player collide with a detection cell
             if (target.GetComponent <Detector>() != null)
             {
                 //end level
                 Debug.Log("Repéré !");
                 GameObjectManager.addComponent <NewEnd>(endpanel_f.First(), new { endType = NewEnd.Detected });
             }
         }
     }
 }
Esempio n. 11
0
    private void Freeze(BCell src)
    {
        Triggered3D trigerred = src.gameObject.GetComponent <Triggered3D>();

        if (trigerred != null)
        {
            foreach (GameObject target in trigerred.Targets)
            {
                Eatable eatable = target.GetComponent <Eatable>();
                if (eatable != null && (eatable.eatableMask & src.freezeMask) > 0 && target.GetComponent <Removed>() == null)
                {
                    GameObjectManager.addComponent <Frozen>(target, new {
                        remainingTime = src.freezeTime,
                        totalTime     = src.freezeTime
                    });
                }
            }

            if (trigerred.Targets.Length > 0)
            {
                src.cooldown = src.delay;
            }
        }
    }
Esempio n. 12
0
    // Use to process your families.
    protected override void onProcess(int familiesUpdateCount)
    {
        if (bubble_GO != null)
        {
            if (!hintLever)
            {
                // parse all levers near to hero (only hero can produce Triggered3D component thanks to Unity Physics layers)
                if (levers.Count > 0)
                {
                    GameObjectManager.setGameObjectState(bubble_GO, true);
                    TextMesh text = bubble_GO.GetComponentInChildren <TextMesh> ();
                    text.text       = "+2 is written\non theses levers";
                    startDisplaying = Time.timeSinceLevelLoad;
                    hintLever       = true;
                }
            }

            if (!hintBoiler)
            {
                // Check if boiler is near to hero (only hero can produce Triggered3D component thanks to Unity Physics layers)
                Triggered3D triggered = boiler_GO.GetComponent <Triggered3D> ();
                if (triggered != null)
                {
                    GameObjectManager.setGameObjectState(bubble_GO, true);
                    TextMesh text = bubble_GO.GetComponentInChildren <TextMesh> ();
                    text.text       = "Wow a boiler!\nIt is turned off.";
                    startDisplaying = Time.timeSinceLevelLoad;
                    hintBoiler      = true;
                }
            }

            if (!hintDoor)
            {
                // Check if door is near to hero (only hero can produce Triggered3D component thanks to Unity Physics layers)
                Triggered3D triggered = door_GO.GetComponent <Triggered3D> ();
                if (triggered != null)
                {
                    GameObjectManager.setGameObjectState(bubble_GO, true);
                    TextMesh text = bubble_GO.GetComponentInChildren <TextMesh> ();
                    text.text       = "This door is locked\nI need a key!";
                    startDisplaying = Time.timeSinceLevelLoad;
                    hintDoor        = true;
                }
            }

            if (!hintIceWall && iceWall_GO.GetComponent <BoxCollider> ().enabled)
            {
                InCollision3D collision = iceWall_GO.GetComponent <InCollision3D> ();
                if (collision != null)
                {
                    foreach (GameObject target in collision.Targets)
                    {
                        if (target == hero_GO)
                        {
                            GameObjectManager.setGameObjectState(bubble_GO, true);
                            TextMesh text = bubble_GO.GetComponentInChildren <TextMesh> ();
                            text.text       = "Damn! The path\nis blocked by an\nice wall!";
                            startDisplaying = Time.timeSinceLevelLoad;
                            hintIceWall     = true;
                        }
                    }
                }
            }

            if (!hintKey || !hintMatchstick)
            {
                // Parse all active GO takable in game and near to player (only hero can produce Triggered3D component thanks to Unity Physics layers)
                foreach (GameObject go in inGameObjects)
                {
                    if (!hintKey && go.name == "Key")
                    {
                        GameObjectManager.setGameObjectState(bubble_GO, true);
                        TextMesh text = bubble_GO.GetComponentInChildren <TextMesh> ();
                        text.text       = "A key, It can\nbe useful!";
                        startDisplaying = Time.timeSinceLevelLoad;
                        hintKey         = true;
                    }
                    if (!hintMatchstick && go.name == "Matchstick")
                    {
                        GameObjectManager.setGameObjectState(bubble_GO, true);
                        TextMesh text = bubble_GO.GetComponentInChildren <TextMesh> ();
                        text.text       = "Some matchsticks:\nuseful to make\na fire!";
                        startDisplaying = Time.timeSinceLevelLoad;
                        hintMatchstick  = true;
                    }
                }
            }

            if (bubble_GO.activeSelf && startDisplaying + 4 < Time.timeSinceLevelLoad)
            {
                GameObjectManager.setGameObjectState(bubble_GO, false);
            }
        }
    }
Esempio n. 13
0
    private void MakeDecision()
    {
        foreach (GameObject go in _Active)
        {
            Macrophage  macrophage = go.GetComponent <Macrophage>();
            MoveToward  move       = go.GetComponent <MoveToward>();
            Triggered3D triggered  = go.GetComponent <Triggered3D>();

            bool shouldRecompute = false;

            // Is the a pathogene nearby ?
            if (triggered != null)
            {
                Eater      eater            = go.GetComponent <Eater>();
                float      minDistance      = float.MaxValue;
                GameObject targetedPosition = null;

                // Compute closest eatable thing
                foreach (GameObject target in triggered.Targets)
                {
                    Eatable eatable = target.GetComponent <Eatable>();
                    if (eatable != null && (eatable.eatableMask & eater.eatingMask) > 0)
                    {
                        float distance = Vector3.Distance(go.transform.position, target.transform.position);
                        if (distance < minDistance)
                        {
                            minDistance      = distance;
                            targetedPosition = target;
                        }
                    }
                }

                if (targetedPosition != null) // Found something to eat
                {
                    // Move to it
                    move.target = targetedPosition.transform.position;

                    // Update last decision made
                    macrophage.lastDescision = DECISIONS.CHASE;

                    continue;
                }

                if (macrophage.lastDescision.Equals(DECISIONS.CHASE)) // Last decision was chase but nothing is eatable in our range
                {
                    shouldRecompute = true;                           // We need to recompute a path to the closest EndNode.
                }
            }

            if (macrophage.lastDescision.Equals(DECISIONS.CHASE) || shouldRecompute) // No pathogene to hunt in the area
            {
                // Recompute closest Waypoint
                GameObject   _target  = PathSystem.GetClosestWaypoint(go, _Waypoints);
                PathFollower follower = go.GetComponent <PathFollower>();

                // Update destination
                follower.destination = PathSystem.ComputeDestination(_target.transform.position, _EndWaypoints);
                move.target          = _target.transform.position;

                // Update decision
                macrophage.lastDescision = DECISIONS.FOLLOW_PATH;
            }
        }
    }
Esempio n. 14
0
    // Use to process your families.
    protected override void onProcess(int familiesUpdateCount)
    {
        foreach (GameObject triggerVolume in _StartTriggerGO)
        {
            StartLoopTrigger triggerComp = triggerVolume.GetComponent <StartLoopTrigger>();
            if (triggerComp.deckPool.Count > 0)
            {
                triggerComp.cooldownDeck -= Time.deltaTime;
                if (triggerComp.cooldownDeck <= 0)
                {
                    triggerComp.cooldownDeck = triggerComp.deckRate;
                    GameObject prefab = triggerComp.deckPool.Pop <GameObject>();

                    // Instanciate the GameObject
                    GameObject go = Object.Instantiate(prefab);
                    go.SetActive(true);

                    // Bind it to FYFY
                    GameObjectManager.bind(go);

                    // Set GameObject's position
                    go.transform.position = randomStartPosition(triggerVolume);
                }
            }

            if (triggerComp.randomGoPool.Count > 0)
            {
                triggerComp.cooldownRandom -= Time.deltaTime;
                if (triggerComp.cooldownRandom <= 0)
                {
                    triggerComp.cooldownRandom = triggerComp.randomGoRate;
                    GameObject prefab = triggerComp.randomGoPool.Pop <GameObject>();

                    // Instanciate the GameObject
                    GameObject go = Object.Instantiate(prefab);
                    go.SetActive(true);

                    // Bind it to FYFY
                    GameObjectManager.bind(go);

                    // Set GameObject's position
                    go.transform.position = randomStartPosition(triggerVolume);
                }
            }
        }

        foreach (GameObject triggerVolume in _InTriggerGO)
        {
            InLoopTrigger triggerComp = triggerVolume.GetComponent <InLoopTrigger>();
            Triggered3D   triggered   = triggerVolume.GetComponent <Triggered3D>();
            foreach (GameObject go in triggered.Targets)
            {
                MoveToward moveToward = go.GetComponent <MoveToward>();
                if (moveToward)  // Immuno layer
                {
                    moveToward.useOverride   = true;
                    moveToward.overrideSpeed = triggerComp.speedMult;
                }

                if (moveToward && moveToward.target != triggerComp.target.position && go.layer != 11) // Immuno layer
                {
                    moveToward.target = triggerComp.target.position;
                }
            }
        }

        foreach (GameObject triggerVolume in _EndTriggerGO)
        {
            EndLoopTrigger triggerComp = triggerVolume.GetComponent <EndLoopTrigger>();
            Triggered3D    triggered   = triggerVolume.GetComponent <Triggered3D>();
            foreach (GameObject go in triggered.Targets)
            {
                go.transform.position = randomStartPosition(triggerComp.teleport);
            }
        }
    }