コード例 #1
0
    private void SetOptionButton(GameObject button, DialogueOption dialogueOption)
    {
        bool mostrar = true;

        for (int i = 0; i < dialogueOption.DevuelveNumeroGrupos(); i++)
        {
            int IDGrupo = dialogueOption.DevuelveIDGrupo(i);             //Miramos si la opción está asignada a algún grupo

            Grupo grupo = Manager.instance.DevolverGrupoActivo(IDGrupo);

            if (grupo != null)
            {
                List <DialogueOptionGrupoVariables> variables = dialogueOption.DevuelveVariables(i);

                for (int j = 0; i < variables.Count; j++)
                {
                    //Si la variable de la opcion es mayor que la actual del grupo, no se muestra la opción
                    if (variables[j].valor > grupo.variables[variables[j].numVariable])
                    {
                        mostrar = false;
                    }
                }
            }
            //El grupo no está activo
            else
            {
                mostrar = false;
            }
        }

        if (mostrar)
        {
            //Creamos un objeto inventario
            Inventario inventario;

            //Buscamos el inventario en la colaobjetos
            ColaObjeto inventarioCola = Manager.instance.GetColaObjetos(Manager.rutaInventario + "Inventario.xml");

            //Se ha encontrado en la cola de objetos
            if (inventarioCola != null)
            {
                ObjetoSerializable objetoSerializable = inventarioCola.GetObjeto();
                inventario = objetoSerializable as Inventario;
            }
            //No se ha encontrado en la cola de objetos
            else
            {
                //Cargamos el inventario si existe, sino lo creamos
                if (System.IO.File.Exists(Manager.rutaInventario + "Inventario.xml"))
                {
                    inventario = Inventario.LoadInventario(Manager.rutaInventario + "Inventario.xml");
                }
                else
                {
                    inventario = new Inventario();
                }
            }

            for (int i = 0; i < dialogueOption.DevuelveNumeroObjetos(); i++)
            {
                int  IDObjeto   = dialogueOption.DevuelveIDObjeto(i);
                bool enPosesion = dialogueOption.DevuelveObjetoPosesion(i);

                bool existe = inventario.ObjetoInventarioExiste(IDObjeto);

                //Mostramos la opción solo si coincide el parámetro
                if (enPosesion != existe)
                {
                    mostrar = false;
                }
            }
        }

        if (mostrar)
        {
            UIDialogo.instance.SetOptionButton(button, dialogueOption);
        }
    }