bootstrap lua
This commit is contained in:
		
							parent
							
								
									fbb14897bd
								
							
						
					
					
						commit
						61b773ac6d
					
				
					 3 changed files with 108 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -12,11 +12,14 @@
 | 
			
		|||
  outputs = { self, nixpkgs, playdate-sdk }:
 | 
			
		||||
    let system = "x86_64-linux";
 | 
			
		||||
        pkgs = nixpkgs.legacyPackages.${system};
 | 
			
		||||
        stdenv = pkgs.stdenv;
 | 
			
		||||
        playdate-sdk-pkg = playdate-sdk.packages.${system}.default;
 | 
			
		||||
    in {
 | 
			
		||||
      devShell.${system} = with pkgs;
 | 
			
		||||
      devShell.${system} = with stdenv; with pkgs;
 | 
			
		||||
        mkShell {
 | 
			
		||||
          nativeBuildInputs = [
 | 
			
		||||
            just
 | 
			
		||||
            lua-language-server
 | 
			
		||||
            playdate-sdk-pkg
 | 
			
		||||
          ];
 | 
			
		||||
        };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										9
									
								
								justfile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								justfile
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,9 @@
 | 
			
		|||
bin := "Rush.pdx"
 | 
			
		||||
 | 
			
		||||
alias b := build
 | 
			
		||||
build:
 | 
			
		||||
    pdc src {{ bin }}
 | 
			
		||||
 | 
			
		||||
alias s := simu
 | 
			
		||||
simu: build
 | 
			
		||||
    PlaydateSimulator {{ bin }}
 | 
			
		||||
							
								
								
									
										95
									
								
								src/main.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										95
									
								
								src/main.lua
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,95 @@
 | 
			
		|||
-- Name this file `main.lua`. Your game can use multiple source files if you wish
 | 
			
		||||
-- (use the `import "myFilename"` command), but the simplest games can be written
 | 
			
		||||
-- with just `main.lua`.
 | 
			
		||||
 | 
			
		||||
-- You'll want to import these in just about every project you'll work on.
 | 
			
		||||
 | 
			
		||||
import "CoreLibs/object"
 | 
			
		||||
import "CoreLibs/graphics"
 | 
			
		||||
import "CoreLibs/sprites"
 | 
			
		||||
import "CoreLibs/timer"
 | 
			
		||||
 | 
			
		||||
-- Declaring this "gfx" shorthand will make your life easier. Instead of having
 | 
			
		||||
-- to preface all graphics calls with "playdate.graphics", just use "gfx."
 | 
			
		||||
-- Performance will be slightly enhanced, too.
 | 
			
		||||
-- NOTE: Because it's local, you'll have to do it in every .lua source file.
 | 
			
		||||
 | 
			
		||||
local gfx <const> = playdate.graphics
 | 
			
		||||
 | 
			
		||||
-- Here's our player sprite declaration. We'll scope it to this file because
 | 
			
		||||
-- several functions need to access it.
 | 
			
		||||
 | 
			
		||||
local playerSprite = nil
 | 
			
		||||
 | 
			
		||||
-- A function to set up our game environment.
 | 
			
		||||
 | 
			
		||||
function myGameSetUp()
 | 
			
		||||
 | 
			
		||||
    -- Set up the player sprite.
 | 
			
		||||
 | 
			
		||||
    local playerImage = gfx.image.new("Images/playerImage")
 | 
			
		||||
    assert( playerImage ) -- make sure the image was where we thought
 | 
			
		||||
 | 
			
		||||
    playerSprite = gfx.sprite.new( playerImage )
 | 
			
		||||
    playerSprite:moveTo( 200, 120 ) -- this is where the center of the sprite is placed; (200,120) is the center of the Playdate screen
 | 
			
		||||
    playerSprite:add() -- This is critical!
 | 
			
		||||
 | 
			
		||||
    -- We want an environment displayed behind our sprite.
 | 
			
		||||
    -- There are generally two ways to do this:
 | 
			
		||||
    -- 1) Use setBackgroundDrawingCallback() to draw a background image. (This is what we're doing below.)
 | 
			
		||||
    -- 2) Use a tilemap, assign it to a sprite with sprite:setTilemap(tilemap),
 | 
			
		||||
    --       and call :setZIndex() with some low number so the background stays behind
 | 
			
		||||
    --       your other sprites.
 | 
			
		||||
 | 
			
		||||
    local backgroundImage = gfx.image.new( "Images/background" )
 | 
			
		||||
    assert( backgroundImage )
 | 
			
		||||
 | 
			
		||||
    gfx.sprite.setBackgroundDrawingCallback(
 | 
			
		||||
        function( x, y, width, height )
 | 
			
		||||
            -- x,y,width,height is the updated area in sprite-local coordinates
 | 
			
		||||
            -- The clip rect is already set to this area, so we don't need to set it ourselves
 | 
			
		||||
            backgroundImage:draw( 0, 0 )
 | 
			
		||||
        end
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Now we'll call the function above to configure our game.
 | 
			
		||||
-- After this runs (it just runs once), nearly everything will be
 | 
			
		||||
-- controlled by the OS calling `playdate.update()` 30 times a second.
 | 
			
		||||
 | 
			
		||||
myGameSetUp()
 | 
			
		||||
 | 
			
		||||
-- `playdate.update()` is the heart of every Playdate game.
 | 
			
		||||
-- This function is called right before every frame is drawn onscreen.
 | 
			
		||||
-- Use this function to poll input, run game logic, and move sprites.
 | 
			
		||||
 | 
			
		||||
function playdate.update()
 | 
			
		||||
 | 
			
		||||
    -- Poll the d-pad and move our player accordingly.
 | 
			
		||||
    -- (There are multiple ways to read the d-pad; this is the simplest.)
 | 
			
		||||
    -- Note that it is possible for more than one of these directions
 | 
			
		||||
    -- to be pressed at once, if the user is pressing diagonally.
 | 
			
		||||
 | 
			
		||||
    if playdate.buttonIsPressed( playdate.kButtonUp ) then
 | 
			
		||||
        playerSprite:moveBy( 0, -2 )
 | 
			
		||||
    end
 | 
			
		||||
    if playdate.buttonIsPressed( playdate.kButtonRight ) then
 | 
			
		||||
        playerSprite:moveBy( 2, 0 )
 | 
			
		||||
    end
 | 
			
		||||
    if playdate.buttonIsPressed( playdate.kButtonDown ) then
 | 
			
		||||
        playerSprite:moveBy( 0, 2 )
 | 
			
		||||
    end
 | 
			
		||||
    if playdate.buttonIsPressed( playdate.kButtonLeft ) then
 | 
			
		||||
        playerSprite:moveBy( -2, 0 )
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    -- Call the functions below in playdate.update() to draw sprites and keep
 | 
			
		||||
    -- timers updated. (We aren't using timers in this example, but in most
 | 
			
		||||
    -- average-complexity games, you will.)
 | 
			
		||||
 | 
			
		||||
    gfx.sprite.update()
 | 
			
		||||
    playdate.timer.updateTimers()
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue