add energy consumption by mines
arnaucube arnaucube@gmail.com
Wed, 19 Jun 2019 22:54:33 +0200
2 files changed,
32 insertions(+),
4 deletions(-)
M
models/calc.go
→
models/calc.go
@@ -59,6 +59,25 @@ r := (perHour / 60) * delta * constants.MineVelocity
return int64(r) } +func MetalMineEnergyConsumption(ilvl int64) int64 { + lvl := float64(ilvl) + // 10 * lvl * 1.1^lvl + c := 10 * lvl * math.Pow(1.1, lvl) + return int64(c) +} +func CrystalMineEnergyConsumption(ilvl int64) int64 { + lvl := float64(ilvl) + // 10 * lvl * 1.1^lvl + c := 10 * lvl * math.Pow(1.1, lvl) + return int64(c) +} +func DeuteriumMineEnergyConsumption(ilvl int64) int64 { + lvl := float64(ilvl) + // 20 * lvl * 1.1^lvl + c := 10 * lvl * math.Pow(1.1, lvl) + return int64(c) +} + // https://ogame.fandom.com/wiki/Buildings // https://ogame.fandom.com/wiki/Metal_Mine
M
models/planet.go
→
models/planet.go
@@ -69,20 +69,18 @@ newPlanet.Buildings = make(map[string]int64)
newPlanet.Buildings["metalmine"] = 1 newPlanet.Buildings["crystalmine"] = 1 newPlanet.Buildings["deuteriummine"] = 1 - newPlanet.Buildings["energymine"] = 1 + // newPlanet.Buildings["energymine"] = 1 err := db.Planets.Insert(newPlanet) if err != nil { return nil, err } - fmt.Println(newPlanet.Resources) var planet *Planet err = db.Planets.Find(bson.M{"ownerid": newPlanet.OwnerId}).One(&planet) if err != nil { return nil, err } - fmt.Println(planet.Resources) return planet, nil }@@ -229,6 +227,17 @@
// upgrade level of building in planet p.Buildings[p.CurrentBuild.Building] += 1 + // substrate the energy used by the building + var usedEnergy int64 + if p.CurrentBuild.Building == "metalmine" { + usedEnergy = MetalMineEnergyConsumption(p.Buildings["metalmine"]) + } else if p.CurrentBuild.Building == "crystalmine" { + usedEnergy = CrystalMineEnergyConsumption(p.Buildings["crystalmine"]) + } else if p.CurrentBuild.Building == "deuteriummine" { + usedEnergy = DeuteriumMineEnergyConsumption(p.Buildings["deuteriummine"]) + } + p.Resources.Energy = p.Resources.Energy - usedEnergy + // build end p.CurrentBuild.Title = "" p.CurrentBuild.Building = ""@@ -274,7 +283,7 @@ }
// add current task to planet p.CurrentBuild.Building = building - p.CurrentBuild.Title = building + " - Level " + strconv.Itoa(int(p.Buildings[building])) + p.CurrentBuild.Title = building + " - Level " + strconv.Itoa(int(p.Buildings[building])+1) p.CurrentBuild.Ends = endsTime p.CurrentBuild.CountDown = p.CurrentBuild.Ends.Unix() - time.Now().Unix()