Línea 36: |
Línea 36: |
| | | |
| Algunos recursos útiles: | | Algunos recursos útiles: |
− | * PH1: "Introducción a C#" enseña lo básico de C# con ejemplos interactivos. | + | * [https://docs.microsoft.com/es-es/dotnet/csharp/tutorials/intro-to-csharp/ ''Introducción a C#''] |
− | * PH2: "Fundamentos de C" para absolutos principiantes (in inglés)''] es una videoguía que te mostrará C#, desde los conceptos básicos hasta la programación orientada a eventos (que es lo que los mods SMAPI usan principalmente). | + | * [https://channel9.msdn.com/Series/CSharp-Fundamentals-for-Absolute-Beginners ''Fundamentos de C# para absolutos principiantes (en inglés)''] |
| | | |
| ===Requisitos=== | | ===Requisitos=== |
Línea 45: |
Línea 45: |
| # Instala [[Modding:Guía del jugador/Introducción#Instalar SMAPI|SMAPI]]. | | # Instala [[Modding:Guía del jugador/Introducción#Instalar SMAPI|SMAPI]]. |
| # Instala el IDE (''entorno de desarrollo integrado''). | | # Instala el IDE (''entorno de desarrollo integrado''). |
− | #* En Linux: instala PH3: "MonoDevelop". | + | #* En Linux: instala [http://www.monodevelop.com/ MonoDevelop]. |
− | #* En Mac: instala PH4: "Visual Studio 2017 para Mac". (Esto es MonoDevelop con otra marca.) | + | #* En Mac: instala [https://visualstudio.microsoft.com/es/vs/mac/ Visual Studio 2017 para Mac]. (Esto es MonoDevelop con otra marca.) |
− | #* En Windows: instala PH5: "Visual Studio 2017 Community". Cuando el instalador pregunte sobre cargas de trabajo, selecciona ''Desarrollo del escritorio de .NET''. | + | #* En Windows: instala [https://visualstudio.microsoft.com/es/vs/community/ Visual Studio 2017 Community]. Cuando el instalador pregunte sobre cargas de trabajo, selecciona ''Desarrollo del escritorio de .NET''. |
| | | |
| Si no estás familiarizado con Visual Studio 2017 (En Windows/Mac) o MonoDevelop (en Linux), [[Modding:IDE reference]] explica como hacer las cosas importantes que necesitas para esta guía. | | Si no estás familiarizado con Visual Studio 2017 (En Windows/Mac) o MonoDevelop (en Linux), [[Modding:IDE reference]] explica como hacer las cosas importantes que necesitas para esta guía. |
Línea 57: |
Línea 57: |
| # Crea una Biblioteca de clases (.NET Standard) vacía. | | # Crea una Biblioteca de clases (.NET Standard) vacía. |
| # Utiliza .NET Framework 4.5, 4.5.1, o 4.5.2 para una mejor compatibilidad. | | # Utiliza .NET Framework 4.5, 4.5.1, o 4.5.2 para una mejor compatibilidad. |
− | # Referencia el PH6: "<tt>Pathoschild.Stardew.ModBuildConfig</tt> paquete NuGet" para automaticamente añadir las referencias correctas según plataforma en la que estés creando el mod. | + | # Referencia el [https://smapi.io/package/readme <tt>Pathoschild.Stardew.ModBuildConfig</tt> paquete NuGet] para automaticamente añadir las referencias correctas según plataforma en la que estés creando el mod. |
| # Crea una clase <tt>ModEntry</tt> con subclases <tt>StardewModdingAPI.Mod</tt>. | | # Crea una clase <tt>ModEntry</tt> con subclases <tt>StardewModdingAPI.Mod</tt>. |
| # Elimina el método <tt>Entry</tt>, y escribe tu cóidgo usando [[#Mod APIs|eventos y referencias API de SMAPI]]. | | # Elimina el método <tt>Entry</tt>, y escribe tu cóidgo usando [[#Mod APIs|eventos y referencias API de SMAPI]]. |
Línea 70: |
Línea 70: |
| # Crea una solución usando una Biblioteca de clases (.NET Standard) (lee [[Modding:IDE reference#create-project|como crear un proyecto]]). '''Asegúrate de escoger .NET Framework, no .NET Core o .NET Standard.''' | | # Crea una solución usando una Biblioteca de clases (.NET Standard) (lee [[Modding:IDE reference#create-project|como crear un proyecto]]). '''Asegúrate de escoger .NET Framework, no .NET Core o .NET Standard.''' |
| # Cambia la red de trabajo a .NET Framework 4.5, 4.5.1, o 4.5.2 para una mejor compatibilidad (lee [[Modding:IDE reference#set-target-framework|como cambiar la red de trabajo]]). | | # Cambia la red de trabajo a .NET Framework 4.5, 4.5.1, o 4.5.2 para una mejor compatibilidad (lee [[Modding:IDE reference#set-target-framework|como cambiar la red de trabajo]]). |
− | # Referencia el PH7: "paquete NuGet <tt>Pathoschild.Stardew.ModBuildConfig</tt>" (lee [[Modding:IDE reference#add-nuget|como añadir el paquete]]). | + | # Referencia el [https://www.nuget.org/packages/Pathoschild.Stardew.ModBuildConfig paquete NuGet <tt>Pathoschild.Stardew.ModBuildConfig</tt>] (lee [[Modding:IDE reference#add-nuget|como añadir el paquete]]). |
| # Reinicia Visual Studio/MonoDevelop tras instalar el paquete. | | # Reinicia Visual Studio/MonoDevelop tras instalar el paquete. |
| | | |
Línea 126: |
Línea 126: |
| Un resumen de lo que el código está haciendo: | | Un resumen de lo que el código está haciendo: |
| | | |
− | # <code>using X;</code> (lee PH8: "palabra clave using") permite utilizar clases disponibles en ese espacio de nombres en tu código. | + | # <code>using X;</code> (lee [https://docs.microsoft.com/es-es/dotnet/csharp/language-reference/keywords/using-directive palabra clave using]) permite utilizar clases disponibles en ese espacio de nombres en tu código. |
− | # <code>namespace NombreDeTuProyecto</code> (lee PH9: "palabra clave namespace") Define el alcance del código de tu mod. No te preocupes de esto cuando apenas vayas empezando, Visual Studio o MonoDevelop lo añadirán automáticamente cuando crees un archivo. | + | # <code>namespace NombreDeTuProyecto</code> (lee [https://docs.microsoft.com/es-es/dotnet/csharp/language-reference/keywords/namespace palabra clave namespace]) Define el alcance del código de tu mod. No te preocupes de esto cuando apenas vayas empezando, Visual Studio o MonoDevelop lo añadirán automáticamente cuando crees un archivo. |
− | # <code>public class ModEntry : Mod</code> (lee PH10: "palabra clave class") crea la clase principal del mod, y subclases tipo SMAPI <tt>Mod</tt>. SMAPI detectará las subclases de tu <tt>Mod</tt> automáticamente, y <tt>Mod</tt> te dará acceso a las referencias API de SMAPI. | + | # <code>public class ModEntry : Mod</code> (lee [https://docs.microsoft.com/es-es/dotnet/csharp/language-reference/keywords/class palabra clave class]) crea la clase principal del mod, y subclases tipo SMAPI <tt>Mod</tt>. SMAPI detectará las subclases de tu <tt>Mod</tt> automáticamente, y <tt>Mod</tt> te dará acceso a las referencias API de SMAPI. |
| # <code>public override void Entry(IModHelper helper)</code> es el método que SMAPI invocará cuando tu juego sea cargado. El <code>helper</code> proporciona un conveniente acceso a las referencias API de SMAPI. | | # <code>public override void Entry(IModHelper helper)</code> es el método que SMAPI invocará cuando tu juego sea cargado. El <code>helper</code> proporciona un conveniente acceso a las referencias API de SMAPI. |
| # <code>helper.Events.Input.ButtonPressed += this.OnButtonPressed;</code> maneja un evento (en otras palabras, un método a invocar) cuando el evento de presionar un botón ocurre. En otras palabras, cuando un botón es presionado (el evento <tt>helper.Events.Input.ButtonPressed</tt>), SMAPI invocará tu método <tt>this.OnButtonPressed</tt>. Lee [[Modding:Guía del Modder/Referencias API/Eventos|eventos en la referencia de SMAPI]] para mas información. | | # <code>helper.Events.Input.ButtonPressed += this.OnButtonPressed;</code> maneja un evento (en otras palabras, un método a invocar) cuando el evento de presionar un botón ocurre. En otras palabras, cuando un botón es presionado (el evento <tt>helper.Events.Input.ButtonPressed</tt>), SMAPI invocará tu método <tt>this.OnButtonPressed</tt>. Lee [[Modding:Guía del Modder/Referencias API/Eventos|eventos en la referencia de SMAPI]] para mas información. |