add and remove PP for Weaponskill fixed
Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
package character
|
package character
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bamort/database"
|
|
||||||
"bamort/bmrt/models"
|
"bamort/bmrt/models"
|
||||||
|
"bamort/database"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
@@ -160,28 +160,49 @@ func AddPracticePoint(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Praxispunkt zur entsprechenden Fertigkeit hinzufügen
|
// Praxispunkt zur entsprechenden Fertigkeit hinzufügen
|
||||||
found := false
|
foundSkill := false
|
||||||
for i := range character.Fertigkeiten {
|
for i := range character.Fertigkeiten {
|
||||||
if character.Fertigkeiten[i].Name == targetSkillName {
|
if character.Fertigkeiten[i].Name == targetSkillName {
|
||||||
character.Fertigkeiten[i].Pp += request.Amount
|
character.Fertigkeiten[i].Pp += request.Amount
|
||||||
found = true
|
foundSkill = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foundWeaponSkill := false
|
||||||
|
for i := range character.Waffenfertigkeiten {
|
||||||
|
if character.Waffenfertigkeiten[i].Name == targetSkillName {
|
||||||
|
character.Waffenfertigkeiten[i].Pp += request.Amount
|
||||||
|
foundWeaponSkill = true
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !found {
|
if !foundSkill && !foundWeaponSkill {
|
||||||
respondWithError(c, http.StatusBadRequest, "Fertigkeit nicht gefunden: "+targetSkillName)
|
respondWithError(c, http.StatusBadRequest, "Fertigkeit nicht gefunden: "+targetSkillName)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fertigkeiten explizit speichern
|
// Fertigkeiten explizit speichern
|
||||||
for i := range character.Fertigkeiten {
|
if foundSkill {
|
||||||
if character.Fertigkeiten[i].Name == targetSkillName {
|
for i := range character.Fertigkeiten {
|
||||||
if err := database.DB.Save(&character.Fertigkeiten[i]).Error; err != nil {
|
if character.Fertigkeiten[i].Name == targetSkillName {
|
||||||
respondWithError(c, http.StatusInternalServerError, "Fehler beim Speichern der Fertigkeit: "+err.Error())
|
if err := database.DB.Save(&character.Fertigkeiten[i]).Error; err != nil {
|
||||||
return
|
respondWithError(c, http.StatusInternalServerError, "Fehler beim Speichern der Fertigkeit: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if foundWeaponSkill {
|
||||||
|
for i := range character.Waffenfertigkeiten {
|
||||||
|
if character.Waffenfertigkeiten[i].Name == targetSkillName {
|
||||||
|
if err := database.DB.Save(&character.Waffenfertigkeiten[i]).Error; err != nil {
|
||||||
|
respondWithError(c, http.StatusInternalServerError, "Fehler beim Speichern der Waffenfertigkeit: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
break
|
||||||
}
|
}
|
||||||
break
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -196,12 +217,23 @@ func AddPracticePoint(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, skill := range character.Waffenfertigkeiten {
|
||||||
|
if skill.Pp > 0 {
|
||||||
|
practicePoints = append(practicePoints, PracticePointResponse{
|
||||||
|
SkillName: skill.Name,
|
||||||
|
Amount: skill.Pp,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Erfolgreiche Response mit Details zurückgeben
|
// Erfolgreiche Response mit Details zurückgeben
|
||||||
var message string
|
var message string
|
||||||
if isSpellFlag {
|
if isSpellFlag {
|
||||||
message = "Praxispunkt für Zauber '" + request.SkillName + "' wurde der Zaubergruppe '" + targetSkillName + "' hinzugefügt"
|
message = "Praxispunkt für Zauber '" + request.SkillName + "' wurde der Zaubergruppe '" + targetSkillName + "' hinzugefügt"
|
||||||
} else {
|
} else if foundSkill {
|
||||||
message = "Praxispunkt für Fertigkeit '" + targetSkillName + "' hinzugefügt"
|
message = "Praxispunkt für Fertigkeit '" + targetSkillName + "' hinzugefügt"
|
||||||
|
} else if foundWeaponSkill {
|
||||||
|
message = "Praxispunkt für Waffenfertigkeit '" + targetSkillName + "' hinzugefügt"
|
||||||
}
|
}
|
||||||
|
|
||||||
response := PracticePointActionResponse{
|
response := PracticePointActionResponse{
|
||||||
@@ -263,12 +295,25 @@ func UsePracticePoint(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Praxispunkt von der entsprechenden Fertigkeit abziehen
|
// Praxispunkt von der entsprechenden Fertigkeit abziehen
|
||||||
found := false
|
foundSkill := false
|
||||||
for i := range character.Fertigkeiten {
|
for i := range character.Fertigkeiten {
|
||||||
if character.Fertigkeiten[i].Name == targetSkillName {
|
if character.Fertigkeiten[i].Name == targetSkillName {
|
||||||
if character.Fertigkeiten[i].Pp >= request.Amount {
|
if character.Fertigkeiten[i].Pp >= request.Amount {
|
||||||
character.Fertigkeiten[i].Pp -= request.Amount
|
character.Fertigkeiten[i].Pp -= request.Amount
|
||||||
found = true
|
foundSkill = true
|
||||||
|
} else {
|
||||||
|
respondWithError(c, http.StatusBadRequest, "Nicht genügend Praxispunkte verfügbar")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foundWeaponSkill := false
|
||||||
|
for i := range character.Waffenfertigkeiten {
|
||||||
|
if character.Waffenfertigkeiten[i].Name == targetSkillName {
|
||||||
|
if character.Waffenfertigkeiten[i].Pp >= request.Amount {
|
||||||
|
character.Waffenfertigkeiten[i].Pp -= request.Amount
|
||||||
|
foundWeaponSkill = true
|
||||||
} else {
|
} else {
|
||||||
respondWithError(c, http.StatusBadRequest, "Nicht genügend Praxispunkte verfügbar")
|
respondWithError(c, http.StatusBadRequest, "Nicht genügend Praxispunkte verfügbar")
|
||||||
return
|
return
|
||||||
@@ -277,19 +322,32 @@ func UsePracticePoint(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !found {
|
if !foundSkill && !foundWeaponSkill {
|
||||||
respondWithError(c, http.StatusBadRequest, "Fertigkeit nicht gefunden: "+targetSkillName)
|
respondWithError(c, http.StatusBadRequest, "Fertigkeit nicht gefunden: "+targetSkillName)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fertigkeiten explizit speichern
|
// Fertigkeiten explizit speichern
|
||||||
for i := range character.Fertigkeiten {
|
if foundSkill {
|
||||||
if character.Fertigkeiten[i].Name == targetSkillName {
|
for i := range character.Fertigkeiten {
|
||||||
if err := database.DB.Save(&character.Fertigkeiten[i]).Error; err != nil {
|
if character.Fertigkeiten[i].Name == targetSkillName {
|
||||||
respondWithError(c, http.StatusInternalServerError, "Fehler beim Speichern der Fertigkeit: "+err.Error())
|
if err := database.DB.Save(&character.Fertigkeiten[i]).Error; err != nil {
|
||||||
return
|
respondWithError(c, http.StatusInternalServerError, "Fehler beim Speichern der Fertigkeit: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if foundWeaponSkill {
|
||||||
|
for i := range character.Waffenfertigkeiten {
|
||||||
|
if character.Waffenfertigkeiten[i].Name == targetSkillName {
|
||||||
|
if err := database.DB.Save(&character.Waffenfertigkeiten[i]).Error; err != nil {
|
||||||
|
respondWithError(c, http.StatusInternalServerError, "Fehler beim Speichern der Waffenfertigkeit: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
break
|
||||||
}
|
}
|
||||||
break
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -304,9 +362,18 @@ func UsePracticePoint(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, skill := range character.Waffenfertigkeiten {
|
||||||
|
if skill.Pp > 0 {
|
||||||
|
practicePoints = append(practicePoints, PracticePointResponse{
|
||||||
|
SkillName: skill.Name,
|
||||||
|
Amount: skill.Pp,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
response := PracticePointActionResponse{
|
response := PracticePointActionResponse{
|
||||||
Success: true,
|
Success: true,
|
||||||
Message: fmt.Sprintf("%d Übungspunkte erfolgreich von %s verwendet", request.Amount, targetSkillName),
|
Message: fmt.Sprintf("%d Praxispunkte erfolgreich von %s verwendet/reduziert", request.Amount, targetSkillName),
|
||||||
RequestedSkill: request.SkillName,
|
RequestedSkill: request.SkillName,
|
||||||
TargetSkill: targetSkillName,
|
TargetSkill: targetSkillName,
|
||||||
IsSpell: isSpellFlag,
|
IsSpell: isSpellFlag,
|
||||||
|
|||||||
Reference in New Issue
Block a user