score in crawl space Library

How to save and load different HighScores for different Levels using crawl space Library?Please help me… [import]uid: 82446 topic_id: 19510 reply_id: 319510[/import]

I have not tried the crawl space library, but Ice does the same thing.

Link: http://developer.anscamobile.com/code/ice
I am currently using director class so try making a main.lua,Ice2.lua and a Ice3.lua. Try using each snippet of code in the right module. I have tested this out and it work, so try. If you need further explanation check out the link above.

Here is some sample code:

[code]
– main.lua
function changeScene (e)
if(e.phase == “ended”) then
director:changeScene(e.target.scene)
end
end

local director = require(“director”);
local mainGroup = display.newGroup();

mainGroup:insert(director.directorView);
director:changeScene(“ice2”);


–Ice2.lua:

module(…, package.seeall)

function new()

local ice2Group = display.newGroup();

require( “ice” )

local scores = ice:loadBox( “scores” )

local high = scores:retrieve(“best”)
print(high)

local gameOver = false

local physics = require(“physics”)
physics.start()
physics.setGravity(0,5)
local ballGroup = display.newGroup()
local score = 0

local score_txt =display.newText("Score: ",0,0,nil,30)
score_txt.x = 100; score_txt.y = 50
score_txt:setTextColor(255,0,0)
score_txt.text = "Score: "… score
point = 0
local scoreText = display.newText("Points: ",0,0,nil,30)
scoreText.x = 100
scoreText.y = 100
scoreText:setTextColor(255,0,0)
scoreText.text = “Points:”… point

local function spawn_ball()
if gameOver == false then
local ball = display.newCircle(ballGroup,0,0,30)
ball.x = math.random(50,300)
ball.y = -50
physics.addBody(ball, {radius = 30})
ball.name = “ball”
end
end

timer.performWithDelay(500, spawn_ball, 0)

local basket = display.newRect(0,0,50,70)
basket.x = display.contentWidth/2
basket.y = display.contentHeight - 80
physics.addBody(basket, “static”)

local function drag(event)
if event.phase == “began” then
event.target.isFocus = true
elseif event.phase == “moved” and event.target.isFocus then
event.target.x = event.x
event.target.y = event.y
end
return true
end

basket:addEventListener(“touch”, drag)

local function show_highScore()
gameOver = not gameOver

scores:storeIfHigher( “best”, score )
scores:save()
local highText = display.newText("", 0,0,nil,30)
highText.x = display.contentWidth/2
highText.y = display.contentHeight/2
if score > high then
highText.text = "HighScore: "… scores:retrieve(“best”)
scoreText.text = "HighScore: "… scores:retrieve(“best”)
else
highText.text = “NO NEW HIGH SCORE!”
end
end

local function show_text()
local text = display.newText("+1", 0,0, nil, 30)

score = score + 1

if score > scores:retrieve(“best”) then
print(“new high score”)
end

score_txt.text = "Score: "… score
text.alpha = 1
text.x = basket.x
text.y = basket.y - 100
transition.to(text, {time=1000,y = text.y - 50, alpha = 1, onComplete = function() display.remove(text) end})
end

local function onCollision(event)
if event.phase == “began” and event.other.name == “ball” then
display.remove(event.other)
show_text()
end
end

basket:addEventListener(“collision”, onCollision)

timer.performWithDelay(50000, show_highScore, 1)

Tap = display.newText( “Tap”, 20, 200, “Helvetica”, 20 )
Tap.x = 30
Tap.y = 450

function ther5(event)
director:changeScene( “Ice3”, “fade” )
end
Tap:addEventListener(“tap”, ther5);

return ice2Group;

end


– Ice3.lua

module(…, package.seeall)

function new()

local ice2Group = display.newGroup();
– main.lua
require(“ice”)
myData = nil

– load previously saved data
– EDIT: if no data has been saved, it will create the myData.ice where data will be saved
local scores = ice:loadBox( “scores” )

local score = scores:retrieve( “best” )
local scoreText = display.newText( "Score: "…score, 20, 0,nil, 20)
scoreText:setTextColor(255,255,255)

local function show_highScore()
local highText = display.newText("", 0,0,nil,30)
highText.x = display.contentWidth/2
highText.y = display.contentHeight/2
if score > 40 then
highText.text = "HighScore: "… scores:retrieve(“best”)
else
highText.text = “NO NEW HIGH SCORE!”
end
end

timer.performWithDelay(2000, show_highScore)

Tap = display.newText( “Tap”, 20, 170, “Helvetica”, 30 )
Tap.x = 100
Tap.y = 400

function ther5(event)
director:changeScene( “ice2”, “fade” )
end
Tap:addEventListener(“tap”, ther5);

return ice2Group;

end
[import]uid: 23689 topic_id: 19510 reply_id: 75381[/import]

In crawlSpaceLib you would do something like this:
[lua]local data = nil

– Try to load the saved data
if not Load() then

– If no data is found create default data
data =
{
bgmVolume = 1,
sfxVolume = 1,
difficulty = 1,
highScoreEasy = 0,
highScoreMedium = 0,
highScoreHard = 0
}

– Save default data
Save(data)
else
– Data file was found, load the file into a Lua table
data = Load()
end

– Change the high score in easy to 100 and save the new score
data.highScoreEasy = 100
Save(data)[/lua]

Also, Tools Library has similar functions (read/write instead of Load/Save) but uses JSON to save and load data:
http://toolslib.blogspot.com/
[import]uid: 10048 topic_id: 19510 reply_id: 78294[/import]