blob: 832eb3d555851d7f39bcb4aaaab338a979181249 [file] [log] [blame]
Austin Schuh272c6132020-11-14 16:37:52 -08001 // THIS IS JUST TO SHOW THE CODE, PLEASE DO IMPORT FLATBUFFERS WITH SPM..
2import FlatBuffers
3
4typealias Monster = MyGame.Sample.Monster
5typealias Weapon = MyGame.Sample.Weapon
6typealias Color = MyGame.Sample.Color
7typealias Vec3 = MyGame.Sample.Vec3
8
9func main() {
10 let expectedDMG: [Int16] = [3, 5]
11 let expectedNames = ["Sword", "Axe"]
12
13 var builder = FlatBufferBuilder(initialSize: 1024)
14 let weapon1Name = builder.create(string: expectedNames[0])
15 let weapon2Name = builder.create(string: expectedNames[1])
16
17 let weapon1Start = Weapon.startWeapon(&builder)
18 Weapon.add(name: weapon1Name, &builder)
19 Weapon.add(damage: expectedDMG[0], &builder)
20 let sword = Weapon.endWeapon(&builder, start: weapon1Start)
21 let weapon2Start = Weapon.startWeapon(&builder)
22 Weapon.add(name: weapon2Name, &builder)
23 Weapon.add(damage: expectedDMG[1], &builder)
24 let axe = Weapon.endWeapon(&builder, start: weapon2Start)
25
26 let name = builder.create(string: "Orc")
27 let inventory: [Byte] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
28 let inventoryOffset = builder.createVector(inventory)
29
30 let weaponsOffset = builder.createVector(ofOffsets: [sword, axe])
31 let pos = MyGame.Sample.createVec3(x: 1, y: 2, z: 3)
32
33 let orc = Monster.createMonster(&builder,
34 structOfPos: pos,
35 hp: 300,
36 offsetOfName: name,
37 vectorOfInventory: inventoryOffset,
38 color: .red,
39 vectorOfWeapons: weaponsOffset,
40 equippedType: .weapon,
41 offsetOfEquipped: axe)
42 builder.finish(offset: orc)
43
44 let buf = builder.sizedByteArray
45 let monster = Monster.getRootAsMonster(bb: ByteBuffer(bytes: buf))
46
47 assert(monster.mana == 150)
48 assert(monster.hp == 300)
49 assert(monster.name == "Orc")
50 assert(monster.color == MyGame.Sample.Color.red)
51 assert(monster.pos != nil)
52 for i in 0..<monster.inventoryCount {
53 assert(i == monster.inventory(at: i))
54 }
55
56 for i in 0..<monster.weaponsCount {
57 let weap = monster.weapons(at: i)
58 let index = Int(i)
59 assert(weap?.damage == expectedDMG[index])
60 assert(weap?.name == expectedNames[index])
61 }
62 assert(monster.equippedType == .weapon)
63 let equipped = monster.equipped(type: Weapon.self)
64 assert(equipped?.name == "Axe")
65 assert(equipped?.damage == 5)
66 print("Monster Object is Verified")
67}