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