1 | _ = require 'underscore'
|
2 | N = require '../'
|
3 | request = require 'superagent'
|
4 | async = require 'async'
|
5 |
|
6 | Weapons = N 'weapon', N.Route.MultiRoute
|
7 |
|
8 | Weapons.Field \hitPoints \int
|
9 |
|
10 |
|
11 | class Units extends N 'unit' abstract: true
|
12 |
|
13 | Attack: @_WrapPromise (targetId, done) ->
|
14 | @targetType.Fetch targetId
|
15 | .then ~>
|
16 | it.life -= @Weapon.hitPoints
|
17 | it.Save done
|
18 | .fail done
|
19 |
|
20 | LevelUp: @_WrapPromise (done) ->
|
21 | @level++
|
22 | @Save done
|
23 |
|
24 | Units.Field \level \int
|
25 | ..Field \life \int
|
26 | ..HasOne Weapons
|
27 |
|
28 | Units.Init()
|
29 |
|
30 | class UnitRoute extends N.Route.MultiRoute
|
31 |
|
32 | Config: ->
|
33 | super()
|
34 |
|
35 | @Put '/:id/levelUp' -> it.instance.LevelUp!
|
36 |
|
37 | @Put '/:id/attack/:targetId' ~> it.instance.Attack +it.params.targetId
|
38 |
|
39 | Players = Units.Extend 'player', UnitRoute
|
40 | Monsters = Units.Extend 'monster', UnitRoute
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 | weaponId = []
|
49 |
|
50 | async.series do
|
51 | * addWeapon: (done) ->
|
52 | N.client.Post '/api/1/weapons', {hitPoints: 2}, (err, {body}) ->
|
53 | weaponId[*] = body.id
|
54 | done err, body
|
55 |
|
56 | addWeapon2: (done) ->
|
57 | N.client.Post '/api/1/weapons', {hitPoints: 1}, (err, {body}) ->
|
58 | weaponId[*] = body.id
|
59 | done err, body
|
60 |
|
61 | addPlayer: (done) ->
|
62 | N.client.Post '/api/1/players', {level: 1, life: 100, weaponId: weaponId.0}, (err, {body}) -> done err, body
|
63 |
|
64 | testGet: (done) ->
|
65 | N.client.Get '/api/1/players', (err, {body}) -> done err, body
|
66 |
|
67 | levelUp: (done) ->
|
68 | N.client.Put '/api/1/players/1/levelUp', {}, (err, {body}) -> done err, body
|
69 |
|
70 | levelUp2: (done) ->
|
71 | N.client.Put '/api/1/players/1/levelUp', {}, (err, {body}) -> done err, body
|
72 |
|
73 | testGetMonster: (done) ->
|
74 | N.client.Get '/api/1/monsters', (err, {body}) -> done err, body
|
75 | addMonster: (done) ->
|
76 | N.client.Post '/api/1/monsters', {level: 1, life: 20, weaponId: weaponId.1}, (err, {body}) -> done err, body
|
77 |
|
78 | testGetMonster2: (done) ->
|
79 | N.client.Get '/api/1/monsters', (err, {body}) -> done err, body
|
80 |
|
81 | levelUpMonster: (done) ->
|
82 | N.client.Put '/api/1/monsters/1/levelUp', {}, (err, {body}) -> done err, body
|
83 |
|
84 | levelUpMonster2: (done) ->
|
85 | N.client.Put '/api/1/monsters/1/levelUp', {}, (err, {body}) -> done err, body
|
86 |
|
87 | playerAttack: (done) ->
|
88 | N.client.Put '/api/1/players/1/attack/1', {}, (err, {body}) -> done err, body
|
89 |
|
90 | monsterAttack: (done) ->
|
91 | N.client.Put '/api/1/monsters/1/attack/1', {}, (err, {body}) -> done err, body
|
92 |
|
93 | monsterAttack1: (done) ->
|
94 | N.client.Put '/api/1/monsters/1/attack/1', {}, (err, {body}) -> done err, body
|
95 |
|
96 | monsterAttack2: (done) ->
|
97 | N.client.Put '/api/1/monsters/1/attack/1', {}, (err, {body}) -> done err, body
|
98 |
|
99 | monsterAttack3: (done) ->
|
100 | N.client.Put '/api/1/monsters/1/attack/1', {}, (err, {body}) -> done err, body
|
101 |
|
102 | monsterAttack4: (done) ->
|
103 | N.client.Put '/api/1/monsters/1/attack/1', {}, (err, {body}) -> done err, body
|
104 |
|
105 | , (err, results) ->
|
106 | util = require 'util'
|
107 | util.debug util.inspect err, {depth: null}
|
108 | util.debug util.inspect results, {depth: null}
|