From 423243302c9e55ba8d40d162ded9f67cee6b0ee6 Mon Sep 17 00:00:00 2001 From: Jalen Winslow Date: Tue, 23 Jan 2018 11:58:35 -0700 Subject: [PATCH] added non-working playerObject --- gameobjects/player.go | 83 +++++++++++++++++++++++++++++++++++++++++++ main.go | 35 +++++++++++------- 2 files changed, 105 insertions(+), 13 deletions(-) create mode 100644 gameobjects/player.go diff --git a/gameobjects/player.go b/gameobjects/player.go new file mode 100644 index 0000000..16b3733 --- /dev/null +++ b/gameobjects/player.go @@ -0,0 +1,83 @@ +package gameobjects + +import ( + "github.com/faiface/pixel" + "github.com/faiface/pixel/pixelgl" + //"fmt" +) + +type Player struct { + X, Y float64 + PlayerVec pixel.Vec + sprFrame int + spriteSheet pixel.Picture + sprFrames []pixel.Rect + sprite *pixel.Sprite + speed float64 +} + +func NewPlayer(win *pixelgl.Window, spriteSheet pixel.Picture) (*Player){ + var p *Player + p.X = win.Bounds().Max.X/2 + p.Y = win.Bounds().Max.Y/2 + p.PlayerVec = pixel.Vec{ + X:win.Bounds().Max.X/2, + Y:win.Bounds().Max.Y/2, + } + p.sprFrame = 9 + p.spriteSheet = spriteSheet + p.sprFrames = createSpriteFrames(spriteSheet) + p.sprite = pixel.NewSprite(spriteSheet, p.sprFrames[p.sprFrame]) + p.speed = 10.0 + return p +} + +func (p *Player) Update(win *pixelgl.Window, dt int64) { + + speed := p.speed + + + + if win.Pressed(pixelgl.KeyA) { //left + p.sprFrame = 6 + p.X -= speed + } + if win.Pressed(pixelgl.KeyD) { //Right + p.sprFrame = 3 + p.X += speed + } + if win.Pressed(pixelgl.KeyS) { //Down + p.sprFrame = 9 + p.Y -= speed + } + if win.Pressed(pixelgl.KeyW) { //up + p.sprFrame = 0 + p.Y += speed + } + p.sprite.Set(p.spriteSheet, p.sprFrames[p.sprFrame]) + + //p.PlayerVec.X += vecX + //p.PlayerVec.Y += vecY + + p.PlayerVec = pixel.Vec { + X: p.X, + Y: p.Y, + } + //fmt.Println(p.PlayerVec.X,p.PlayerVec.Y) +} + +func (p *Player) Render(win *pixelgl.Window) { //include batch later + + p.sprite.Draw(win, pixel.IM.Scaled(pixel.ZV, 4).Moved(p.PlayerVec)) +} + +func createSpriteFrames(spriteSheet pixel.Picture) ([]pixel.Rect) { + var sprFrames []pixel.Rect + var frameHeight, frameWidth float64 = 96, 96 + for y := spriteSheet.Bounds().Min.Y; y < frameHeight*4; y += 96 { + for x := spriteSheet.Bounds().Min.X; x < frameWidth*3; x += 96 { + sprFrames = append(sprFrames, pixel.R(x, y, x+96, y+96)) // (x, y, width, height) of frame + } + } + return sprFrames +} \ No newline at end of file diff --git a/main.go b/main.go index 5878e30..cc07f16 100644 --- a/main.go +++ b/main.go @@ -12,6 +12,7 @@ import ( "github.com/faiface/pixel" "github.com/faiface/pixel/pixelgl" "golang.org/x/image/colornames" + "gitbutter.pw/zolfite/project-rpg/gameobjects" ) func loadPicture(path string) (pixel.Picture, error) { @@ -67,11 +68,10 @@ func run() { spritesFrames = append(spritesFrames, pixel.R(x, y, x+96, y+96)) // (x, y, width, height) of frame } } - Sprite := pixel.NewSprite(spritesheet, spritesFrames[9]) - + //Sprite := pixel.NewSprite(spritesheet, spritesFrames[9]) + var ( camPos = pixel.ZV - //camSpeed = 500.0 camZoom = 0.3 camZoomSpeed = 1.2 ) @@ -80,15 +80,17 @@ func run() { frames = 0 second = time.Tick(time.Second) ) - playerX := win.Bounds().Max.X / 2 - playerY := win.Bounds().Max.Y / 2 - + //playerX := win.Bounds().Max.X / 2 + //playerY := win.Bounds().Max.Y / 2 + /* var ( playerXY = pixel.Vec{ playerX, playerY, } - ) + )*/ + + player := gameobjects.NewPlayer(win, spritesheet) var fps int64 = 60 timePerFrame := 1000000000 / fps @@ -96,7 +98,8 @@ func run() { var now int64 var dt int64 - frameCounter := 0 + //frameCounter := 0 + //sprFrame := 0 // Game Loop for !win.Closed() { @@ -109,10 +112,11 @@ func run() { // *** Update begins *** // + /* playerXY = pixel.Vec{ playerX, playerY, - } + }*/ cam := pixel.IM.Scaled(camPos, camZoom).Moved(win.Bounds().Center().Sub(camPos)) win.SetMatrix(cam) @@ -127,6 +131,7 @@ func run() { */ //mouse := cam.Unproject(win.MousePosition()) + /* if frames%10==0 { frameCounter += 1 } @@ -134,7 +139,7 @@ func run() { frameCounter = 0 } speed := 10.0 - sprFrame := 0 + if win.Pressed(pixelgl.KeyA) { //left sprFrame = 6 playerX -= speed @@ -156,8 +161,11 @@ func run() { //Sprite.Set(spritesheet, spritesFrames[0]) } Sprite.Set(spritesheet, spritesFrames[sprFrame+frameCounter]) - camPos.X = playerX - camPos.Y = playerY + */ + player.Update(win, dt) + + camPos.X = player.PlayerVec.X + camPos.Y = player.PlayerVec.Y camZoom *= math.Pow(camZoomSpeed, win.MouseScroll().Y) // *** Update Ends *** // @@ -165,7 +173,8 @@ func run() { // *** Render begin *** // win.Clear(colornames.Forestgreen) bg.Draw(win, pixel.IM.Moved(win.Bounds().Center())) - Sprite.Draw(win, pixel.IM.Scaled(pixel.ZV, 4).Moved(playerXY)) + //Sprite.Draw(win, pixel.IM.Scaled(pixel.ZV, 4).Moved(playerXY)) + player.Render(win) //batch.Draw(win) win.Update()