I don't usually triple post - but hey, new day, new post! Here is the updated source code which now turns a value of 1 into 001 on a three digit display, or 23 to 0023 on a four digit display, etc. (I watched the film 'The number 23' last night. Now I see it everywhre - spooky!)
function showMenuSettings()
` Show the Settings Menu (gamestate = c_menu_settings)
` When complete, set the gamestate back to c_menu_main
` Load Times Tables Settings into an array
empty array arrTables()
for n = 2 to 12
add to queue arrTables()
arrTables() = val(mid$(gSetting.tables, n - 1))
next n
load image "media\menuSettings.jpg", c_image_menu, 1
make object plain c_image_menu, 800, 600
texture object c_image_menu, c_image_menu
positionOnScreen(c_image_menu,1,1,0)
sync
time = timer()
set bitmap format 21
` *** Times Tables Selection Text
SettingsTables()
SettingsMultiplier()
SettingsTimeLimit()
SettingsExit()
`Wait to allow user to release mouse from menu click
repeat
until timer() > time + 250
leave = 0
mousedown = 0
repeat
if mousedown > 0
if mouseclick() = 0 then mousedown = 0 else mousedown = 2
else
if mouseclick() = 1 then mousedown = 1
endif
if mousedown = 1
` ****************************************
` *** Check for tables selection change
` ****************************************
hit = pick object(mousex(), mousey(), c_image_settings_tables + 2, c_image_settings_tables + 12)
if hit > 0
selected = hit - c_image_settings_tables
if selected > 1 and selected < 13
if arrTables(selected - 2) = 1 then arrTables(selected - 2) = 0 else arrTables(selected - 2) = 1
SettingsTables()
endif
endif
` ****************************************
` *** Check for max multiplier change
` ****************************************
hit = pick object(mousex(), mousey(), c_image_settings_multiplier + 1, c_image_settings_multiplier + 2)
if hit > 0
selected = hit - c_image_settings_multiplier
if selected = 1
inc gSetting.max_multiplier, 1
SettingsMultiplier()
endif
if selected = 2
if gSetting.max_multiplier > 1 then dec gSetting.max_multiplier, 1
SettingsMultiplier()
endif
endif
` ****************************************
` *** Check for time Limit change
` ****************************************
hit = pick object(mousex(), mousey(), c_image_settings_timelimit + 1, c_image_settings_timelimit + 2)
if hit > 0
selected = hit - c_image_settings_timelimit
if selected = 1
inc gSetting.time_limit, 0.5
SettingsTimeLimit()
endif
if selected = 2
if gSetting.time_limit > 3 then dec gSetting.time_limit, 0.5
SettingsTimeLimit()
endif
endif
` ****************************************
` *** Check for Exit buttons
` ****************************************
hit = pick object(mousex(), mousey(), c_image_settings_exit, c_image_settings_exit + 1)
if hit > 0
selected = hit - c_image_settings_exit
if selected = 0
gSetting.tables = ""
for n = 0 to array count(arrTables())
gSetting.tables = gSetting.tables + str$(arrtables(n))
next n
SaveSettings()
leave = 1
endif
if selected = 1
leave = 1
endif
endif
endif
if inkey$() <> "" then leave = 1
sync
until leave = 1
delete object c_image_menu
delete image c_image_menu
SettingsDeleteAll()
gamestate = c_menu_main
endfunction
function SettingsTables()
` Sets up the times tables selection options
` Can be called any time any option changes
` Settings title, X & Y Start positions, and space between options
` Title font Style and Size
` Option text size, slected an ddeselected colours
text_title$ = "Select Tables"
posX = 80
posY = 150
spaceY = 20
title_font$ = "Arial Black"
title_forecolor = rgb(255,255,255)
title_backcolor = rgb(0,0,0)
title_size = 28
option_size = 18
option_selected = rgb(0,0,255)
option_deselected = rgb(255,255,255)
option_backcolor = rgb(0,0,0)
` Delete existing objects and images
st = c_image_settings_tables
for n = st to st + 15
if object exist(n) then delete object n
if image exist(n) then delete image n
next n
set text font title_font$
set text size title_size
ink title_forecolor, title_backcolor
tw = text width(text_title$)
create bitmap 1, tw, title_size
center text bitmap width(1) / 2, 1, text_title$
get image st,1,1,bitmap width(1), bitmap height(1), 1
delete bitmap 1
make object plain st, image width(st),image height(st)
set object transparency st, 1
set object light st, 0
texture object st, st
positionOnScreen(st,posX - (image width(st / 2)),posY,1)
inc posY, spaceY
set text size option_size
for n = 2 to 12
inc posY, spaceY
if arrTables(n - 2) = 1
ink option_selected, option_backcolor
else
ink option_deselected, option_backcolor
endif
create bitmap 1, tw, option_size
center text bitmap width(1) / 2, 1, str$(n)
get image st + n,1,1,bitmap width(1), bitmap height(1), 1
delete bitmap 1
make object plain st + n, image width(st + n),image height(st + n)
` If selected, make bigger
set object transparency st + n, 1
set object light st + n, 0
texture object st + n, st + n
positionOnScreen(st + n,posX - (image width((st + n) / 2)),posY,1)
next n
endfunction
function SettingsMultiplier()
` Sets up the times tables Maximum Multiplier
` Can be called any time any option changes
` Settings title, X & Y Start positions, and space between options
` Title font Style and Size
` Option text size, slected an ddeselected colours
text_title$ = "Max M'plier"
posX = 60
posY = 420
spaceY = 26
title_font$ = "Arial Black"
title_forecolor = rgb(255,255,255)
title_backcolor = rgb(0,0,0)
title_size = 28
option_size = 24
option_selected = rgb(0,0,255)
option_deselected = rgb(255,255,255)
option_backcolor = rgb(0,0,0)
` Delete existing objects and images
st = c_image_settings_multiplier
for n = st to st + 3
if object exist(n) then delete object n
if image exist(n) then delete image n
next n
set text font title_font$
set text size title_size
ink title_forecolor, title_backcolor
tw = text width(text_title$ + "XXXX")
create bitmap 1, tw, title_size
center text bitmap width(1) / 2, 1, text_title$ + " : " + str$(gSetting.max_multiplier)
get image st,1,1,bitmap width(1), bitmap height(1), 1
delete bitmap 1
make object plain st, image width(st),image height(st)
set object transparency st, 1
set object light st, 0
texture object st, st
positionOnScreen(st,posX - (image width(st / 2)),posY,1)
inc posY, spaceY
set text size option_size
for n = 1 to 2
if n = 1 then txt$ = "< + >" else txt$ = "< - >"
inc posY, spaceY
create bitmap 1, tw, option_size
center text bitmap width(1) / 2, 1, txt$
get image st + n,1,1,bitmap width(1), bitmap height(1), 1
delete bitmap 1
make object plain st + n, image width(st + n),image height(st + n)
set object transparency st + n, 1
set object light st + n, 0
texture object st + n, st + n
positionOnScreen(st + n,posX - (image width((st + n) / 2)),posY,1)
next n
endfunction
function SettingsTimeLimit()
` Sets up the times tables Maximum Multiplier
` Can be called any time any option changes
` Settings title, X & Y Start positions, and space between options
` Title font Style and Size
` Option text size, slected an ddeselected colours
text_title$ = "Time Limit"
posX = 500
posY = 150
spaceY = 26
title_font$ = "Arial Black"
title_forecolor = rgb(255,255,255)
title_backcolor = rgb(0,0,0)
title_size = 28
option_size = 24
option_selected = rgb(0,0,255)
option_deselected = rgb(255,255,255)
option_backcolor = rgb(0,0,0)
` Delete existing objects and images
st = c_image_settings_timelimit
for n = st to st + 3
if object exist(n) then delete object n
if image exist(n) then delete image n
next n
set text font title_font$
set text size title_size
ink title_forecolor, title_backcolor
tw = text width(text_title$ + "XXXXXX")
create bitmap 1, tw, title_size
center text bitmap width(1) / 2, 1, text_title$ + " : " + str$(gSetting.time_limit)
get image st,1,1,bitmap width(1), bitmap height(1), 1
delete bitmap 1
make object plain st, image width(st),image height(st)
set object transparency st, 1
set object light st, 0
texture object st, st
positionOnScreen(st,posX - (image width(st / 2)),posY,1)
inc posY, spaceY
set text size option_size
for n = 1 to 2
if n = 1 then txt$ = "< + >" else txt$ = "< - >"
inc posY, spaceY
create bitmap 1, tw, option_size
center text bitmap width(1) / 2, 1, txt$
get image st + n,1,1,bitmap width(1), bitmap height(1), 1
delete bitmap 1
make object plain st + n, image width(st + n),image height(st + n)
set object transparency st + n, 1
set object light st + n, 0
texture object st + n, st + n
positionOnScreen(st + n,posX - (image width((st + n) / 2)),posY,1)
next n
endfunction
function SettingsExit()
` Sets up the Exit / Cancel Buttons
` Can be called any time any option changes
` Settings title, X & Y Start positions, and space between options
` Title font Style and Size
` Option text size, slected an ddeselected colours
text_title$ = "Null"
text_Save$ = "Save"
text_Cancel$ = "Cancel"
posX = 500
posY = 500
spaceX = 80
spaceY = 26
title_font$ = "Arial Black"
title_forecolor = rgb(255,255,255)
title_backcolor = rgb(0,0,0)
title_size = 28
option_size = 24
option_selected = rgb(0,0,255)
option_deselected = rgb(255,255,255)
option_backcolor = rgb(0,0,0)
` Delete existing objects and images
st = c_image_settings_Exit
for n = st to st + 2
if object exist(n) then delete object n
if image exist(n) then delete image n
next n
set text font title_font$
set text size title_size
ink title_forecolor, title_backcolor
tw = text width(text_Save$ + "XX")
create bitmap 1, tw, title_size
center text bitmap width(1) / 2, 1, text_Save$
get image st,1,1,bitmap width(1), bitmap height(1), 1
delete bitmap 1
make object plain st, image width(st),image height(st)
set object transparency st, 1
set object light st, 0
texture object st, st
positionOnScreen(st,posX - (image width(st / 2)),posY,1)
inc posX, spaceX
inc st
tw = text width(text_Cancel$ + "XX")
create bitmap 1, tw, title_size
center text bitmap width(1) / 2, 1, text_Cancel$
get image st,1,1,bitmap width(1), bitmap height(1), 1
delete bitmap 1
make object plain st, image width(st),image height(st)
set object transparency st, 1
set object light st, 0
texture object st, st
positionOnScreen(st,posX - (image width(st / 2)),posY,1)
endfunction
function SettingsDeleteAll()
st = c_image_settings_tables
for n = st to st + 15
if object exist(n) then delete object n
if image exist(n) then delete image n
next n
st = c_image_settings_multiplier
for n = st to st + 3
if object exist(n) then delete object n
if image exist(n) then delete image n
next n
st = c_image_settings_timelimit
for n = st to st + 3
if object exist(n) then delete object n
if image exist(n) then delete image n
next n
st = c_image_settings_Exit
for n = st to st + 2
if object exist(n) then delete object n
if image exist(n) then delete image n
next n
endfunction
function free_sprite()
repeat
inc n
until sprite exist(n)=0
endfunction n
function free_image()
repeat
inc n
until image exist(n)=0
endfunction n
function setscore(value)
value$=str$(value)
if len(value$)<numberofscoredigits
repeat
value$="0"+value$
until len(value$)=numberofscoredigits
endif
if len(value$)>numberofscoredigits
value$=right$(value$,numberofscoredigits)
endif
for digit=0 to numberofscoredigits-1
set sprite image scoredigit+digit,digitimage+val(mid$(value$,digit+1))
next digit
endfunction
function sethits(value)
value$=str$(value)
if len(value$)<numberofhitsdigits
repeat
value$="0"+value$
until len(value$)=numberofhitsdigits
endif
if len(value$)>numberofhitsdigits
value$=right$(value$,numberofhitsdigits)
endif
for digit=0 to numberofhitsdigits-1
set sprite image hitsdigit+digit,digitimage+val(mid$(value$,digit+1))
next digit
endfunction
function settimer(value)
value$=str$(value)
if len(value$)<numberoftimerdigits
repeat
value$="0"+value$
until len(value$)=numberoftimerdigits
endif
if len(value$)>numberoftimerdigits
value$=right$(value$,numberoftimerdigits)
endif
for digit=0 to numberoftimerdigits-1
set sprite image timerdigit+digit,digitimage+val(mid$(value$,digit+1))
next digit
endfunction
We should be able to use the same digit functions for creating the answers to go by each ship. Where is the question going to go? On the mother ship?