Skip to content

Commit

Permalink
Add upgradeCharacter handler, edit comments
Browse files Browse the repository at this point in the history
  • Loading branch information
fluofoxxo committed Sep 1, 2019
1 parent 62d206e commit a10085d
Show file tree
Hide file tree
Showing 8 changed files with 127 additions and 15 deletions.
5 changes: 5 additions & 0 deletions consts/numValues.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package consts

const (
CharacterUpgradeIncrease = 5500
)
14 changes: 14 additions & 0 deletions enums/upgradeAbilities.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package enums

const (
UpgradeAbilityInvincble = iota + 120000
UpgradeAbilityMagnet = iota + 120001
UpgradeAbilityTrampoline
UpgradeAbilityCombo
UpgradeAbilityLaser
UpgradeAbilityDrill
UpgradeAbilityAsteroid
UpgradeAbilityRingBonus
UpgradeAbilityDistanceBonus
UpgradeAbilityAnimalBonus
)
1 change: 1 addition & 0 deletions main1.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ func main() {
mux.HandleFunc("/Game/postGameResults/", h(muxhandlers.PostGameResults, LogExecutionTime))
// Misc.
mux.HandleFunc("/Character/changeCharacter/", h(muxhandlers.ChangeCharacter, LogExecutionTime))
mux.HandleFunc("/Character/upgradeCharacter/", h(muxhandlers.UpgradeCharacter, LogExecutionTime))
mux.HandleFunc("/Chao/equipChao/", h(muxhandlers.EquipChao, LogExecutionTime))

mux.HandleFunc("/", OutputUnknownRequest)
Expand Down
53 changes: 53 additions & 0 deletions muxhandlers/character.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ package muxhandlers

import (
"encoding/json"
"strconv"

"github.com/fluofoxxo/outrun/consts"
"github.com/fluofoxxo/outrun/db"
"github.com/fluofoxxo/outrun/emess"
"github.com/fluofoxxo/outrun/helper"
Expand Down Expand Up @@ -43,3 +45,54 @@ func ChangeCharacter(helper *helper.Helper) {
helper.InternalErr("Error sending response", err)
}
}

func UpgradeCharacter(helper *helper.Helper) {
recv := helper.GetGameRequest()
var request requests.UpgradeCharacterRequest
err := json.Unmarshal(recv, &request)
if err != nil {
helper.Err("Error unmarshalling", err)
return
}

player, err := helper.GetCallingPlayer()
if err != nil {
helper.InternalErr("Error getting calling player", err)
return
}

charaID := request.CharacterID
abilityID := request.AbilityID
abilityIDFromStr, err := strconv.Atoi(abilityID)
if err != nil {
helper.Err("Error in strconv.Atoi", err)
return
}

sum := func(in []int64) int64 {
v := int64(0)
for _, val := range in {
v += val
}
return v
}

sendStatus := status.OK
abilityIndex := abilityIDFromStr - 120000 // minus enums.UpgradeAbilityInvincibility
index := player.IndexOfChara(charaID)
abilitySum := sum(player.CharacterState[index].AbilityLevel)
if abilitySum < 100 {
player.CharacterState[index].AbilityLevel[abilityIndex]++
player.CharacterState[index].Exp -= consts.CharacterUpgradeIncrease // TODO: subtracting exp actually increases cost... Probably not what we need to do.
db.SavePlayer(player)
} else {
sendStatus = status.CharacterLevelLimit
}

baseInfo := helper.BaseInfo(emess.OK, int64(sendStatus))
response := responses.DefaultUpgradeCharacter(baseInfo, player)
err = helper.SendResponse(response)
if err != nil {
helper.InternalErr("Error sending response", err)
}
}
6 changes: 3 additions & 3 deletions netobj/character.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ type Character struct { // Can also be used as PlayCharacter
func DefaultCharacter(char obj.Character) Character {
status := int64(enums.CharacterStatusUnlocked)
level := int64(1)
exp := int64(31415)
star := int64(2) // star value of the character? Differs based on rarity, I guess
starMax := int64(1331) // ????
exp := int64(0)
star := int64(1) // Limit breaks
starMax := int64(1331) // Max number of limit breaks?
lockCondition := int64(enums.LockConditionOpen)
campaignList := []obj.Campaign{}
abilityLevel := []int64{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} // 11 abilities?
Expand Down
8 changes: 8 additions & 0 deletions netobj/player.go
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,14 @@ func (p *Player) GetChara(cid string) (Character, error) {
}
return char, nil
}
func (p *Player) IndexOfChara(cid string) int {
for i, char := range p.CharacterState {
if char.ID == cid {
return i
}
}
return -1
}
func (p *Player) GetChao(chid string) (Chao, error) {
var chao Chao
found := false
Expand Down
12 changes: 9 additions & 3 deletions requests/character.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
package requests

type ChangeCharacterRequest struct {
Base
MainCharaID string `json:"mainCharacterId"`
SubCharaID string `json:"subCharacterId"`
Base
MainCharaID string `json:"mainCharacterId"`
SubCharaID string `json:"subCharacterId"`
}

type UpgradeCharacterRequest struct {
Base
AbilityID string `json:"abilityId"`
CharacterID string `json:"characterId"`
}
43 changes: 34 additions & 9 deletions responses/character.go
Original file line number Diff line number Diff line change
@@ -1,19 +1,44 @@
package responses

import (
"github.com/fluofoxxo/outrun/netobj"
"github.com/fluofoxxo/outrun/responses/responseobjs"
"github.com/fluofoxxo/outrun/netobj"
"github.com/fluofoxxo/outrun/responses/responseobjs"
)

type ChangeCharacterResponse struct {
BaseResponse
PlayerState netobj.PlayerState `json:"playerState"`
BaseResponse
PlayerState netobj.PlayerState `json:"playerState"`
}

func ChangeCharacter(base responseobjs.BaseInfo, playerState netobj.PlayerState) ChangeCharacterResponse {
baseResponse := NewBaseResponse(base)
return ChangeCharacterResponse{
baseResponse,
playerState,
}
baseResponse := NewBaseResponse(base)
return ChangeCharacterResponse{
baseResponse,
playerState,
}
}

type UpgradeCharacterResponse struct {
BaseResponse
PlayerState netobj.PlayerState `json:"playerState"`
CharacterState []netobj.Character `json:"characterState"`
}

func UpgradeCharacter(base responseobjs.BaseInfo, playerState netobj.PlayerState, characterState []netobj.Character) UpgradeCharacterResponse {
baseResponse := NewBaseResponse(base)
return UpgradeCharacterResponse{
baseResponse,
playerState,
characterState,
}
}

func DefaultUpgradeCharacter(base responseobjs.BaseInfo, player netobj.Player) UpgradeCharacterResponse {
playerState := player.PlayerState
characterState := player.CharacterState
return UpgradeCharacter(
base,
playerState,
characterState,
)
}

0 comments on commit a10085d

Please sign in to comment.