//Devuelve una lista con los objetos NPC_Dialogo del interactuable, vacía si no tiene ninguno public List <Dialogo> DevolverDialogos() { List <Dialogo> dialogos = new List <Dialogo>(); for (int i = 0; i < acciones.Count; i++) { DatosAccion datosAccion = acciones[i]; if (datosAccion.GetType() == typeof(DatosAccionDialogo)) { DatosAccionDialogo datosAccionDialogo = datosAccion as DatosAccionDialogo; dialogos.Add(datosAccionDialogo.DevuelveDialogo()); } } return(dialogos); }
//Devuelve un objeto NPC_Dialogo con la ID pasada (null si no lo ha encontrado) public Dialogo DevolverDialogo(int IDDialogo) { Dialogo dialogo = null; for (int i = 0; i < acciones.Count; i++) { DatosAccion datosAccion = acciones[i]; if (datosAccion.GetType() == typeof(DatosAccionDialogo)) { DatosAccionDialogo datosAccionDialogo = datosAccion as DatosAccionDialogo; if (IDDialogo == datosAccionDialogo.DevuelveIDDialogo()) { dialogo = datosAccionDialogo.DevuelveDialogo(); } } } return(dialogo); }
//Rellena las listas de acciones private void CargarAcciones() { accionesGO = new List <GameObject>(); //Si existe un fichero guardado, cargamos ese fichero, sino cargamos el fichero por defecto if (System.IO.File.Exists(Manager.rutaDatosAccionGuardados + ID.ToString() + ".xml")) { acciones = LoadDatosAccion(Manager.rutaDatosAccionGuardados + ID.ToString() + ".xml"); } else { acciones = LoadDatosAccion(Manager.rutaDatosAccion + ID.ToString() + ".xml"); } //Cargamos el inventario, necesario para comprobar si ciertas acciones se muestran Inventario inventario; //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(); } //Creamos los gameObject que representan las acciones for (int i = 0; i < acciones.Count; i++) { //Comprobamos si los requisitos para mostrar la accion son correctos. Si lo son, creamos la accion if (MostrarAccion(acciones[i], inventario)) { GameObject AccionGO = new GameObject("Accion" + i.ToString()); AccionObjeto accionObjeto = AccionGO.AddComponent <AccionObjeto>(); accionObjeto.Inicializar(ID, i); //Carga la acción en la lista de acciones GameObjects CargaAccionGO(AccionGO, i); } //Carga el dialogo si la accion es de tipo dialogo aunque no se muestre if (acciones[i].GetType() == typeof(DatosAccionDialogo)) { DatosAccionDialogo datosAccionDialogo = acciones[i] as DatosAccionDialogo; datosAccionDialogo.CargaDialogo(); Dialogo dialogo = datosAccionDialogo.DevuelveDialogo(); //Cargamos las intros a distancia de la acciónDialogo (si los tiene) //Si el dialogo es a distancia creamos el box collider for (int j = 0; j < dialogo.DevuelveNumeroIntros(); j++) { if (dialogo.IntroEsADistancia(j)) { CrearDialogoADistanciaArea(dialogo, j); } } } } //Cargamos la UI de las acciones actuales CargarAccionesUI(); //Ocultamos el texto de las acciones DesactivarTextoAcciones(); }
private DatosAccionDialogo datosAccionDialogo; //DatosAccion del dialogo //Establece las variables public void cargarDialogo(Interactuable interactuable, DatosAccionDialogo datosAccionDialogo) { this.datosAccionDialogo = datosAccionDialogo; this.interactuable = interactuable; }