Skip to content

Commit

Permalink
Ability to specify string and numeric properties in item rewards (#23)
Browse files Browse the repository at this point in the history
  • Loading branch information
lugehorsam committed Apr 11, 2024
1 parent 150bd53 commit 4609191
Show file tree
Hide file tree
Showing 6 changed files with 3,528 additions and 2,928 deletions.
22 changes: 21 additions & 1 deletion definitions/_01-Hiro-Reward.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,27 @@
"item1": {
"min": 2,
"max": 2,
"multiple": 1
"multiple": 1,
"string_properties": {
"key1": {
"options": {
"epic": {
"weight": 10
},
"common": {
"weight": 10
}
},
"total_weight": 100
}
},
"numeric_properties": {
"key1": {
"min": 10,
"max": 100,
"multiple": 5
}
}
},
"item2": {
"min": 10,
Expand Down
22 changes: 21 additions & 1 deletion definitions/_02-Hiro-Rewards.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,27 @@
"item1": {
"min": 2,
"max": 2,
"multiple": 1
"multiple": 1,
"string_properties": {
"key1": {
"options": {
"epic": {
"weight": 10
},
"common": {
"weight": 10
}
},
"total_weight": 100
}
},
"numeric_properties": {
"key1": {
"min": 10,
"max": 100,
"multiple": 5
}
}
},
"item2": {
"min": 10,
Expand Down
42 changes: 33 additions & 9 deletions economy.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ package hiro

import (
"context"

"github.com/heroiclabs/nakama-common/api"
"github.com/heroiclabs/nakama-common/runtime"
)
Expand Down Expand Up @@ -103,14 +104,16 @@ type EconomyConfigRewardEnergy struct {
}

type EconomyConfigRewardEnergyModifier struct {
Id string `json:"id,omitempty"`
Operator string `json:"operator,omitempty"`
Value *EconomyConfigRewardRangeInt64 `json:"value,omitempty"`
DurationSec *EconomyConfigRewardRangeInt64 `json:"duration_sec,omitempty"`
Id string `json:"id,omitempty"`
Operator string `json:"operator,omitempty"`
Value *EconomyConfigRewardRangeInt64 `json:"value,omitempty"`
DurationSec *EconomyConfigRewardRangeUInt64 `json:"duration_sec,omitempty"`
}

type EconomyConfigRewardItem struct {
EconomyConfigRewardRangeInt64
StringProperties map[string]*EconomyConfigRewardStringProperty `json:"string_properties,omitempty"`
NumericProperties map[string]*EconomyConfigRewardRangeFloat64 `json:"numeric_properties,omitempty"`
}

type EconomyConfigRewardItemSet struct {
Expand All @@ -132,12 +135,33 @@ type EconomyConfigRewardRangeInt64 struct {
Multiple int64 `json:"multiple,omitempty"`
}

type EconomyConfigRewardRangeUInt64 struct {
Min uint64 `json:"min,omitempty"`
Max uint64 `json:"max,omitempty"`
Multiple uint64 `json:"multiple,omitempty"`
}

type EconomyConfigRewardRangeFloat64 struct {
Min float64 `json:"min,omitempty"`
Max float64 `json:"max,omitempty"`
Multiple float64 `json:"multiple,omitempty"`
}

type EconomyConfigRewardRewardModifier struct {
Id string `json:"id,omitempty"`
Type string `json:"type,omitempty"`
Operator string `json:"operator,omitempty"`
Value *EconomyConfigRewardRangeInt64 `json:"value,omitempty"`
DurationSec *EconomyConfigRewardRangeInt64 `json:"duration_sec,omitempty"`
Id string `json:"id,omitempty"`
Type string `json:"type,omitempty"`
Operator string `json:"operator,omitempty"`
Value *EconomyConfigRewardRangeInt64 `json:"value,omitempty"`
DurationSec *EconomyConfigRewardRangeUInt64 `json:"duration_sec,omitempty"`
}

type EconomyConfigRewardStringProperty struct {
TotalWeight int64 `json:"total_weight,omitempty"`
Options map[string]*EconomyConfigRewardStringPropertyOption `json:"options,omitempty"`
}

type EconomyConfigRewardStringPropertyOption struct {
Weight int64 `json:"weight,omitempty"`
}

type EconomyConfigStoreItem struct {
Expand Down
Loading

0 comments on commit 4609191

Please sign in to comment.