From 4b3422288c6751f2b309441777a4f76ba6e420e6 Mon Sep 17 00:00:00 2001 From: Gnawmon Date: Mon, 29 Apr 2024 22:54:49 +0300 Subject: [PATCH] texturepacks and more i dont remember --- README.md | 7 +- account.def.json | 3 +- assets/img/textures/flat.png | Bin 0 -> 188 bytes assets/img/textures/realism2.png | Bin 0 -> 12428 bytes bf.go | 131 +++++++------------------------ map.go | 56 +++++++++++++ paint.go | 43 ++++++++++ 7 files changed, 134 insertions(+), 106 deletions(-) create mode 100644 assets/img/textures/flat.png create mode 100644 assets/img/textures/realism2.png create mode 100644 map.go create mode 100644 paint.go diff --git a/README.md b/README.md index d2152ab..986321c 100644 --- a/README.md +++ b/README.md @@ -8,11 +8,12 @@ To play first create an accounts.json, you can look example file [account.def.js If you're on linux, you can do: ```bash -echo '{"username":"'$USER'"}' > account.json +echo '{"username":"'$USER'","texture":"flat.png"}' > account.json # or -echo '{"username":"'$USER'","color":"DEAD00"}' > account.json +echo '{"username":"'$USER'","color":"DEAD00","texture":"flat.png"}' > account.json ``` ## Credits -[guessy](./guessy4.ttf) and sounds are made by dottych +[guessy](./guessy4.ttf), sounds, maps, flat texture pack and the original game are made by dottych +mertoalex for contributing code diff --git a/account.def.json b/account.def.json index 46dd7bf..a7104a7 100644 --- a/account.def.json +++ b/account.def.json @@ -1,4 +1,5 @@ { "username": "USERNAME HERE", - "color": "000000" + "color": "000000", + "texture": "flat.png" } diff --git a/assets/img/textures/flat.png b/assets/img/textures/flat.png new file mode 100644 index 0000000000000000000000000000000000000000..6038a8027f43a64986f2971f60cd293e0d6f087a GIT binary patch literal 188 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 1 { - paints[index] = paint{time: paintI.time - 1, location: paintI.location} - rl.DrawRectangleV(rl.Vector2Subtract(paintI.location, cameraPos), rl.Vector2{X: ballRadius - 2, Y: ballRadius - 2}, rl.NewColor(ballColor.R, ballColor.G, ballColor.R, uint8(paintI.time))) - continue - } - paints = removePaint(paints, index) - } -} - -func drawSquares() { - for index, element := range squares { - debugLog(debug, fmt.Sprintln(index, element.X)) - rl.DrawRectangleV(rl.Vector2{element.X - cameraPos.X, element.Y - cameraPos.Y}, rl.Vector2{X: float32(squareSize), Y: float32(squareSize)}, rl.LightGray) - } -} -func draw() { - paintedPaint := paint{255, ballPos} - paints = append(paints, paintedPaint) -} - func moveBall() { if rl.IsKeyDown(rl.KeyLeftShift) { draw() @@ -161,26 +137,6 @@ func drawTextShadow(text string, textPos rl.Vector2, font rl.Font) { func checkCollision(newPos rl.Vector2) bool { - if debug { - rl.DrawLineV(newPos, rl.Vector2{X: newPos.X, Y: screenWidth * 2}, rl.Green) - rl.DrawLineV(newPos, rl.Vector2{X: newPos.X, Y: 0}, rl.Green) - rl.DrawLineV(newPos, rl.Vector2{X: 0, Y: newPos.Y}, rl.Green) - rl.DrawLineV(newPos, rl.Vector2{X: screenHeight * 2, Y: newPos.Y}, rl.Green) - } - - for index, square := range squares { - if debug { - fmt.Println(index, square.X, rl.Vector2Distance(newPos, square)) - rl.DrawLineV(newPos, square, rl.Purple) - } - if rl.CheckCollisionPointRec(newPos, rl.Rectangle{X: square.X, Y: square.Y, Width: float32(squareSize), Height: float32(squareSize)}) { - if debug { - rl.DrawText("colliding with obstacle", 10, 10, 40, rl.Black) - } - return true - } - } - if newPos.X > float32(64*squareSize) { return true } @@ -196,18 +152,6 @@ func checkCollision(newPos rl.Vector2) bool { return false } -type paint struct { - time float32 - location rl.Vector2 -} - -func removePaint(slice []paint, index int) []paint { - if len(slice) <= 2 { - return make([]paint, 0) - } - return append(slice[:index], slice[index+1:]...) -} - func convertHex(hex string) rl.Color { hex1 := hex[0:2] hex2 := hex[2:4] @@ -222,36 +166,19 @@ func convertHex(hex string) rl.Color { return rl.NewColor(uint8(decimal), uint8(decimal2), uint8(decimal3), 255) } -func drawMap(mapRaw string) { +func cropTexturePack(textureLocation string) []rl.Texture2D { + var textures []rl.Texture2D - var lines []string + for i := 0; i < 6; i++ { + image := rl.LoadImage(textureLocation) + croppedImage := image + rl.ImageCrop(croppedImage, rl.NewRectangle(float32(i*32), 0, 32, 32)) + rl.ImageResizeNN(croppedImage, squareSize, squareSize) - for i := 0; i < len(mapRaw); i += 64 { - end := i + 64 - if end > len(mapRaw) { - end = len(mapRaw) - } - lines = append(lines, mapRaw[i:end]) + croppedTexture := rl.LoadTextureFromImage(croppedImage) + rl.SetTextureFilter(croppedTexture, rl.FilterPoint) + + textures = append(textures, croppedTexture) } - for y := range lines { - for x := 0; x < len(lines[y]); x++ { - fmt.Println(lines[0][0]) - switch lines[y][x] { - case 48: //air - - case 49: //path - rl.DrawRectangleV(rl.Vector2{float32(x*squareSize) - cameraPos.X, float32(y*squareSize) - cameraPos.Y}, rl.Vector2{X: float32(squareSize), Y: float32(squareSize)}, rl.NewColor(133, 133, 133, 255)) - case 50: //door - rl.DrawRectangleV(rl.Vector2{float32(x*squareSize) - cameraPos.X, float32(y*squareSize) - cameraPos.Y}, rl.Vector2{X: float32(squareSize), Y: float32(squareSize)}, rl.NewColor(112, 122, 112, 255)) - case 51: //glass - rl.DrawRectangleV(rl.Vector2{float32(x*squareSize) - cameraPos.X, float32(y*squareSize) - cameraPos.Y}, rl.Vector2{X: float32(squareSize), Y: float32(squareSize)}, rl.NewColor(144, 144, 144, 255)) - case 52: //wall - rl.DrawRectangleV(rl.Vector2{float32(x*squareSize) - cameraPos.X, float32(y*squareSize) - cameraPos.Y}, rl.Vector2{X: float32(squareSize), Y: float32(squareSize)}, rl.NewColor(170, 170, 170, 255)) - case 53: //liquid - rl.DrawRectangleV(rl.Vector2{float32(x*squareSize) - cameraPos.X, float32(y*squareSize) - cameraPos.Y}, rl.Vector2{X: float32(squareSize), Y: float32(squareSize)}, rl.NewColor(205, 205, 205, 255)) - } - - } - } - + return textures } diff --git a/map.go b/map.go new file mode 100644 index 0000000..a704f15 --- /dev/null +++ b/map.go @@ -0,0 +1,56 @@ +package main + +import ( + rl "github.com/gen2brain/raylib-go/raylib" +) + +func sliceMap(mapLocation string) []string { + var lines []string + + for i := 0; i < len(mapLocation); i += 64 { + end := i + 64 + if end > len(mapLocation) { + end = len(mapLocation) + } + lines = append(lines, mapLocation[i:end]) + } + return lines +} + +func drawMap(slicedMap []string) { + for y := range slicedMap { + for x := 0; x < len(slicedMap[y]); x++ { + + tilePositionX := int32(x*squareSize - int(cameraPos.X)) + tilePositionY := int32(y*squareSize - int(cameraPos.Y)) + + rl.DrawTexture(loadedTextures[0], tilePositionX, tilePositionY, rl.White) + switch slicedMap[y][x] { + case 49: //path + rl.DrawTexture(loadedTextures[1], tilePositionX, tilePositionY, rl.White) + case 50: //door + rl.DrawTexture(loadedTextures[2], tilePositionX, tilePositionY, rl.White) + case 51: //glass + rl.DrawTexture(loadedTextures[3], tilePositionX, tilePositionY, rl.White) + case 52: //wall + rl.DrawTexture(loadedTextures[4], tilePositionX, tilePositionY, rl.White) + case 53: //liquid + rl.DrawTexture(loadedTextures[5], tilePositionX, tilePositionY, rl.White) + } + + } + } +} + +func getWalls(slicedMap []string) []rl.Vector2 { + walls := []rl.Vector2{} + for y := range slicedMap { + for x := 0; x < len(slicedMap[y]); x++ { + switch slicedMap[y][x] { + case 51, 52: + walls = append(walls, rl.Vector2{X: float32(x), Y: float32(y)}) + } + } + } + return walls +} diff --git a/paint.go b/paint.go new file mode 100644 index 0000000..86230f9 --- /dev/null +++ b/paint.go @@ -0,0 +1,43 @@ +package main + +import ( + "strconv" + + rl "github.com/gen2brain/raylib-go/raylib" +) + +type paint struct { + time float32 + location rl.Vector2 +} + +func drawPaint() { + if debug { + t := strconv.Itoa(len(paints)) + rl.DrawText(t, 10, 10, 40, rl.Black) + } + for index, paintI := range paints { + if len(paints) <= index { + continue + } + + if paintI.time > 1 { + paints[index] = paint{time: paintI.time - 1, location: paintI.location} + rl.DrawRectangleV(rl.Vector2Subtract(paintI.location, cameraPos), rl.Vector2{X: ballRadius - 2, Y: ballRadius - 2}, rl.NewColor(ballColor.R, ballColor.G, ballColor.R, uint8(paintI.time))) + continue + } + paints = removePaint(paints, index) + } +} + +func draw() { + paintedPaint := paint{255, ballPos} + paints = append(paints, paintedPaint) +} + +func removePaint(slice []paint, index int) []paint { + if len(slice) <= 2 { + return make([]paint, 0) + } + return append(slice[:index], slice[index+1:]...) +} \ No newline at end of file