コード例 #1
0
    /// <summary>
    /// Erstellt neue Einheit aus der Gleichung heraus
    /// </summary>
    public void CreateUnit()
    {
        string term = "";
        string abbr;

        foreach (GameObject unit in divident)
        {
            abbr = "";
            FormulaList.nameToAbbr.TryGetValue(unit.GetComponent <SpriteRenderer>().sprite.name, out abbr);
            term += abbr;
        }
        term += "/(";
        foreach (GameObject unit in divisor)
        {
            abbr = "";
            FormulaList.nameToAbbr.TryGetValue(unit.GetComponent <SpriteRenderer>().sprite.name, out abbr);
            term += abbr;
        }
        term += ")";
        Debug.Log(term);
        string sDivident = "";
        string sDivisor  = "";
        string unitName  = "";

        DoConvertion(term, out sDivident, out sDivisor);
        if (sDivisor.Length > 0 || !FormulaList.abbrToName.TryGetValue(sDivident, out unitName))
        {
            StartCoroutine(WrongAnimation());
        }
        else
        {
            //Spawne neue Einheit:
            wrong.SetActive(false);
            block = true;

            //langsam:
            DefaultStats.SetDefaultCharValueByName(unitName);
            foreach (GameObject unit in divident)
            {
                DefaultStats.SetDefaultCharValueByName(unit.name);
            }
            foreach (GameObject unit in divisor)
            {
                DefaultStats.SetDefaultCharValueByName(unit.name);
            }

            //Debug.Log(PlayerScript.allies[0].GetComponent<GroupScript>().properties.size);//Es muss dafür noch mindestens eine Einheit außerhalb der Gleichung sein

            StartCoroutine(FadeTermUnits());
            SpawnUnit(unitName, wrong.transform.localPosition);
        }
    }
コード例 #2
0
ファイル: Char_Trigger.cs プロジェクト: chrbor/physics_school
    private void OnTriggerEnter2D(Collider2D other)
    {
        //Falls Verbündet, dann gebe das Signal zu folgen
        GroupScript groupScript = other.GetComponent <GroupScript>();

        //wenn der Char der Gruppe schon angehört, dann ignorieren:
        if (groupScript.inGroup)
        {
            return;
        }

        //weiße den Char, dem gefolgt werden soll, zu:
        groupScript.groupNumber = PlayerScript.allies.Count;
        if (PlayerScript.allies.Count == 0)
        {
            groupScript.charToFollow = transform.parent.gameObject;
        }
        else
        {
            groupScript.charToFollow = PlayerScript.allies[PlayerScript.allies.Count - 1];
        }

        other.name = other.GetComponent <SpriteRenderer>().sprite.name;
        PlayerScript.allies.Add(other.gameObject);
        PlayerScript.alliesNames.Add(other.name);
        PlayerScript.collectedAlliesCurrent.Add(other.name);
        PlayerScript.spawnPositions.Add(other.transform.position);
        other.GetComponent <GroupScript>().properties = PlayerScript.allies[0].GetComponent <GroupScript>().properties;//shallow, mehr aber auch nicht vonöten

        //Überschreibe wert mit defaultwert:
        DefaultStats.SetDefaultCharValueByName(other.name);

        //folge dem Char:
        groupScript.inGroup = true;
        groupScript.bottom  = true;
        return;
    }