neuer Endpunkt available-skills-new verwenden

Nun als POST mit requestData = {
          char_id: this.character.id,
          name: '', // Wird für jede Fertigkeit einzeln gesetzt
          current_level: 0,
          target_level: 1,
          type: 'skill',
          action: 'learn',
          use_pp: 0,
          use_gold: 0,
          reward: this.rewardType || 'default'
        }
This commit is contained in:
2025-07-31 11:01:32 +02:00
parent 2a956e114a
commit 591e1c4bb2
3 changed files with 47 additions and 27 deletions
+32 -20
View File
@@ -1319,10 +1319,16 @@ func GetRewardTypes(c *gin.Context) {
})
}
// GetAvailableSkills gibt alle verfügbaren Fertigkeiten mit Lernkosten zurück
func GetAvailableSkills(c *gin.Context) {
// GetAvailableSkillsNewSystem gibt alle verfügbaren Fertigkeiten mit Lernkosten zurück (POST mit LernCostRequest)
func GetAvailableSkillsNewSystem(c *gin.Context) {
characterID := c.Param("id")
//rewardType := c.Query("reward_type")
// Parse LernCostRequest aus POST body
var baseRequest gsmaster.LernCostRequest
if err := c.ShouldBindJSON(&baseRequest); err != nil {
respondWithError(c, http.StatusBadRequest, "Ungültige Anfrageparameter: "+err.Error())
return
}
var character models.Char
if err := database.DB.Preload("Fertigkeiten").Preload("Erfahrungsschatz").Preload("Vermoegen").First(&character, characterID).Error; err != nil {
@@ -1362,26 +1368,32 @@ func GetAvailableSkills(c *gin.Context) {
if skill.Name == "Placeholder" {
continue
}
request := gsmaster.LernCostRequest{
CharId: character.ID,
Name: skill.Name,
CurrentLevel: 0, // Nicht gelernt
TargetLevel: 1, // Auf Level 1 lernen
Type: "skill",
Action: "learn",
UsePP: 0, // Keine PP für neue Fertigkeiten
UseGold: 0, // Keine Gold für neue Fertigkeiten
Reward: &[]string{"default"}[0], // Belohnungstyp aus Query-Parameter
// Erstelle LernCostRequest für diese Fertigkeit basierend auf der Basis-Anfrage
request := baseRequest
request.CharId = character.ID
request.Name = skill.Name
request.CurrentLevel = 0 // Nicht gelernt
request.TargetLevel = 1 // Auf Level 1 lernen
request.Type = "skill"
request.Action = "learn"
// Erstelle SkillCostResultNew
levelResult := gsmaster.SkillCostResultNew{
CharacterID: fmt.Sprintf("%d", character.ID),
CharacterClass: getCharacterClass(&character),
SkillName: skill.Name,
TargetLevel: 1,
}
levelResult := &gsmaster.SkillCostResultNew{}
remainingPP := request.UsePP
remainingGold := request.UseGold
spellInfo := &models.SkillLearningInfo{}
// Berechne Lernkosten mit GetLernCostNextLevel
//epCost, goldCost := calculateSkillLearningCosts(skill, character, rewardType)
err := calculateSkillLearnCostNewSystem(&request, levelResult, &remainingPP, &remainingGold, spellInfo)
epCost := 10000
goldCost := 50000
// Berechne Lernkosten mit calculateSkillLearnCostNewSystem
err := calculateSkillLearnCostNewSystem(&request, &levelResult, &remainingPP, &remainingGold, spellInfo)
epCost := 10000 // Fallback-Wert
goldCost := 50000 // Fallback-Wert
if err == nil {
epCost = levelResult.EP
goldCost = levelResult.GoldCost
@@ -1407,7 +1419,7 @@ func GetAvailableSkills(c *gin.Context) {
}
// GetAvailableSkills gibt alle verfügbaren Fertigkeiten mit Lernkosten zurück
func GetAvailableSkillsNewSystem(c *gin.Context) {
func GetAvailableSkills(c *gin.Context) {
characterID := c.Param("id")
rewardType := c.Query("reward_type")
+1 -1
View File
@@ -32,7 +32,7 @@ func RegisterRoutes(r *gin.RouterGroup) {
// Fertigkeiten-Information
charGrp.GET("/:id/available-skills", GetAvailableSkills) // Verfügbare Fertigkeiten mit Kosten (bereits gelernte ausgeschlossen)
charGrp.GET("/:id/available-skills-new", GetAvailableSkillsNewSystem) // Verfügbare Fertigkeiten mit Kosten (bereits gelernte ausgeschlossen)
charGrp.POST("/available-skills-new", GetAvailableSkillsNewSystem) // Verfügbare Fertigkeiten mit Kosten (bereits gelernte ausgeschlossen)
// Belohnungsarten für verschiedene Lernszenarien
charGrp.GET("/:id/reward-types", GetRewardTypes) // Verfügbare Belohnungsarten je nach Kontext
+12 -4
View File
@@ -515,11 +515,19 @@ export default {
await this.loadAvailableCategories()
// Lade alle verfügbaren Fertigkeiten mit Kosten (bereits ohne gelernte gefiltert)
const response = await this.$api.get(`/api/characters/${this.character.id}/available-skills`, {
params: {
reward_type: this.rewardType
const requestData = {
char_id: this.character.id,
name: '', // Wird für jede Fertigkeit einzeln gesetzt
current_level: 0,
target_level: 1,
type: 'skill',
action: 'learn',
use_pp: 0,
use_gold: 0,
reward: this.rewardType || 'default'
}
})
const response = await this.$api.post('/api/characters/available-skills-new', requestData)
if (response.data && response.data.skills_by_category) {
this.availableSkillsByCategory = response.data.skills_by_category