1
# -*- test-case-name: axiom.test.test_upgrading -*-
4
from axiom.item import Item
5
from axiom.attributes import text, integer, reference
7
from axiom.upgrade import registerUpgrader
9
class Adventurer(Item):
10
typeName = 'test_app_player'
17
typeName = 'test_app_sword'
21
damagePerHit = integer()
25
def upgradePlayerAndSword(oldplayer):
26
newplayer = oldplayer.upgradeVersion('test_app_player', 1, 2)
27
newplayer.name = oldplayer.name
29
oldsword = oldplayer.sword
31
newsword = oldsword.upgradeVersion('test_app_sword', 1, 2)
32
newsword.name = oldsword.name
33
newsword.damagePerHit = oldsword.hurtfulness * 2
34
newsword.owner = newplayer
36
return newplayer, newsword
38
def player1to2(oldplayer):
39
newplayer, newsword = upgradePlayerAndSword(oldplayer)
42
def sword1to2(oldsword):
43
oldPlayerType = oldsword.store.getOldVersionOf('test_app_player', 1)
44
oldplayer = list(oldsword.store.query(oldPlayerType,
45
oldPlayerType.sword == oldsword))[0]
46
newplayer, newsword = upgradePlayerAndSword(oldplayer)
50
registerUpgrader(sword1to2, 'test_app_sword', 1, 2)
51
registerUpgrader(player1to2, 'test_app_player', 1, 2)