Exemplo n.º 1
0
    void AdicionaAFita(UnidadeDeCiclo unidade)
    {
        if (unidade.novaCor)
        {
            AdicionaNovaCor();
        }
        if (unidade.novaRegra)
        {
            for (int i = 0; i < unidade.quantasRegras; i++)
            {
                AdicionaNovaRegraERemoveAMaisAntiga();
            }
        }
        if (unidade.trocarRegra)
        {
            List <Lei> trocasPossiveis;
            trocasPossiveis = new List <Lei>();

            Lei pointer;

            for (int i = 0; i < regras.Length; i++)
            {
                if (regras[i].qualRegra != TipoDeRegra.Nenhuma)
                {
                    trocasPossiveis.Add(regras[i]);
                }
                if (trocasPossiveis.Count != 0)
                {
                    pointer = trocasPossiveis[(Random.Range(0, trocasPossiveis.Count))];
                    for (int j = 0; j < regras.Length; j++)
                    {
                        if (regras[i] == pointer)
                        {
                            regras[i] = SorteiaRegra();
                        }
                    }
                }
            }
        }

        AtualizaAFitaEsperada();
    }
Exemplo n.º 2
0
    public override void OnInspectorGUI()
    {
        CiclosData data = (CiclosData)target;

        if (data.unidades == null)
        {
            Debug.Log(data.name.ToString() + " Restarted");
            data.unidades = new List <UnidadeDeCiclo>();
            data.unidades.Add(new UnidadeDeCiclo());
            data.condInit = new CondicaoInicial(1);
            data.started  = true;
        }

        EditorGUILayout.LabelField("Condição Inicial", EditorStyles.boldLabel);
        GUILayout.BeginHorizontal("Box");
        EditorGUILayout.PrefixLabel("Numero Inicial de Botoes:");
        data.condInit.nDeBotoes = EditorGUILayout.IntField(data.condInit.nDeBotoes);
        GUILayout.EndHorizontal();

        EditorGUILayout.BeginVertical("Box");
        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.PrefixLabel("Regra:");
        data.condInit.regrasIniciais[0] = (TipoDeRegra)EditorGUILayout.EnumPopup(data.condInit.regrasIniciais[0]);
        EditorGUILayout.EndHorizontal();
        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.PrefixLabel("Regra:");
        data.condInit.regrasIniciais[1] = (TipoDeRegra)EditorGUILayout.EnumPopup(data.condInit.regrasIniciais[1]);
        EditorGUILayout.EndHorizontal();
        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.PrefixLabel("Regra:");
        data.condInit.regrasIniciais[2] = (TipoDeRegra)EditorGUILayout.EnumPopup(data.condInit.regrasIniciais[2]);
        EditorGUILayout.EndHorizontal();
        EditorGUILayout.EndVertical();

        EditorGUILayout.Space();
        EditorGUILayout.Space();


        EditorGUILayout.LabelField("Unidades", EditorStyles.boldLabel);
        for (int i = 0; i < data.unidades.Count; i++)
        {
            UnidadeDeCiclo uni = data.unidades[i];

            GUILayout.BeginVertical("Box");
            GUILayout.BeginHorizontal(EditorStyles.miniButton);
            uni.novaCor   = GUILayout.Toggle(uni.novaCor, "Nova Cor");
            uni.novaRegra = GUILayout.Toggle(uni.novaRegra, "Nova Regra");

            if (uni.novaRegra)
            {
                uni.quantasRegras = int.Parse(GUILayout.TextField(uni.quantasRegras.ToString()));
            }

            uni.trocarRegra = GUILayout.Toggle(uni.trocarRegra, "Trocar Regra");

            if (GUILayout.Button("X", EditorStyles.miniButtonRight))
            {
                data.unidades.RemoveAt(i);
                //Undo.RecordObject(data, "Remove Effect");
            }

            GUILayout.EndHorizontal();
            GUILayout.EndVertical();
        }

        if (GUILayout.Button("Add", EditorStyles.miniButtonRight))
        {
            data.unidades.Add(new UnidadeDeCiclo());
            // Undo.RecordObject(data, "Add Effect");
        }
        EditorUtility.SetDirty(target);
    }