Beispiel #1
0
    IEnumerator invertActions(spacecraft sc)
    {
        sc_player = sc;
        yield return(new WaitUntil(() => !sc.camera.transform.GetChild(0).GetComponent <colorInverter>().inverting));

        yield return(new WaitForSeconds(1f));

        sc.camera.transform.GetChild(0).GetComponent <SpriteRenderer>().enabled = false;

        //if (canvas != null)
        //canvas.GetComponent<UIManager>().menuButtonInvert();
        UIManager.instance.menuButtonInvert();

        for (int i = 0; i < transform.parent.childCount; i++)
        {
            GameObject ob = transform.parent.GetChild(i).gameObject;

            if (ob != gameObject && ob.tag != "Player" && ob.tag != "end" && ob.tag != "MainCamera" && ob.tag != "background")
            {
                Debug.Log(ob.tag);
                ob.SetActive(false);
            }
        }
        yield return(new WaitForSeconds(0.1f));

        AudioManager.instance.PlayMusic("bgm2");
        sc.camera.transform.GetChild(0).GetComponent <SpriteRenderer>().enabled = true;
        move = true;

        yield return(new WaitForSeconds(3f));

        whirlpoolTitle.GetComponent <TitleScript>().showTitle();
        //StartCoroutine(moveCamera());
        inverted = true;
    }
Beispiel #2
0
    public override void catchedAction(spacecraft sc)
    {
        //enegy
        sc.energy += dustAmount;
        //Debug.Log("absorbing");

        //dust absorbed
        ParticlesAbsorb pA;

        if (!startedAbsorb && (pA = playerObj.GetComponent <ParticlesAbsorb>()) != null && (tag == "dustPlanet"))
        {
            StartCoroutine(pA.absorbParticles(transform.GetChild(0).GetComponent <ParticleSystem>()));

            transform.GetChild(transform.childCount - 1).SetSiblingIndex(0);
            startedAbsorb = true;
        }
        // change
        if (sc.energy > 100f)
        {
            sc.energy = 100f;
        }
        dustAmount = 0;
        playerObj.transform.GetChild(0).GetChild(0).GetComponent <TrailRenderer>().time = sc.energy / 100f;

        return;
    }
Beispiel #3
0
    // Use this for initialization
    void Start()
    {
        if (instance == null)
        {
            instance = this;
        }
        playerModel = new PlayerModel();

        if (!PlayerPrefs.HasKey("isPointer"))
        {
            showArrow = true;
        }
        else
        {
            showArrow = (PlayerPrefs.GetInt("isPointer") == 1);
        }

        if (SceneManager.GetActiveScene().name == "start page" || SceneManager.GetActiveScene().name == "pre_tutorial")
        {
            startPage = true;
        }

        //showArrow = ((int)GameStates.instance.getData("isPointer", typeof(int)) < 1);
        InitPlayer(false);//Init player with reinit parameter being false
    }
Beispiel #4
0
 // Use this for initialization
 void Start()
 {
     origTrans = transform.parent;
     origPos   = transform.position;
     origScale = transform.localScale;
     //Debug.Log("SC player:" + transform.parent.parent.parent.gameObject.GetComponent<BadgeManager>().sc_player);
     player_sc = transform.parent.parent.parent.gameObject.GetComponent <BadgeManager>().sc_player;
 }
Beispiel #5
0
 public override void catchedAction(spacecraft sc)
 {
     absorbing           = true;
     playerRotationSpeed = sc.rotating_speed;
     if (rotatingSpeed != 0)
     {
         sc.rotating_speed = rotatingSpeed;
     }
 }
Beispiel #6
0
    public override void catchedAction(spacecraft sc)
    {
        showLevel = showLevels();
        StartCoroutine(showLevel);
        title.SetActive(false);
        landed = true;

        planetName.gameObject.SetActive(true);
        return;
    }
Beispiel #7
0
    void checkCatcing()
    {
        Vector2 position = new Vector2(transform.position.x, transform.position.y);

        Collider2D[] hitColliders = Physics2D.OverlapCircleAll(position, catching_radius);
        int          i            = 0;

        while (i < hitColliders.Length)
        {
            GameObject ob = hitColliders[i].gameObject;
            //player catched
            if (ob != gameObject && ob.tag == "spacecraft")
            {
                //Debug.Log("!!!!" +
                //"");
                spacecraft sc = ob.transform.GetChild(0).GetComponent <spacecraft>();
                if (sc.rotating_planet == null || sc.rotating_planet != gameObject)
                {
                    sc.rotating_planet = gameObject;
                    sc.rotation_center = transform.position;
                    sc.rotate_on       = true;
                    sc.moving          = false;
                    sc.movingStart     = false;
                    if (dustLand != null && normalLand != null)
                    {
                        if (dustAmount > 0)
                        {
                            dustLand.Play();
                        }
                        else
                        {
                            normalLand.Play();
                        }
                    }
                }



                sc.enegy += dustAmount;

                if (sc.enegy > 100)
                {
                    sc.enegy = 100;
                }
                dustAmount = 0;

                ob.transform.GetChild(0).GetChild(0).GetComponent <TrailRenderer>().time = sc.enegy / 100f;
            }
            ++i;
        }
    }
Beispiel #8
0
    // Use this for initialization
    void Start()
    {
        player_sc = player.transform.GetChild(0).GetComponent <spacecraft>();
        //Debug.Log(player_sc);
        saveName    = "tu" + (tutorialNum + 1).ToString();
        checkedMark = GameStates.instance.GetTutorialData(saveName);

        Debug.Log("Checkmark: " + checkedMark);
        inst = new Dictionary <string, hint>();

        if (textfield == null)
        {
            textfield = GameObject.FindGameObjectWithTag("tutorialText").GetComponent <Text>();
        }


        textfield.text = "";

        switch (tutorialNum)
        {
        case 0:
            //Start page
            //printList();
            part_1 = new Part_1(player_sc, firstPlanet, secondPlanet, textfield, this);
            if (checkedMark < 1)
            {
                playerIntro.GetComponent <Text>().text = "This is You :)";
                StartCoroutine(waitToShowStuff(playerIntro, 1f));
            }
            break;

        case 1:
            //Tutorial level 1
            //Debug.Log(dist_ratio);

            break;

        case 2:
            inst["energy"] = new hint("You lose energy during interstellar travels.", false, 100, 200);
            inst["dust"]   = new hint("The dust charges your energy.", false, 0, -200);
            break;

        case 3:
            inst["obstacle"] = new hint("Avoid these squared rocks!", false, -220, 200);
            break;
        }
    }
Beispiel #9
0
    public Part_1(spacecraft player_sc, GameObject firstPlanet, GameObject secondPlanet,Text textfield, MonoBehaviour monoBehaviour)
    {
        this.player_sc = player_sc;
        this.firstPlanet = firstPlanet;
        this.secondPlanet = secondPlanet;
        this.textfield = textfield;

        this.monoBehaviour = monoBehaviour;
        Dictionary<string, hint> instr = new Dictionary<string, hint>();
        instr["release"] = new hint("Relase to launch yourself!");
        instr["hold"] = new hint("First, hold the screen.");
        instr["compliment"] = new hint("Good job!", false, 200, 200);
        instr["goal_1"] = new hint("Get here!", false, 200, 200);
        instr["goal_2"] = new hint("Now get here!", false, 350, 300);
        instr["congrat"] = new hint("Well done, let's get into the game!", false, 0, 200);

        this.inst = instr;
    }
Beispiel #10
0
    public virtual void checkCatching()
    {
        //Debug.Log("Catched step 1" + name);

        //Keep scanning around itself to find if player is around
        Vector2 position = new Vector2(transform.position.x, transform.position.y);

        Collider2D[] hitColliders = Physics2D.OverlapCircleAll(position, catchRadius);
        int          i            = 0;

        while (i < hitColliders.Length)
        {
            GameObject ob = hitColliders[i].gameObject;
            //player catched
            if (ob != gameObject && ob.tag == "Player")//&& Mathf.Abs(Vector3.Distance(transform.position,ob.transform.position) - catchRadius) < 0.1f)
            {
                playerObj = ob;
                spacecraft sc = ob.transform.GetChild(0).GetComponent <spacecraft>();

                //Conditions of automatic switch of planets: the current rotatingPlanet is not null and not equal to the attracting planet
                if (!sc.launched)
                {
                    if (sc.rotatingPlanet != gameObject)//When it is switching to a new planet automatically, the responding time(checkInterval) show be longer so that it will not switch back
                    {
                        //Debug.Log("Slow response");
                        transferCenter(ob, sc, slowRespTime);
                    }
                }
                else
                {
                    if (sc.preRotatingPlanet != gameObject)
                    {
                        //Conditions of manual switch of planets: the current rotatingPlanet null or it is not equal to the attracting planet
                        //Debug.Log("Quick response");
                        //When it is switching to a new planet manually, the responding time should be 0(player can shoot right after it lands)
                        transferCenter(ob, sc);
                    }
                }
            }
            ++i;
        }
    }
Beispiel #11
0
    public override void catchedAction(spacecraft sc)
    {
        base.catchedAction(sc);
        if (awardAvailable)
        {
            //Debug.Log("Award");
            StartCoroutine(award.GetComponent <GainedAnimation>().moveStart(sc.transform.parent.transform, 1));
            awardAvailable = false;
            sc.wonAward    = tag;

            if (text != null)
            {
                if (text.GetComponent <Text>() != null)
                {
                    text.GetComponent <Text>().text = "";
                }
            }

            if (intro != null)
            {
                intro.gameObject.SetActive(false);
            }
        }

        if (SceneManager.GetActiveScene().buildIndex == 18)
        {
            if (!sc.camera.transform.GetChild(0).GetComponent <colorInverter>().invertingBack&& !inverted)
            {
                if (frame != null)
                {
                    frame.color = Color.black;
                }
                if (good != null)
                {
                    good.color = Color.black;
                }
            }
        }
    }
Beispiel #12
0
 public override void catchedAction(spacecraft sc)
 {
     base.catchedAction(sc);
     if (!playerReached && SceneManager.GetActiveScene().name == "2-start")
     {
         playerReached = true;
         //Debug.Log("Player reached");
         sc.spawnPoint = transform.position - new Vector3(5, 1, 0);
         sc.playerModel.init();
         sc.energy = 100f;
         GameStates.instance.saveData(Constants.whirpoolStatus, 1);
         if ((int)GameStates.instance.getUnlockedLevels() < 11)
         {
             GameStates.instance.SaveLevel(curID: 11);
             GameStates.instance.saveData(Constants.curLevelKey, "11");
             SocialSystem.instance.setAchievement(Achievements.unlock_whirlpool);
             sc.transform.parent.GetComponent <Collision>().saveUserData(11);
         }
     }
     if (!invBack && !inverted)
     {
         sc.camera.transform.GetChild(0).GetComponent <colorInverter>().inverting = true;
         StartCoroutine(invertActions(sc));
     }
     else
     {
         if (!inverted)
         {
             sc.camera.transform.GetChild(0).GetComponent <colorInverter>().invertingBack = true;
             UIManager.instance.menuButtonInvert();
             if (badge != null)
             {
                 badge.GetComponent <GoldenPlanet>().inverted = true;
             }
             inverted = true;
         }
     }
 }
Beispiel #13
0
 // Use this for initialization
 void Start()
 {
     playerTrailRenderer = transform.GetChild(0).GetChild(0).GetComponent <TrailRenderer>();
     sc = transform.GetChild(0).GetComponent <spacecraft>();
 }
Beispiel #14
0
 public override void catchedAction(spacecraft sc)
 {
     origTime = thePlayerOnPlanet.transform.GetChild(0).GetChild(0).GetComponent <TrailRenderer>().time;
     return;
 }
Beispiel #15
0
    void checkCatching()
    {
        //Keep scanning around itself to find if player is around
        Vector2 position = new Vector2(transform.position.x, transform.position.y);

        Collider2D[] hitColliders = Physics2D.OverlapCircleAll(position, catchRadius);
        int          i            = 0;

        //if player leaves the planet, delete the reference
        if (thePlayerOnPlanet != null)
        {
            if (thePlayerOnPlanet.transform.GetChild(0).GetComponent <spacecraft>().launched == true)
            {
                thePlayerOnPlanet = null;
            }
        }

        while (i < hitColliders.Length)
        {
            GameObject ob = hitColliders[i].gameObject;
            //player catched
            if (ob != gameObject && ob.tag == "Player")
            {
                spacecraft sc = ob.transform.GetChild(0).GetComponent <spacecraft>();

                //check if spacecraft is not orbiting the same planet after launch
                if (sc.preRotatingPlanet == null || sc.preRotatingPlanet != gameObject)
                {
                    //store player reference
                    thePlayerOnPlanet = ob;
                    if (sc.energy < Constants.deathHealthVal)
                    {
                        return;
                    }
                    //rotate
                    sc.rotatingPlanet  = gameObject;
                    sc.rotation_center = transform.position;
                    sc.rotate_on       = true;
                    sc.launched        = false;
                    sc.movingStart     = false;

                    Vector2 v1 = new Vector2(transform.position.x - sc.transform.position.x,
                                             transform.position.y - sc.transform.position.y);
                    //v1.Normalize();
                    Vector2 v2 = sc.transform.parent.GetComponent <Rigidbody2D>().velocity;
                    //v2.Normalize();

                    float angle = Vector2.SignedAngle(v1, v2);

                    if (angle < 0f && angle < 90f)
                    {
                        sc.rotating_dir = -1; //counterclockwise rotation
                    }
                    else
                    {
                        sc.rotating_dir = 1; //clockwise rotation
                    }
                    if (canPlaySound)
                    {
                        if (SceneManager.GetActiveScene().buildIndex != 0)
                        {
                            AudioManager.instance.PlaySFX("Harp Land_" + AudioManager.landingSfxID.ToString());

                            AudioManager.landingSfxID++;
                            if (AudioManager.landingSfxID > 4)
                            {
                                AudioManager.landingSfxID = 1;
                            }
                        }


                        canPlaySound = false;
                    }
                }
            }
            ++i;
        }
    }
Beispiel #16
0
    private void transferCenter(GameObject ob, spacecraft sc, float checkInterval = 0)
    {
        Vector2 v1 = new Vector2(transform.position.x - sc.transform.position.x,
                                 transform.position.y - sc.transform.position.y);
        Vector2 v2    = sc.transform.parent.GetComponent <Rigidbody2D>().velocity;
        float   angle = Vector2.SignedAngle(v1, v2);

        //check if spacecraft is not orbiting the same planet after launch
        //Debug.Log(sc.rotatingPlanet + ", " + (Time.time - sc.checkRotatingTime));
        if (Time.time - sc.checkRotatingTime > checkInterval)
        ////&& angle <= 90f && angle >= -90f )//&&
        {
            if (!sc.dead)
            {
                PlanetBlink();
            }
            //position fix
            ob.transform.position = (ob.transform.position - transform.position).normalized * catchRadius + transform.position;
            thePlayerOnPlanet     = ob;
            //Debug.Log(thePlayerOnPlanet);

            if (sc.energy < Constants.deathHealthVal)
            {
                return;
            }

            //rotate
            //player did not launch
            if (!sc.launched)
            {
                sc.checkRotatingTime = Time.time;

                sc.preRotatingPlanet = sc.rotatingPlanet;
                if (sc.rotatingPlanet != null)
                {
                    sc.rotatingPlanet.GetComponent <Planet>().playerLeave();
                }

                sc.rotatingPlanet = null;
            }
            sc.rotatingPlanet    = gameObject;
            sc.rotation_center   = transform.position;
            sc.rotate_on         = true;
            sc.launched          = false;
            sc.movingStart       = false;
            sc.checkRotatingTime = Time.time;

            if (angle < 0f && angle < 90f)
            {
                sc.rotating_dir = -1; //counterclockwise rotation
            }
            else
            {
                sc.rotating_dir = 1; //clockwise rotation
            }
            //Debug.Log("Switched");
            sc.landOn();
            //landing sound
            if (canPlaySound)
            {
                playLandingSound();
                canPlaySound = false;
            }

            if (transform.Find("secret") != null)
            {
                BadgeManager.instance.showHiddenPlanet(transform.Find("secret").tag);
            }
            catchedAction(sc);
        }
    }
Beispiel #17
0
 public virtual void catchedAction(spacecraft sc)
 {
 }
Beispiel #18
0
 public override void catchedAction(spacecraft sc)
 {
     return;
 }