package endless

import (
	Util "server/GoUtil"
	endlessCfg "server/conf/endless"
	"server/game/mod/item"
)

// 初始化奖励
func InitReward(Diamond float64, Order int) []*item.Item {
	numRand := map[int]int{1: 30, 2: 60, 3: 10}
	Num := Util.RandMap(numRand)
	PerDiamond := endlessCfg.GetPerDiamond(item.ITEM_ENERGY_ID)

	if Num == 1 {
		return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(float64(Diamond)/PerDiamond))}
	}

	if Num == 2 {
		ItemId := endlessCfg.GetItemId(Diamond, 0)
		if len(ItemId) == 0 {
			return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(Diamond/PerDiamond))}
		}
		RandItem := Util.RandSlice(ItemId)
		ItemDiamond := endlessCfg.GeDiamondByItemId(RandItem)
		LastDiamond := Diamond - ItemDiamond
		ItemNum := int(LastDiamond / PerDiamond)
		return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, ItemNum), item.NewItem(RandItem, 1)}
	}
	if Num == 3 {
		ItemId := endlessCfg.GetItemId(Diamond, 0)
		if len(ItemId) == 0 {
			return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(Diamond/PerDiamond))}
		}
		RandItem1 := Util.RandSlice(ItemId)
		Type := endlessCfg.GetType(RandItem1)
		ItemDiamond := endlessCfg.GeDiamondByItemId(RandItem1)
		LastDiamond := Diamond - ItemDiamond
		ItemId = endlessCfg.GetItemId(LastDiamond, Type)
		if len(ItemId) == 0 {
			ItemNum := int(LastDiamond / PerDiamond)
			return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, ItemNum), item.NewItem(RandItem1, 1)}
		}
		RandItem2 := Util.RandSlice(ItemId)
		ItemDiamond = endlessCfg.GeDiamondByItemId(RandItem2)
		LastDiamond = LastDiamond - ItemDiamond
		ItemNum := int(LastDiamond / PerDiamond)
		return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, ItemNum), item.NewItem(RandItem1, 1), item.NewItem(RandItem2, 1)}
	}

	return nil
}

// 初始化档次奖励
func initGrade(Money float64, Auto int) (map[int]*Endless, int) {
	Diamond := endlessCfg.GetDiamond(Money)
	Per := []float64{0.5, 0.3, 0.2, 0.1}
	result := make(map[int]*Endless)
	for i := 1; i < 5; i++ {
		Type := ENDLESS_TYPE_FREE
		Charge := 0
		if i == 1 {
			if Money > 0 {
				Type = ENDLESS_TYPE_CHARGE
				Charge = endlessCfg.GetChargeId(Money)
			} else {
				Type = ENDLESS_TYPE_AD
			}

		}
		result[Auto] = &Endless{
			ChargeId: Charge,
			Type:     Type,
			Items:    InitReward(Diamond*Per[i-1], i),
		}
		Auto++
	}
	return result, Auto
}
