Read inventory int array
This commit is contained in:
parent
49d29a249a
commit
24ce8bdc7f
@ -16,8 +16,8 @@ module Commands =
|
|||||||
Name = nickname
|
Name = nickname
|
||||||
Inventory = [| hack ; shield |]
|
Inventory = [| hack ; shield |]
|
||||||
Events = [||]
|
Events = [||]
|
||||||
XP = 0
|
// XP = 0
|
||||||
Achievements = [||]
|
// Achievements = [||]
|
||||||
Traits = PlayerTraits.empty
|
Traits = PlayerTraits.empty
|
||||||
Bank = 100<GBT> }
|
Bank = 100<GBT> }
|
||||||
|
|
||||||
|
@ -148,7 +148,9 @@ let handleHack (ctx : IDiscordContext) =
|
|||||||
|
|
||||||
let sb = StringBuilder("Here, ")
|
let sb = StringBuilder("Here, ")
|
||||||
|
|
||||||
let isFirstTrainer = player.Achievements |> Seq.contains trainerAchievement |> not
|
// TODO DB:
|
||||||
|
// let isFirstTrainer = player.Achievements |> Seq.contains trainerAchievement |> not
|
||||||
|
let isFirstTrainer = true
|
||||||
if isFirstTrainer then
|
if isFirstTrainer then
|
||||||
do! DbService.addAchievement player.DiscordId trainerAchievement
|
do! DbService.addAchievement player.DiscordId trainerAchievement
|
||||||
|
|
||||||
@ -180,7 +182,9 @@ let handleArsenal (ctx : IDiscordContext) =
|
|||||||
do! DbService.updatePlayer updatedPlayer
|
do! DbService.updatePlayer updatedPlayer
|
||||||
let embed = Embeds.getArsenalEmbed updatedPlayer
|
let embed = Embeds.getArsenalEmbed updatedPlayer
|
||||||
do! ctx.FollowUp(embed) |> Async.AwaitTask
|
do! ctx.FollowUp(embed) |> Async.AwaitTask
|
||||||
if not (player.Achievements |> Array.contains trainerAchievement) then
|
// TODO DB:
|
||||||
|
// if not (player.Achievements |> Array.contains trainerAchievement) then
|
||||||
|
if true then
|
||||||
do! Async.Sleep 3000
|
do! Async.Sleep 3000
|
||||||
let rewards = [ $"{defaultHack.Name} Hack" ; $"{defaultShield.Name} Shield" ]
|
let rewards = [ $"{defaultHack.Name} Hack" ; $"{defaultShield.Name} Shield" ]
|
||||||
let embed = Embeds.getAchievementEmbed rewards "You completed the Training Dojo and collected loot." trainerAchievement
|
let embed = Embeds.getAchievementEmbed rewards "You completed the Training Dojo and collected loot." trainerAchievement
|
||||||
|
@ -13,6 +13,7 @@ type User = {
|
|||||||
DiscordId : uint64
|
DiscordId : uint64
|
||||||
Bank : int<GBT>
|
Bank : int<GBT>
|
||||||
Strength : int
|
Strength : int
|
||||||
|
Inventory : int array
|
||||||
}
|
}
|
||||||
|
|
||||||
let mongo = MongoClient(Environment.GetEnvironmentVariable("CONN_STRING"))
|
let mongo = MongoClient(Environment.GetEnvironmentVariable("CONN_STRING"))
|
||||||
@ -29,24 +30,24 @@ let mapBack user (bson : BsonDocument) : PlayerData =
|
|||||||
{ DiscordId = user.DiscordId
|
{ DiscordId = user.DiscordId
|
||||||
Name = user.Name
|
Name = user.Name
|
||||||
Inventory =
|
Inventory =
|
||||||
tryWithDefault bson "Inventory" [||] (fun v ->
|
user.Inventory
|
||||||
v.AsBsonArray
|
|> Array.map (fun iId ->
|
||||||
|> Seq.map (fun (bv : BsonValue) -> BsonSerializer.Deserialize<Item>(bv.ToBsonDocument()))
|
Armory.battleItems
|
||||||
|> Seq.toArray)
|
|> Array.tryFind (fun i -> i.Id = iId)
|
||||||
|
|> function
|
||||||
|
| Some i -> [| i |]
|
||||||
|
| None -> [||])
|
||||||
|
|> Array.concat
|
||||||
Events = tryWithDefault bson "Events" [||] (fun v ->
|
Events = tryWithDefault bson "Events" [||] (fun v ->
|
||||||
v.AsBsonArray
|
v.AsBsonArray
|
||||||
|> Seq.map (fun (bv : BsonValue) ->
|
|> Seq.map (fun (bv : BsonValue) ->
|
||||||
BsonSerializer.Deserialize<PlayerEvent>(bv.ToBsonDocument()))
|
BsonSerializer.Deserialize<PlayerEvent>(bv.ToBsonDocument()))
|
||||||
|> Seq.toArray)
|
|> Seq.toArray)
|
||||||
Traits =
|
Traits = { PlayerTraits.empty with Strength = user.Strength }
|
||||||
(let traits =
|
// Achievements =
|
||||||
tryWithDefault bson "Traits" PlayerTraits.empty (fun v ->
|
// tryWithDefault bson "Achievements" [||] (fun v ->
|
||||||
BsonSerializer.Deserialize<PlayerTraits>(v.ToBsonDocument()))
|
// v.AsBsonArray |> Seq.map (fun (bv : BsonValue) -> bv.AsString) |> Seq.toArray)
|
||||||
{ traits with Strength = user.Strength})
|
// XP = tryWithDefault bson "XP" 0 (fun v -> v.AsInt32)
|
||||||
Achievements =
|
|
||||||
tryWithDefault bson "Achievements" [||] (fun v ->
|
|
||||||
v.AsBsonArray |> Seq.map (fun (bv : BsonValue) -> bv.AsString) |> Seq.toArray)
|
|
||||||
XP = tryWithDefault bson "XP" 0 (fun v -> v.AsInt32)
|
|
||||||
Bank = user.Bank
|
Bank = user.Bank
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,9 +63,10 @@ let tryFindPlayer connStr (id : uint64) =
|
|||||||
|> Sql.executeAsync (fun read ->
|
|> Sql.executeAsync (fun read ->
|
||||||
{
|
{
|
||||||
DiscordId = read.int64 "discordId" |> uint64
|
DiscordId = read.int64 "discordId" |> uint64
|
||||||
|
Name = read.string "displayName"
|
||||||
Bank = read.int "gbt" * 1<GBT>
|
Bank = read.int "gbt" * 1<GBT>
|
||||||
Strength = read.int "strength"
|
Strength = read.int "strength"
|
||||||
Name = read.string "displayName"
|
Inventory = read.intArray "inventory"
|
||||||
})
|
})
|
||||||
|> Async.AwaitTask
|
|> Async.AwaitTask
|
||||||
|
|
||||||
|
@ -124,8 +124,8 @@ module Types =
|
|||||||
Inventory : Item array
|
Inventory : Item array
|
||||||
Events : PlayerEvent array
|
Events : PlayerEvent array
|
||||||
Traits : PlayerTraits
|
Traits : PlayerTraits
|
||||||
Achievements : string array
|
// Achievements : string array
|
||||||
XP : int
|
// XP : int
|
||||||
Bank : int<GBT>
|
Bank : int<GBT>
|
||||||
}
|
}
|
||||||
with member this.basicPlayer = { Id = this.DiscordId ; Name = this.Name }
|
with member this.basicPlayer = { Id = this.DiscordId ; Name = this.Name }
|
||||||
@ -135,8 +135,8 @@ module Types =
|
|||||||
Inventory = [||]
|
Inventory = [||]
|
||||||
Events = [||]
|
Events = [||]
|
||||||
Traits = PlayerTraits.empty
|
Traits = PlayerTraits.empty
|
||||||
Achievements = [||]
|
// Achievements = [||]
|
||||||
XP = 0
|
// XP = 0
|
||||||
Bank = 0<GBT> }
|
Bank = 0<GBT> }
|
||||||
|
|
||||||
module Armory =
|
module Armory =
|
||||||
|
Loading…
x
Reference in New Issue
Block a user