Guys,
Been working a little on getting more of the intex working. Rob, I have sent you an email with a new font to try.
So update the following:
Add:
Update:
Update:
Been working a little on getting more of the intex working. Rob, I have sent you an email with a new font to try.
So update the following:
Add:
Players.bb Function DrawMapPlan() For p.player=Each player If p = First player Then xx=p\x/32:yy=p\y/32 Next For x=-80 To 80 For y=-64 To 64 If x+xx>-1 And x+xx<256 And y+yy>-1 And y+yy<256 If map(x+xx,y+yy,LayerCollision)>0 And map(x+xx,y+yy,layer_visible)>0 If map(x+xx,y+yy,LayerCollision)=czVisDynamic ; dynamic Color 100,200,100 Else ; static Color 0,20,0 EndIf Rect 320+(x*2),240+(y*2),2,2 EndIf EndIf Next Next c=255 For p.player=Each player If p = First player Then Color c,0,0 Else Color 0,0,c Rect 320+((xx-(Floor(p\x/32)))*2),240+((yy-(Floor(p\y/32)))*2),2,2 c=c-1 If c=150 Then c=255 Next End Function
Update:
;Function handleBullets() - Weapons.bb For al.alien = Each alien If ImagesCollide(bulletgfx,b\x,b\y,1, al\image,al\x-al\offset,al\y-al\offset,al\dir) ;circlesoverlap(al\x,al\y,al\radius,bx+16,by+16,3) killed = alien_hit(al,b\damage) If killed = True And b\scenary<>1 Then ;Update counter for player status b\owner\kills = b\owner\kills + 1 End If ok=False ;bullet hit alien EndIf Next
Update:
;Function Runscript - script.bb Case "addhealth" ;Give health to player Player_GiveHealth(pl, si\param) [/code] Replace - Intex-New.bb [code] ;Images Global intexBackground = LoadImage("gfx\intexbg.png") Global intexFrame = LoadImage("gfx\intex-frame.png") Global intexText = LoadAnimImage("gfx\intex-text-sm4.png",8,10,0,41) MaskImage intexText,255,0,255 ;Global intexWeapon = LoadAnimImage("gfx\intex-weapons.png",320,88,0,6) ;MaskImage intexWeapon,255,0,255 Global bfont = LoadAnimImage("gfx\bitfnt.png",5,5,0,100) Function btext(x,y,t$,hcentre=False,vcentre=False) If hcentre Then x=x-(Len(t)*3) If vcentre Then y=y-3 For n=1 To Len(t) DrawImage bfont,x,y,Asc(Mid(t,n,1))-32 x=x+6 Next End Function Global intexChars$ = "*ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.:?!" Const pauseMax = 75 Const maxLines = 20 Const draw_char_delay_time=5 Const charWidth = 7 Const xOffset = 160 Const yOffset = 112 Type MenuSystem Field id Field build Field bChar Field bLine Field menuText$[maxLines] Field x[maxLines] Field y[maxLines] Field subMenu[maxLines] Field highlight[maxLines] Field total Field pauseCounter Field cursorRow Field cursorX Field cursorY Field bCharCounter End Type Global intexMenu.MenuSystem Global gotr Global gotg Global gotb Function GetRGB(image_name,x,y) argb=ReadPixelFast(x,y,ImageBuffer(image_name)) gotr=(ARGB Shr 16) And $ff gotg=(ARGB Shr 8) And $ff gotb=ARGB And $ff End Function Function WriteRGB(image_name,x,y,red,green,blue) argb=(blue Or (green Shl 8) Or (red Shl 16) Or ($ff000000)) WritePixelFast x,y,argb,ImageBuffer(image_name) End Function Function halfbright(source1,x1,y1,bias#) result = CreateImage(ImageWidth(source1),ImageHeight(source1)) source2 = CreateImage(ImageWidth(source1),ImageHeight(source1)) GrabImage source2,x1,y1 LockBuffer ImageBuffer(source1) LockBuffer ImageBuffer(source2) LockBuffer ImageBuffer(result) For x=0 To ImageWidth(source1)-1 For y=0 To ImageHeight(source1)-1 GetRGB(source1,x,y) r1#=gotr g1#=gotg b1#=gotb GetRGB(source2,x,y) r2#=gotr g2#=gotg b2#=gotb r3#=(r1*bias)+(r2*(1-bias)) g3#=(g1*bias)+(g2*(1-bias)) b3#=(b1*bias)+(b2*(1-bias)) WriteRGB(result,x,y,r3,g3,b3) Next Next UnlockBuffer ImageBuffer(source1) UnlockBuffer ImageBuffer(source2) UnlockBuffer ImageBuffer(result) Return result End Function Function IntexMenu(pl.player) Local currentMenu = 0 Local exitMenu = False Local preBootCounter = 0 Local menuUpdateCounter ;Create a menu store intexMenu.MenuSystem = New MenuSystem ;Get the boot text GetMenuText(currentMenu,pl) ibg = halfbright(intexbackground,xoffset,yoffset,.8) While Not exitMenu = True ;Set buffer SetBuffer BackBuffer() ;Draw DrawBlock intexFrame,xOffset-15,yOffset-12 DrawBlock ibg,xOffset,yOffset ;Drawtext ProcessMenuText(pl) ;Individual menu functions If intexMenu\build = False Or currentMenu = 11 Then Select currentMenu Case 0 ;Intex Boot ;Set menu to Main Menu currentMenu = 1 GetMenuText(currentMenu,pl) Case 1,2,3 ;Main Menu DrawImage intexText,32+xOffset,intexMenu\y[intexMenu\highlight[intexMenu\cursorRow]], 0 ;Menu Up/Down If menuUpdateCounter = 0 Then If control(pUp,pl\id) And intexMenu\cursorRow > 1 Then intexMenu\cursorRow = intexMenu\cursorRow - 1 menuUpdateCounter = 10 ElseIf control(pDown,pl\id) And intexMenu\highlight[intexMenu\cursorRow + 1] <> 0 Then intexMenu\cursorRow = intexMenu\cursorRow + 1 menuUpdateCounter = 10 End If Else ;Control the speed of the menu movement If menuUpdateCounter > 0 Then menuUpdateCounter = menuUpdateCounter - 1 End If End If ;Menu select If control(pfire1,pl\id) And intexMenu\subMenu[intexMenu\highlight[intexMenu\cursorRow]] > 0 Then currentMenu = intexMenu\subMenu[intexMenu\highlight[intexMenu\cursorRow]] GetMenuText(currentMenu,pl) End If Case 4 ;Radar Service DrawMapPlan() If control(pfire1,pl\id) Then currentMenu = 1 GetMenuText(currentMenu,pl) End If Case 7 If control(pfire1,pl\id) Then ;Return to main menu currentMenu = 1 GetMenuText(currentMenu,pl) End If Case 10 ;Disconnect exitMenu = True End Select End If ;Draw Flip True Wend ;Clear keys FlushKeys() ;Tidyup Delete Each menuSystem End Function Function GetMenuText(menu, pl.player) Local totalLines, lines Local lineText$, x, y, subMenu, max Local highlight ;Wait until no fire keys While control(pfire1, pl\id) Wend ;Set remaining fields intexMenu\build = True intexMenu\bChar = 0 intexMenu\bLine = 1 intexMenu\id = menu intexMenu\pauseCounter = 0 intexMenu\cursorRow = 1 intexMenu\bCharCounter = 0 Select menu Case 0 ;Intex Boot Restore menuIntexBoot Case 1 ;Menu Restore menuIntexMain Case 2 ;Weapon Supplies Restore menuIntexWeaponsSupply Case 3 ;Tool Supplies Restore menuIntexToolSupply Case 4 ;Radar Service Restore menuIntexRadarService ;intexMenu\build = False Case 7 ;Statistics Restore menuIntexStatistics Case 10 ;Disconnect Restore menuIntexDisconnect End Select ;Clear For lines = 1 To maxLines intexMenu\highlight[lines] = 0 intexMenu\menuText$[lines] = "" Next ;Process the data? If intexmenu\build = True Then ;Read the data Read totalLines For lines = 1 To totalLines Read lineText, x, y, subMenu, highlight intexMenu\menuText$[lines] = UpdateTags(Upper(lineText), pl) intexMenu\x[lines] = x + xOffset intexMenu\y[lines] = y + yOffset intexMenu\subMenu[lines] = subMenu ;Set line selection If highlight <> -1 Then intexMenu\highlight[highlight] = Lines End If Next ;Set remaining fields intexMenu\total = totalLines + 1 End If ;Clear keys FlushKeys() End Function Function UpdateTags$(lineText$, pl.player) ;Update tags lineText = Replace(lineText,"%PLSCORE%",LSet(pl\score,6)) lineText = Replace(lineText,"%PLKILLS%",pl\kills) ;lineText = Replace(lineText,"%PLCREDITS%",LSet(pl\credits,6)) ;lineText = Replace(lineText,"%PLSHOTS%",LSet(pl\shots,6)) ;lineText = Replace(lineText,"%PLDOORS%",LSet(pl\doors,6)) ;lineText = Replace(lineText,"%PLAMMO%",LSet(pl\clip,6)) lineText = Replace(lineText,"%PLCREDITS%",pl\credits) lineText = Replace(lineText,"%PLSHOTS%",pl\shots) lineText = Replace(lineText,"%PLDOORS%",pl\doors) lineText = Replace(lineText,"%PLAMMO%",pl\clip) lineText = Replace(lineText,"%PLENERGY%","GOOD") lineText = Replace(lineText,"%PLCURRENTWEAPON%",Upper(pl\weapon\name)) ;Current lineText = Replace(lineText,"%WBROADHURST%",WeaponStatus(pl\ownedWeapons[1])) lineText = Replace(lineText,"%WDALTON%",WeaponStatus(pl\ownedWeapons[2])) lineText = Replace(lineText,"%WROBINSON%",WeaponStatus(pl\ownedWeapons[3])) lineText = Replace(lineText,"%WRYXX%",WeaponStatus(pl\ownedWeapons[4])) lineText = Replace(lineText,"%WSTYRLING%",WeaponStatus(pl\ownedWeapons[5])) lineText = Replace(lineText,"%WIMPACT%",WeaponStatus(pl\ownedWeapons[6])) ;Return Return lineText End Function Function WeaponStatus$(wp.weapon) If wp<>Null Then Return "YES" End If Return " NO" End Function Function ProcessMenuText(pl.player) Local currentChar$,x,y,maxChar,char Local charCounter = 0 Local drawCursor = False Local finishProcess = False If intexMenu\build Then If intexMenu\bChar > 0 Then ;Get the current char Repeat currentChar = Mid(intexMenu\menuText[intexMenu\bLine],intexMenu\bChar,1) If currentChar = " " And intexMenu\bChar < Len(intexMenu\menuText[intexMenu\bLine]) - 1 Then ;Skip over any spaces intexMenu\bCharCounter = intexMenu\bCharCounter + 1 intexMenu\bChar = intexMenu\bChar + 1 ElseIf currentChar = "+" Then ;We need to pause intexMenu\pauseCounter = (intexMenu\pauseCounter +1) Mod pauseMax Exit Else ;Exit out Exit End If Forever End If ;Continue to process text If intexMenu\pauseCounter = 0 Then ;Increment number of shown characters intexMenu\bCharCounter = intexMenu\bCharCounter + 1 ;Increment char intexMenu\bChar = (intexMenu\bChar + 1) Mod Len(intexMenu\menuText[intexMenu\bLine]) If intexMenu\bChar = 0 Then ;Increment line intexMenu\bLine = (intexMenu\bLine + 1) Mod intexMenu\total If intexMenu\bLine = 0 Then finishProcess = True End If End If End If ;Speed up menu process (fire key) - temp? If KeyDown(1) Then finishProcess = True End If ;Finish? If finishProcess Then ;Set each item to it's max intexMenu\bLine = intexMenu\total - 1 intexMenu\bChar = Len(intexMenu\menuText[intexMenu\bLine]) ;Finish intexMenu\build = False FlushKeys() End If End If ;Draw text For drawLine = 1 To intexMenu\bLine ;Set co-ords for current line x = intexMenu\x[drawLine] y = intexMenu\y[drawLine] ;Draw current line For drawChar = 1 To Len(intexMenu\menuText[drawLine]) ;Increment letter count charCounter = charCounter + 1 ;Get current char char = Instr(intexChars, Mid(intexMenu\menuText[drawLine],drawChar,1)) - 1 If char > -1 Then DrawImage intexText,x,y,char End If ;Building the menu, if so pause on last char and display cursor If intexMenu\build Then ;Slight pause when first displaying character? If (charCounter = intexMenu\bCharCounter) Then Delay draw_char_delay_time intexMenu\cursorX = x intexMenu\cursory = y drawCursor = True Exit End If End If x = x + charWidth Next If drawCursor Then DrawImage intexText,intexMenu\cursorX,intexMenu\cursorY,0 Exit End If Next End Function ;Data Structure ;No of lines ;Text$,X,Y,SubMenu .menuIntexBoot Data 10 Data "INTEX NETWORK CONNECT: CODE ABF01DCC60 ",8,48,-1,-1 Data "CONNECTING..................... ",8,60,-1,-1 Data "INTEX NETWORK SYSTEM V10.0 ",8,84,-1,-1 Data "2G RAM: OK ",8,96,-1,-1 Data "EXTERNAL DEVICE: OK ",8,108,-1,-1 Data "SYSTEM V1.10 CS: OK ",8,120,-1,-1 Data "VIDEODISPLAY: DAMAGED+ ",8,132,-1,-1 Data "EXECUTING DOS 5.0 ",8,156,-1,-1 Data "SYSTEM DOWNLOADING NETWORKDATA..... OK ",8,168,-1,-1 Data "INTEX EXECUTED!+ ",8,180,-1,-1 .menuIntexMain Data 8 Data "INTEX MAIN MENU ",96,32,-1,-1 Data "INTEX WEAPON SUPPLIES ",72,68,-1,1 Data "INTEX TOOL SUPPLIES ",80,80,3,2 Data "INTEX RADAR SERVICE ",80,92,4,3 Data "LEVEL INFORMATION UPDATE ",64,104,-1,4 Data "INTEX ENTERTAINMENT ",80,116,-1,5 Data "STATISTICS ",120,128,7,6 Data "EXIT INTEX NETWORK ",88,140,10,7 .menuIntexWeaponsSupply Data 2 Data "INTEX WEAPON SUPPLIES ",122,24,-1,-1 Data "WEAPON SUPPLIES REQUEST: ",24,48,-1,-1 .menuIntexToolSupply Data 8 Data "INTEX TOOL SUPPLIES ",80,36,-1,-1 Data "ELECTRONIC HAND MAP 500 CR ",32,72,-1,1 Data "AMMO NYBBLE 1000 CR ",32,96,-1,2 Data "FIRST AID KIT 2000 CR ",32,120,-1,3 Data "6 KEYS 4000 CR ",32,144,-1,4 Data "EXTRA LIFE 10000 CR ",32,168,-1,5 Data "EXIT ",144,192,1,6 Data "YOUR CREDIT LIMIT IS: %PLCREDITS% CR ",40,216,-1,-1 .menuIntexRadarService Data 1 Data "INTEX RADAR SERVICE ",88,36,-1,-1 .menuIntexStatistics Data 16 Data "INTEX STATISTICS ",96,16,-1,-1 Data " PLAYER SCORES: %PLSCORE% PTS ",16,40,-1,-1 Data " ALIENS KILLED: %PLKILLS% ",16,52,-1,-1 Data " SHOTS FIRED: %PLSHOTS% BULLETS ",16,64,-1,-1 Data " CREDITS OWNED: %PLCREDITS% CR ",16,76,-1,-1 Data " DOORS OPENED: %PLDOORS% ",16,88,-1,-1 Data " AMMO OWNED: %PLAMMO% CLIP",16,100,-1,-1 Data " ENERGY STATE: %PLENERGY% ",16,112,-1,-1 Data "CURRENT WEAPON: %PLCURRENTWEAPON%",16,124,-1,-1 Data "WEAPONS STATUS: ",16,136,-1,-1 Data weaponBroadhurst + "... %WBROADHURST% ",40,160,-1,-1 ;112 Data weaponDalton + "... %WDALTON% ",40,172,-1,-1 Data weaponRobinson + "... %WROBINSON% ",40,184,-1,-1 Data weaponRyxx + "... %WRYXX% ",40,196,-1,-1 Data weaponStyrling + "... %WSTYRLING% ",40,208,-1,-1 Data weaponImpact + "... %WIMPACT% ",40,220,-1,-1 .menuIntexDisconnect Data 1 Data "DISCONNECTING..............+ ",16,32,-1,-1