Hope to contibute to faiface/pixel with a new community example
|
@ -0,0 +1,9 @@
|
||||||
|
run:
|
||||||
|
./build_assets.sh
|
||||||
|
go run main.go
|
||||||
|
|
||||||
|
build_mac:
|
||||||
|
./build_mac.sh
|
||||||
|
|
||||||
|
build_assets:
|
||||||
|
./build_assets.sh
|
|
@ -0,0 +1,60 @@
|
||||||
|
# ASharedJourney
|
||||||
|
|
||||||
|
This is a fork of a project originally developed during the SFR game jam along side Pierre, Gabriel, Aurore & Fabio.
|
||||||
|
|
||||||
|
This project uses the go [pixel](https://github.com/faiface/pixel) package for sound management and sprites, go check them out.
|
||||||
|
|
||||||
|
|
||||||
|
>GameJam SFR 2018 Julia - Pierre - Gabriel - Aurore - Fabio
|
||||||
|
>
|
||||||
|
>Music: Thibault
|
||||||
|
>
|
||||||
|
>Theme: Si j'étais toi et que tu étais moi (If I were you and you were me)
|
||||||
|
>
|
||||||
|
>[Itch.io](https://fmaschi.itch.io/a-shared-journey)
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
* [GO](https://golang.org) - Programming language
|
||||||
|
|
||||||
|
## Building and running
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
|
||||||
|
- First, install the game and its dependencies
|
||||||
|
|
||||||
|
```bash
|
||||||
|
go get -u github.com/gandrin/ASharedJourney
|
||||||
|
```
|
||||||
|
|
||||||
|
- You will also need the `go-bindata` program to build the assets into the binary file
|
||||||
|
|
||||||
|
```bash
|
||||||
|
go get -u github.com/jteeuwen/go-bindata/...
|
||||||
|
```
|
||||||
|
|
||||||
|
> Make sure your `$GOPATH` is set :wink:
|
||||||
|
|
||||||
|
### Run
|
||||||
|
|
||||||
|
```
|
||||||
|
make run
|
||||||
|
```
|
||||||
|
|
||||||
|
### Releasing
|
||||||
|
|
||||||
|
```
|
||||||
|
make build_mac
|
||||||
|
```
|
||||||
|
#### OR
|
||||||
|
```
|
||||||
|
make build_linux
|
||||||
|
```
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details
|
||||||
|
|
||||||
|
### Acknowledgements
|
||||||
|
|
||||||
|
Thibault A. - Sound designer
|
|
@ -0,0 +1,21 @@
|
||||||
|
package animation
|
||||||
|
|
||||||
|
import (
|
||||||
|
|
||||||
|
"log"
|
||||||
|
|
||||||
|
"github.com/gandrin/ASharedJourney/shared"
|
||||||
|
)
|
||||||
|
|
||||||
|
//placeholder
|
||||||
|
type backgroundImage int
|
||||||
|
|
||||||
|
func (a *Animator) generateBackground(level int) [][]backgroundImage {
|
||||||
|
//todo draw background depending on selected level
|
||||||
|
return make([][]backgroundImage, 3, 3)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *Animator) redrawBackGroundTile(pos shared.Position) {
|
||||||
|
//todo refresh background position
|
||||||
|
//log.Print("position to redraw ", pos)
|
||||||
|
}
|
|
@ -0,0 +1,75 @@
|
||||||
|
//package for managing animations and refreshing screen
|
||||||
|
package animation
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/gandrin/ASharedJourney/mechanics"
|
||||||
|
"github.com/gandrin/ASharedJourney/shared"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Animator struct {
|
||||||
|
backgound [][]backgroundImage //placeholder
|
||||||
|
|
||||||
|
fromAnim chan *mechanics.Motion
|
||||||
|
|
||||||
|
player1 *playerSprite
|
||||||
|
player2 *playerSprite
|
||||||
|
|
||||||
|
tileSet *FakeTileSet
|
||||||
|
}
|
||||||
|
|
||||||
|
var anim *Animator
|
||||||
|
|
||||||
|
func Start(motion chan *mechanics.Motion, level int, pType1 mechanics.PlayerType, pType2 mechanics.PlayerType, tileset *FakeTileSet) {
|
||||||
|
anim = new(Animator)
|
||||||
|
anim.fromAnim = motion
|
||||||
|
|
||||||
|
//player animation
|
||||||
|
anim.player1 = NewPlayerSprite(pType1)
|
||||||
|
anim.player2 = NewPlayerSprite(pType2)
|
||||||
|
|
||||||
|
//load tileset
|
||||||
|
anim.tileSet = tileset
|
||||||
|
|
||||||
|
//load background
|
||||||
|
anim.backgound = anim.generateBackground(level)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (anim *Animator) muxChannel() *mechanics.Motion {
|
||||||
|
var nextMotion *mechanics.Motion = nil
|
||||||
|
select {
|
||||||
|
case m, ok := <-anim.fromAnim:
|
||||||
|
if ok {
|
||||||
|
nextMotion = m
|
||||||
|
} else {
|
||||||
|
log.Fatal("Channel closed!")
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
fmt.Println("No value ready, moving on.")
|
||||||
|
}
|
||||||
|
return nextMotion
|
||||||
|
}
|
||||||
|
|
||||||
|
//play main animation loop
|
||||||
|
func (anim *Animator) Play() {
|
||||||
|
for play := true; play; play = shared.Continue() {
|
||||||
|
time.Sleep(shared.FrameRefreshDelayMs * time.Millisecond)
|
||||||
|
motion := anim.muxChannel()
|
||||||
|
anim.animate(motion)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (anim *Animator) animate(motion *mechanics.Motion) {
|
||||||
|
|
||||||
|
//check if motion called
|
||||||
|
if motion != nil {
|
||||||
|
//move players and events
|
||||||
|
//log.Printf("Move players")
|
||||||
|
}
|
||||||
|
|
||||||
|
//move all animations
|
||||||
|
//log.Printf("animting")
|
||||||
|
}
|
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 67 KiB |
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 41 KiB |
|
@ -0,0 +1,172 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<map version="1.0" tiledversion="1.1.5" orientation="orthogonal" renderorder="right-down" width="18" height="20" tilewidth="32" tileheight="32" infinite="0" nextobjectid="1">
|
||||||
|
<tileset firstgid="1" source="forest.tsx"/>
|
||||||
|
<layer name="background" width="18" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,18,18,18,0,18,18,18,0,18,18,18,0,18,18,18,18,0,
|
||||||
|
0,18,0,18,18,18,0,18,0,0,0,18,0,18,0,0,18,0,
|
||||||
|
0,18,18,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,
|
||||||
|
0,0,18,0,0,18,18,0,0,0,0,18,0,0,0,18,0,0,
|
||||||
|
0,18,18,0,18,18,0,18,18,0,0,18,0,18,18,18,0,0,
|
||||||
|
0,18,0,18,18,0,0,0,18,18,0,18,18,18,0,18,18,0,
|
||||||
|
0,18,18,18,0,18,0,18,0,18,18,18,0,18,0,0,18,0,
|
||||||
|
0,0,0,18,18,18,18,18,18,18,0,18,18,18,18,18,18,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,
|
||||||
|
0,0,0,18,18,18,18,18,18,18,0,18,18,18,18,18,18,0,
|
||||||
|
0,18,18,18,0,18,0,18,0,18,18,18,0,18,0,0,18,0,
|
||||||
|
0,18,0,18,18,0,0,0,18,18,0,18,18,18,0,18,18,0,
|
||||||
|
0,18,18,0,18,18,0,18,18,0,0,18,0,18,18,18,0,0,
|
||||||
|
0,0,18,0,0,18,18,0,0,0,0,18,0,0,0,18,0,0,
|
||||||
|
0,18,18,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,
|
||||||
|
0,18,0,18,18,18,0,18,0,0,0,18,0,18,0,0,18,0,
|
||||||
|
0,18,18,18,0,18,18,18,0,18,18,18,0,18,18,18,18,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="water" width="18" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="obstacles" width="18" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,
|
||||||
|
20,0,0,0,17,0,0,0,16,0,0,0,16,0,0,0,0,24,
|
||||||
|
20,0,17,0,0,0,17,0,17,17,17,0,16,0,17,17,0,24,
|
||||||
|
20,0,0,17,17,17,17,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,16,0,17,17,0,0,19,19,19,19,0,17,17,17,0,17,24,
|
||||||
|
20,0,0,17,0,0,17,0,0,19,19,0,17,0,0,0,17,24,
|
||||||
|
20,0,17,0,0,17,17,17,0,0,19,0,0,0,17,0,0,24,
|
||||||
|
20,0,0,0,19,0,17,0,19,0,0,0,16,0,17,17,0,24,
|
||||||
|
20,17,17,0,0,0,0,0,0,0,17,0,0,0,0,0,0,24,
|
||||||
|
20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,0,24,
|
||||||
|
20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,0,24,
|
||||||
|
20,17,17,0,0,0,0,0,0,0,17,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,17,0,17,0,17,0,0,0,16,0,17,17,0,24,
|
||||||
|
20,0,16,0,0,17,16,17,0,0,17,0,0,0,17,0,0,24,
|
||||||
|
20,0,0,19,0,0,17,0,0,17,19,0,17,0,0,0,17,24,
|
||||||
|
20,17,0,19,19,0,0,17,17,17,17,0,19,17,17,0,17,24,
|
||||||
|
20,0,0,19,19,19,19,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,17,0,0,0,19,0,17,17,17,0,17,0,17,17,0,24,
|
||||||
|
20,0,0,0,16,0,0,0,17,0,0,0,19,0,0,0,0,24,
|
||||||
|
27,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,25
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="movables" width="18" height="20" locked="1">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,49,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,49,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="holes" width="18" height="20" locked="1">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="animals" width="18" height="20" locked="1">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="win" width="18" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
</map>
|
|
@ -0,0 +1,148 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<map version="1.0" tiledversion="1.1.5" orientation="orthogonal" renderorder="right-down" width="20" height="20" tilewidth="32" tileheight="32" infinite="0" nextobjectid="1">
|
||||||
|
<tileset firstgid="1" source="forest.tsx"/>
|
||||||
|
<layer name="water" width="20" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
32,31,30,30,29,32,30,29,32,32,31,32,30,29,30,31,30,30,30,30,
|
||||||
|
31,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,31,
|
||||||
|
32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,
|
||||||
|
32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,
|
||||||
|
31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,
|
||||||
|
31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,
|
||||||
|
29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,
|
||||||
|
31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,
|
||||||
|
31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,
|
||||||
|
32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,
|
||||||
|
29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,
|
||||||
|
31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,
|
||||||
|
32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,
|
||||||
|
31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,
|
||||||
|
31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,
|
||||||
|
31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,
|
||||||
|
31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,
|
||||||
|
29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,
|
||||||
|
30,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,32,
|
||||||
|
31,30,31,31,31,29,30,30,32,32,29,32,29,30,32,30,30,30,31,32
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="background" width="20" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,39,33,33,33,33,33,33,33,33,33,33,33,33,33,33,40,0,0,
|
||||||
|
0,39,53,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,40,0,
|
||||||
|
0,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,0,
|
||||||
|
0,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,0,
|
||||||
|
0,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,0,
|
||||||
|
0,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,0,
|
||||||
|
0,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,0,
|
||||||
|
0,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,0,
|
||||||
|
0,51,18,18,18,18,0,0,18,0,18,0,18,0,0,0,0,18,50,0,
|
||||||
|
0,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,0,
|
||||||
|
0,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,0,
|
||||||
|
0,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,0,
|
||||||
|
0,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,0,
|
||||||
|
0,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,0,
|
||||||
|
0,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,0,
|
||||||
|
0,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,0,
|
||||||
|
0,38,42,18,18,18,18,18,18,18,18,18,18,18,18,18,18,41,37,0,
|
||||||
|
0,0,38,36,36,36,36,36,36,36,36,36,36,36,36,36,36,37,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="movables" width="20" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,49,49,0,0,0,0,49,0,0,49,49,49,0,0,
|
||||||
|
0,0,0,0,0,49,49,0,0,49,49,49,49,0,0,49,0,49,0,0,
|
||||||
|
0,0,0,0,0,0,0,49,49,49,0,0,49,0,0,49,49,49,0,0,
|
||||||
|
0,0,0,0,0,0,49,0,0,49,0,49,49,49,49,0,49,49,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,49,49,49,49,49,0,0,49,49,0,
|
||||||
|
0,0,49,0,49,49,49,49,49,49,0,0,0,0,49,0,0,49,49,0,
|
||||||
|
0,49,0,49,0,0,49,49,49,0,0,0,49,49,0,49,0,49,49,0,
|
||||||
|
0,49,49,49,0,49,0,0,49,0,49,0,49,49,0,0,0,49,49,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,49,49,49,0,49,0,0,49,0,49,0,49,49,0,0,0,49,49,0,
|
||||||
|
0,49,0,49,0,0,49,49,49,0,0,0,49,49,0,49,0,49,49,0,
|
||||||
|
0,0,49,0,49,49,49,49,49,49,0,0,0,0,49,0,0,49,49,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,49,49,49,49,49,0,0,49,49,0,
|
||||||
|
0,0,0,0,0,0,49,0,0,49,0,49,49,49,49,0,49,49,0,0,
|
||||||
|
0,0,0,0,0,0,0,49,49,49,0,0,49,0,0,49,49,49,0,0,
|
||||||
|
0,0,0,0,0,49,49,0,0,49,49,49,49,0,0,49,0,49,0,0,
|
||||||
|
0,0,0,0,0,0,49,49,0,0,0,0,49,0,0,49,49,49,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="obstacles" width="20" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,43,43,43,0,43,0,43,0,43,43,43,43,0,0,0,
|
||||||
|
0,0,0,0,0,43,43,43,0,43,0,43,0,43,43,43,43,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="win" width="20" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="animals" width="20" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,61,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
</map>
|
After Width: | Height: | Size: 196 KiB |
|
@ -0,0 +1,151 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<map version="1.0" tiledversion="1.1.5" orientation="orthogonal" renderorder="right-down" width="17" height="17" tilewidth="32" tileheight="32" infinite="0" nextobjectid="1">
|
||||||
|
<tileset firstgid="1" source="forest.tsx"/>
|
||||||
|
<layer name="background" width="17" height="17">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,39,18,33,33,33,33,33,33,33,33,40,0,0,0,
|
||||||
|
0,0,39,53,18,18,6,18,18,18,18,18,18,52,40,0,0,
|
||||||
|
0,0,51,18,18,18,18,18,8,10,18,7,18,18,50,0,0,
|
||||||
|
0,0,51,18,18,18,18,18,18,18,18,18,18,18,50,0,0,
|
||||||
|
0,0,38,42,18,18,18,13,18,18,18,18,18,41,37,0,0,
|
||||||
|
0,0,0,38,36,36,36,36,48,36,36,36,36,37,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
18,40,0,0,0,39,33,18,47,33,33,33,33,18,33,33,18,
|
||||||
|
18,52,33,33,33,53,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,6,18,18,13,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,9,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,8,10,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,7,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="water" width="17" height="17">
|
||||||
|
<data encoding="csv">
|
||||||
|
29,31,31,31,31,30,32,31,30,31,29,30,32,32,29,29,29,
|
||||||
|
30,29,32,0,0,0,0,0,0,0,0,0,0,0,30,31,29,
|
||||||
|
29,31,0,0,0,0,0,0,0,0,0,0,0,0,0,30,31,
|
||||||
|
32,31,0,0,0,0,0,0,0,0,0,0,0,0,0,29,29,
|
||||||
|
30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,29,31,
|
||||||
|
30,31,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,
|
||||||
|
29,29,30,0,0,0,0,0,0,0,0,0,0,0,31,32,31,
|
||||||
|
30,29,31,31,29,30,31,32,29,32,30,31,30,31,32,29,31,
|
||||||
|
31,31,31,30,29,30,29,31,29,32,31,30,31,30,30,32,32,
|
||||||
|
0,0,32,32,31,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="obstacles" width="17" height="17">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,43,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,43,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
35,0,0,0,0,0,0,45,0,0,0,0,0,44,0,0,34,
|
||||||
|
20,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
27,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,25
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="movables" width="17" height="17" locked="1">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="holes" width="17" height="17">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="animals" width="17" height="17" locked="1">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="win" width="17" height="17">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,55,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,55,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
</map>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<tileset name="forest" tilewidth="32" tileheight="32" tilecount="75" columns="5">
|
||||||
|
<image source="map.png" width="160" height="510"/>
|
||||||
|
</tileset>
|
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 14 KiB |
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<tileset name="map" tilewidth="32" tileheight="32" tilecount="65" columns="5">
|
||||||
|
<image source="map.png" width="160" height="416"/>
|
||||||
|
</tileset>
|
|
@ -0,0 +1,123 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<map version="1.0" tiledversion="1.1.5" orientation="orthogonal" renderorder="right-down" width="12" height="13" tilewidth="32" tileheight="32" infinite="0" nextobjectid="1">
|
||||||
|
<tileset firstgid="1" source="forest.tsx"/>
|
||||||
|
<layer name="background" width="12" height="13">
|
||||||
|
<data encoding="csv">
|
||||||
|
18,18,18,18,18,18,18,18,10,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,9,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,13,18,18,18,
|
||||||
|
18,18,18,10,18,8,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,9,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,9,18,18,18,18,18,
|
||||||
|
18,13,18,18,18,18,18,18,18,13,18,18,
|
||||||
|
18,18,13,18,9,18,18,10,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,13,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="water" width="12" height="13">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="obstacles" width="12" height="13">
|
||||||
|
<data encoding="csv">
|
||||||
|
21,22,22,22,22,22,22,22,22,22,22,23,
|
||||||
|
20,0,0,0,0,0,0,0,17,0,0,24,
|
||||||
|
20,17,17,43,17,17,54,0,17,17,0,24,
|
||||||
|
20,0,17,0,0,0,17,0,0,0,0,24,
|
||||||
|
20,0,17,0,17,0,43,17,19,54,0,24,
|
||||||
|
20,0,0,0,17,0,0,0,0,0,0,24,
|
||||||
|
20,17,17,17,17,17,17,17,17,17,17,24,
|
||||||
|
20,0,0,0,17,0,0,17,0,0,0,24,
|
||||||
|
20,0,17,0,0,0,0,43,0,0,0,24,
|
||||||
|
20,0,54,17,17,17,0,17,0,0,0,24,
|
||||||
|
20,0,17,0,17,0,0,0,0,0,0,24,
|
||||||
|
20,0,17,0,17,17,0,17,0,0,0,24,
|
||||||
|
27,26,26,26,26,26,26,26,26,26,26,25
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="movables" width="12" height="13">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,49,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="holes" width="12" height="13">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="animals" width="12" height="13">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,61,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,5,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="win" width="12" height="13">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,55,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,55,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
</map>
|
After Width: | Height: | Size: 289 KiB |
|
@ -0,0 +1,144 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<map version="1.0" tiledversion="1.1.5" orientation="orthogonal" renderorder="right-down" width="16" height="16" tilewidth="32" tileheight="32" infinite="0" nextobjectid="1">
|
||||||
|
<tileset firstgid="1" source="forest.tsx"/>
|
||||||
|
<layer name="background" width="16" height="16">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,18,18,18,18,18,18,18,18,18,18,10,18,18,18,0,
|
||||||
|
0,18,6,18,41,36,42,18,18,41,36,42,18,18,7,0,
|
||||||
|
0,18,18,18,50,0,51,18,18,50,0,51,18,18,18,0,
|
||||||
|
0,18,18,18,50,0,51,18,18,50,0,51,18,18,18,0,
|
||||||
|
0,18,7,18,50,0,51,18,18,50,0,51,18,18,18,0,
|
||||||
|
0,18,18,18,50,0,51,18,18,50,0,51,18,8,18,0,
|
||||||
|
0,18,18,18,52,33,53,18,18,52,33,53,18,18,18,0,
|
||||||
|
0,18,18,18,18,18,6,10,18,18,18,9,18,18,18,0,
|
||||||
|
0,18,41,36,36,42,18,18,18,18,41,36,36,42,18,0,
|
||||||
|
0,18,50,0,0,38,42,18,18,41,37,0,0,51,18,0,
|
||||||
|
0,18,52,40,0,0,38,36,36,37,0,0,39,53,18,0,
|
||||||
|
0,18,18,52,40,0,0,0,0,0,0,39,53,18,18,0,
|
||||||
|
0,18,18,18,52,33,33,33,33,33,33,53,18,18,18,0,
|
||||||
|
0,18,8,18,18,18,18,18,18,18,18,18,18,18,18,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="water" width="16" height="16">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,29,0,0,0,0,32,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,32,0,0,0,0,29,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,32,0,0,0,0,32,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,29,0,0,0,0,31,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,32,30,0,0,0,0,0,0,30,30,0,0,0,
|
||||||
|
0,0,0,0,31,30,0,0,0,0,31,29,0,0,0,0,
|
||||||
|
0,0,0,0,0,29,32,32,32,32,29,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="obstacles" width="16" height="16">
|
||||||
|
<data encoding="csv">
|
||||||
|
21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,17,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,44,0,0,0,0,0,0,43,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
27,26,26,26,26,26,26,26,26,26,26,26,26,26,26,25
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="movables" width="16" height="16">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="holes" width="16" height="16">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="animals" width="16" height="16">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="win" width="16" height="16">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,55,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,55,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
</map>
|
After Width: | Height: | Size: 108 KiB |
|
@ -0,0 +1,148 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<map version="1.0" tiledversion="1.1.5" orientation="orthogonal" renderorder="right-down" width="20" height="20" tilewidth="32" tileheight="32" infinite="0" nextobjectid="1">
|
||||||
|
<tileset firstgid="1" source="forest.tsx"/>
|
||||||
|
<layer name="background" width="20" height="20" locked="1">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,39,33,33,33,33,33,40,0,0,39,33,33,33,33,40,0,0,0,
|
||||||
|
0,0,51,18,18,18,18,18,52,33,33,53,18,18,18,18,52,40,0,0,
|
||||||
|
0,0,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,0,0,
|
||||||
|
0,0,38,42,18,18,18,18,18,18,18,18,18,18,18,18,18,50,0,0,
|
||||||
|
0,0,0,38,42,18,18,18,18,18,18,18,18,18,18,18,18,50,0,0,
|
||||||
|
0,0,0,0,51,18,18,18,18,18,18,18,18,18,18,18,18,50,0,0,
|
||||||
|
0,0,0,0,51,18,18,18,18,18,18,18,18,18,18,18,18,50,0,0,
|
||||||
|
0,0,0,0,38,42,18,18,18,18,18,18,18,18,18,18,18,50,0,0,
|
||||||
|
0,0,0,0,0,38,42,18,18,18,18,18,18,18,18,18,18,50,0,0,
|
||||||
|
0,0,0,0,0,0,51,18,18,18,18,18,18,18,18,18,18,50,0,0,
|
||||||
|
0,0,0,0,0,39,53,18,18,18,18,18,18,18,18,18,18,50,0,0,
|
||||||
|
0,0,0,0,0,51,18,18,18,18,18,18,18,18,18,18,18,50,0,0,
|
||||||
|
0,0,0,0,0,38,42,18,18,18,18,18,18,18,18,41,36,37,0,0,
|
||||||
|
0,0,0,0,0,0,51,18,18,18,18,18,18,18,41,37,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,38,36,36,36,42,18,18,41,37,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,38,36,36,37,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="obstacles" width="20" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,46,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,43,0,0,43,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,54,0,0,43,0,0,0,0,0,0,43,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,43,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,43,0,0,0,0,43,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="win" width="20" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,55,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="collectables" width="20" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,59,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,58,0,0,60,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,60,0,0,0,0,0,0,59,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="animals" width="20" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="water" width="20" height="20" locked="1">
|
||||||
|
<data encoding="csv">
|
||||||
|
30,31,29,29,31,31,29,32,29,30,31,32,29,30,32,30,31,29,32,30,
|
||||||
|
29,30,30,29,32,32,30,30,31,32,31,32,29,31,32,29,30,31,29,31,
|
||||||
|
29,32,0,0,0,0,0,0,0,32,32,0,0,0,0,0,0,29,31,29,
|
||||||
|
31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,30,
|
||||||
|
29,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,30,
|
||||||
|
29,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,
|
||||||
|
31,32,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,32,
|
||||||
|
32,32,31,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,32,
|
||||||
|
31,31,32,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,29,
|
||||||
|
31,31,31,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,31,
|
||||||
|
29,30,30,31,30,0,0,0,0,0,0,0,0,0,0,0,0,0,31,29,
|
||||||
|
29,32,29,29,29,31,0,0,0,0,0,0,0,0,0,0,0,0,29,31,
|
||||||
|
32,30,32,32,29,0,0,0,0,0,0,0,0,0,0,0,0,0,29,29,
|
||||||
|
30,29,32,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,31,32,
|
||||||
|
29,29,30,31,29,0,0,0,0,0,0,0,0,0,0,0,0,0,32,32,
|
||||||
|
29,31,32,29,32,32,0,0,0,0,0,0,0,0,0,0,31,31,31,32,
|
||||||
|
32,29,32,30,29,31,0,0,0,0,0,0,0,0,0,30,30,30,29,30,
|
||||||
|
32,30,32,30,30,31,29,29,30,30,0,0,0,0,30,30,31,32,30,32,
|
||||||
|
32,31,32,32,31,31,29,32,32,29,29,30,29,31,32,31,31,31,30,31,
|
||||||
|
30,32,32,29,30,31,30,29,29,30,29,32,32,32,31,29,31,29,32,30
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
</map>
|
After Width: | Height: | Size: 28 KiB |
|
@ -0,0 +1,33 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<map version="1.0" tiledversion="1.1.5" orientation="orthogonal" renderorder="right-down" width="25" height="25" tilewidth="32" tileheight="32" infinite="0" nextobjectid="1">
|
||||||
|
<tileset firstgid="1" source="forest.tsx"/>
|
||||||
|
<layer name="background" width="25" height="25">
|
||||||
|
<data encoding="csv">
|
||||||
|
32,30,31,32,31,32,32,31,32,29,32,32,32,30,32,29,30,31,29,30,31,31,31,30,31,
|
||||||
|
31,29,29,30,31,31,31,32,29,30,29,29,32,31,30,29,29,30,31,31,29,32,32,32,30,
|
||||||
|
29,32,29,30,30,32,29,30,31,32,31,29,31,29,32,32,32,29,32,30,30,32,30,32,30,
|
||||||
|
32,31,29,39,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,40,31,31,32,
|
||||||
|
30,29,39,53,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,52,40,32,32,
|
||||||
|
30,30,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,29,31,
|
||||||
|
31,29,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,32,29,
|
||||||
|
29,30,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,32,32,
|
||||||
|
32,32,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,32,32,
|
||||||
|
30,31,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,32,31,
|
||||||
|
29,29,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,32,31,
|
||||||
|
3,30,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,32,32,
|
||||||
|
3,32,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,32,29,
|
||||||
|
3,30,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,30,31,
|
||||||
|
3,29,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,30,32,
|
||||||
|
3,29,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,32,32,
|
||||||
|
3,32,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,30,32,
|
||||||
|
3,31,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,32,29,
|
||||||
|
3,29,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,30,31,
|
||||||
|
29,31,51,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,50,31,29,
|
||||||
|
29,29,38,42,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,41,37,32,30,
|
||||||
|
31,29,30,38,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,37,31,29,30,
|
||||||
|
30,32,31,29,32,32,29,31,32,29,30,30,30,29,31,31,29,30,31,29,29,29,32,32,30,
|
||||||
|
29,31,32,31,30,32,29,31,32,31,29,30,32,29,32,29,29,30,31,32,32,29,32,29,29,
|
||||||
|
31,31,29,30,31,32,29,32,32,31,32,31,29,32,32,31,32,31,29,32,32,32,30,29,30
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
</map>
|
|
@ -0,0 +1,174 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<map version="1.0" tiledversion="1.1.5" orientation="orthogonal" renderorder="right-down" width="18" height="20" tilewidth="32" tileheight="32" infinite="0" nextobjectid="1">
|
||||||
|
<tileset firstgid="1" name="forest" tilewidth="32" tileheight="32" tilecount="65" columns="5">
|
||||||
|
<image source="map.png" width="160" height="416"/>
|
||||||
|
</tileset>
|
||||||
|
<layer name="background" width="18" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,18,18,18,0,0,0,0,18,18,18,18,18,0,18,18,0,0,
|
||||||
|
0,18,0,18,18,18,18,0,18,0,18,18,18,18,18,18,18,0,
|
||||||
|
0,18,18,0,0,0,18,0,0,0,18,0,18,18,0,18,18,0,
|
||||||
|
0,0,18,0,0,0,18,18,18,18,18,0,18,18,18,18,18,0,
|
||||||
|
0,18,18,0,0,0,18,0,0,0,0,0,18,0,0,0,18,0,
|
||||||
|
0,18,18,18,18,18,18,18,18,18,18,18,18,0,18,18,18,0,
|
||||||
|
0,18,18,0,18,0,18,0,0,0,18,18,18,0,18,0,0,0,
|
||||||
|
0,18,18,0,18,18,18,0,0,0,18,18,18,0,18,18,18,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,
|
||||||
|
0,0,0,0,18,18,18,0,0,0,18,18,18,0,18,18,18,18,
|
||||||
|
0,0,0,0,18,0,18,0,0,0,18,18,18,0,18,0,0,0,
|
||||||
|
0,18,18,18,18,18,18,18,18,18,18,18,18,0,18,18,18,0,
|
||||||
|
0,18,18,0,0,0,18,0,0,0,0,0,18,0,0,0,18,0,
|
||||||
|
0,0,18,0,0,0,18,18,18,18,18,0,18,18,18,18,18,0,
|
||||||
|
0,18,18,0,0,0,18,0,0,0,18,0,18,18,18,18,18,0,
|
||||||
|
0,18,0,18,18,18,18,0,18,0,18,18,18,18,18,18,18,0,
|
||||||
|
0,18,18,18,0,0,0,0,18,18,18,18,18,0,18,18,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="water" width="18" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="obstacles" width="18" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,
|
||||||
|
20,0,0,0,17,17,17,16,0,0,0,0,0,16,0,0,16,24,
|
||||||
|
20,0,17,0,0,0,0,17,0,17,0,17,0,0,0,0,0,24,
|
||||||
|
20,0,0,17,17,16,0,17,17,17,0,17,0,0,16,0,0,24,
|
||||||
|
20,17,0,17,17,17,0,0,0,0,0,17,0,0,0,0,0,24,
|
||||||
|
20,0,0,17,17,17,0,17,17,17,17,17,0,19,19,17,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,24,
|
||||||
|
20,0,0,17,0,17,0,17,17,17,0,0,0,16,0,17,17,24,
|
||||||
|
20,0,0,17,0,0,0,17,17,17,0,0,0,17,0,0,0,24,
|
||||||
|
20,19,19,17,17,16,17,17,17,17,17,17,17,17,17,17,0,24,
|
||||||
|
20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,0,24,
|
||||||
|
20,49,49,16,0,0,0,17,17,16,0,0,0,16,0,0,0,24,
|
||||||
|
20,49,49,16,0,16,0,17,16,17,0,0,0,17,0,17,17,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,24,
|
||||||
|
20,0,0,17,19,54,0,17,17,17,17,17,0,17,17,54,0,24,
|
||||||
|
20,54,0,17,16,17,0,0,0,0,0,17,0,0,0,0,0,24,
|
||||||
|
20,0,0,17,19,17,0,17,17,17,0,16,0,0,16,0,0,24,
|
||||||
|
20,0,17,0,0,0,0,17,17,17,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,17,17,17,17,16,0,0,0,0,16,0,0,16,24,
|
||||||
|
27,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,25
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="movables" width="18" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,49,0,0,49,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,49,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,49,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,49,0,0,49,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="holes" width="18" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="animals" width="18" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="win" width="18" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
</map>
|
|
@ -0,0 +1,109 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<map version="1.0" tiledversion="1.1.5" orientation="orthogonal" renderorder="right-down" width="20" height="11" tilewidth="32" tileheight="32" infinite="0" nextobjectid="1">
|
||||||
|
<tileset firstgid="1" source="forest.tsx"/>
|
||||||
|
<layer name="background" width="20" height="11">
|
||||||
|
<data encoding="csv">
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,9,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,41,36,42,18,18,18,13,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,50,18,51,8,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,9,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="water" width="20" height="11">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,29,0,0,
|
||||||
|
0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,29,29,29,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,30,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="obstacles" width="20" height="11">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,24,
|
||||||
|
20,17,17,45,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,24,
|
||||||
|
20,0,0,0,0,0,0,19,0,0,0,19,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,17,0,0,0,0,0,0,0,0,0,19,19,19,19,0,0,24,
|
||||||
|
27,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,25,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="movables" width="20" height="11">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="holes" width="20" height="11">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="animals" width="20" height="11">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="win" width="20" height="11">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
</map>
|
|
@ -0,0 +1,172 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<map version="1.0" tiledversion="1.1.5" orientation="orthogonal" renderorder="right-down" width="20" height="20" tilewidth="32" tileheight="32" infinite="0" nextobjectid="1">
|
||||||
|
<tileset firstgid="1" source="forest.tsx"/>
|
||||||
|
<layer name="background" width="20" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,18,18,18,18,
|
||||||
|
18,18,18,6,18,18,9,18,18,18,18,9,18,18,18,13,18,18,18,18,
|
||||||
|
18,18,18,18,13,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,10,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,7,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,10,18,18,18,18,
|
||||||
|
18,18,18,18,18,7,18,18,18,9,18,18,18,18,18,18,18,7,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,18,18,9,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,10,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,18,10,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,6,18,18,18,18,18,6,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,13,18,18,18,18,18,18,18,18,18,13,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,9,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,10,18,18,18,18,18,7,18,18,6,18,
|
||||||
|
18,18,7,18,18,13,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="water" width="20" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
31,32,29,30,31,32,29,30,31,32,29,30,31,32,29,30,31,32,29,30,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="obstacles" width="20" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
35,0,0,0,0,0,0,0,0,46,0,0,0,46,0,0,44,45,45,34,
|
||||||
|
20,19,0,0,0,0,0,0,0,0,43,0,0,0,0,0,0,16,16,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,16,0,0,0,0,0,0,19,19,19,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,16,0,0,0,0,0,19,19,19,19,0,0,0,19,0,0,0,0,24,
|
||||||
|
20,17,17,0,0,0,0,19,19,0,19,0,0,0,17,17,0,0,0,24,
|
||||||
|
20,17,0,0,0,0,0,0,0,0,0,0,54,0,0,0,0,0,17,24,
|
||||||
|
20,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,24,
|
||||||
|
20,19,19,0,0,0,0,17,17,0,0,0,0,0,0,0,0,0,17,24,
|
||||||
|
20,19,19,19,0,0,0,17,17,0,0,0,0,0,17,19,17,0,0,24,
|
||||||
|
20,19,0,0,0,0,0,0,0,0,0,0,0,0,17,19,17,0,0,24,
|
||||||
|
20,0,0,19,19,19,0,0,0,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,19,19,19,16,0,0,0,19,17,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,19,19,19,16,0,0,16,17,19,16,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,0,24,
|
||||||
|
27,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,25
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="movables" width="20" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,49,0,49,49,0,0,49,49,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,49,0,0,0,0,49,49,0,0,0,0,
|
||||||
|
0,0,0,0,49,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,49,0,0,0,0,49,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,49,0,0,0,0,0,49,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,49,49,0,0,0,0,49,49,0,0,49,0,49,0,0,0,
|
||||||
|
0,0,0,0,0,49,49,0,0,0,0,49,0,0,49,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,49,49,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,49,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,49,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,49,49,0,0,0,0,49,49,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,49,0,0,0,0,49,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="holes" width="20" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="animals" width="20" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="win" width="20" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,55,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
</map>
|
|
@ -0,0 +1,123 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<map version="1.0" tiledversion="1.1.5" orientation="orthogonal" renderorder="right-down" width="12" height="13" tilewidth="32" tileheight="32" infinite="0" nextobjectid="1">
|
||||||
|
<tileset firstgid="1" source="forest.tsx"/>
|
||||||
|
<layer name="background" width="12" height="13">
|
||||||
|
<data encoding="csv">
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,13,18,18,18,18,18,
|
||||||
|
18,9,18,18,18,18,18,18,10,18,18,18,
|
||||||
|
18,18,18,8,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,13,18,18,9,18,18,18,10,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,10,18,18,18,18,18,18,
|
||||||
|
18,18,8,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
18,18,13,18,18,18,18,10,18,18,18,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,9,18,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="water" width="12" height="13">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="obstacles" width="12" height="13">
|
||||||
|
<data encoding="csv">
|
||||||
|
21,22,22,22,22,22,22,22,22,22,22,23,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,17,17,17,17,17,17,17,17,17,17,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
20,0,0,0,0,0,0,0,0,0,0,24,
|
||||||
|
27,26,26,26,26,26,26,26,26,26,26,25
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="movables" width="12" height="13">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,49,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="holes" width="12" height="13">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="animals" width="12" height="13">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,12,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,2,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="win" width="12" height="13">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,55,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,55,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
</map>
|
After Width: | Height: | Size: 84 KiB |
|
@ -0,0 +1,15 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if ! [ -x "$(which go-bindata)" ]; then
|
||||||
|
echo ''
|
||||||
|
echo 'Error: go-bindata is not installed.' >&2
|
||||||
|
echo 'Run "go get -u github.com/jteeuwen/go-bindata/..."' >&2
|
||||||
|
|
||||||
|
echo '(the "..." are important!)'
|
||||||
|
echo ''
|
||||||
|
echo 'Do not forget to add $GOPATH/bin to your $PATH :)'
|
||||||
|
echo ''
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
go-bindata -pkg assetsManager -o assets_manager/manager.go assets
|
|
@ -0,0 +1,13 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
DESTINATION="/tmp/ASharedJourney"
|
||||||
|
|
||||||
|
make build_assets
|
||||||
|
go build main.go
|
||||||
|
chmod +x main
|
||||||
|
mkdir -p $DESTINATION
|
||||||
|
cp main $DESTINATION/ASharedJourney
|
||||||
|
cp -r ./assets $DESTINATION/
|
||||||
|
|
||||||
|
echo "Built!"
|
||||||
|
echo "You may now send" $DESTINATION "to your beautiful friends!"
|
|
@ -0,0 +1,14 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
SOURCE="./build/Template.app"
|
||||||
|
DESTINATION="./build/ASharedJourney.app"
|
||||||
|
|
||||||
|
make build_assets
|
||||||
|
go build main.go
|
||||||
|
chmod +x main
|
||||||
|
rm -rf $DESTINATION
|
||||||
|
cp -r $SOURCE $DESTINATION
|
||||||
|
cp main $DESTINATION/Contents/MacOS/ASharedJourney
|
||||||
|
|
||||||
|
echo "Built!"
|
||||||
|
echo "You may now send" $DESTINATION "to your beautiful friends!"
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!bin/bash
|
||||||
|
|
||||||
|
go -d .
|
|
@ -0,0 +1,71 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/gandrin/ASharedJourney/supervisor"
|
||||||
|
|
||||||
|
"github.com/faiface/pixel"
|
||||||
|
"github.com/faiface/pixel/pixelgl"
|
||||||
|
"github.com/gandrin/ASharedJourney/tiles"
|
||||||
|
"golang.org/x/image/colornames"
|
||||||
|
|
||||||
|
"github.com/gandrin/ASharedJourney/mechanics"
|
||||||
|
"github.com/gandrin/ASharedJourney/menu"
|
||||||
|
"github.com/gandrin/ASharedJourney/music"
|
||||||
|
"github.com/gandrin/ASharedJourney/shared"
|
||||||
|
)
|
||||||
|
|
||||||
|
const frameRate = 60
|
||||||
|
|
||||||
|
func run() {
|
||||||
|
cfg := pixelgl.WindowConfig{
|
||||||
|
Title: "A Shared Journey",
|
||||||
|
Bounds: pixel.R(0, 0, 800, 800),
|
||||||
|
VSync: true,
|
||||||
|
}
|
||||||
|
win, err := pixelgl.NewWindow(cfg)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
shared.Win = win
|
||||||
|
|
||||||
|
menu.Menu(menu.MainMenuImage, " Loading ...",pixel.V(200,150), false, music.SOUND_NONE)
|
||||||
|
|
||||||
|
music.Music.Start()
|
||||||
|
|
||||||
|
<-music.GameMusicLoader
|
||||||
|
menu.Menu(menu.MainMenuImage, "Press ENTER to PLAY ...", pixel.V(180,150),true, music.SOUND_EFFECT_START_GAME)
|
||||||
|
menu.Menu(menu.RulesMenuImage, "Press ENTER to START", pixel.V(180,150),true, music.SOUND_EFFECT_START_GAME)
|
||||||
|
|
||||||
|
world := tiles.NextLevel()
|
||||||
|
|
||||||
|
|
||||||
|
fps := time.Tick(time.Second / frameRate)
|
||||||
|
|
||||||
|
gameEventsChannel := supervisor.Start()
|
||||||
|
|
||||||
|
newWorldChannel := mechanics.Start(gameEventsChannel, world)
|
||||||
|
|
||||||
|
for !win.Closed() {
|
||||||
|
win.Clear(colornames.Black)
|
||||||
|
supervisor.Sup.Play()
|
||||||
|
mechanics.Mecha.Play()
|
||||||
|
upToDateWorld := <-newWorldChannel
|
||||||
|
tiles.DrawMap(upToDateWorld.BackgroundTiles)
|
||||||
|
tiles.DrawMap(upToDateWorld.Obstacles)
|
||||||
|
tiles.DrawMap(upToDateWorld.WinStars)
|
||||||
|
tiles.DrawMap(upToDateWorld.Water)
|
||||||
|
tiles.DrawMap(upToDateWorld.Movables)
|
||||||
|
tiles.DrawMap(upToDateWorld.Players)
|
||||||
|
tiles.DrawMap(upToDateWorld.Holes)
|
||||||
|
win.Update()
|
||||||
|
<-fps
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
|
||||||
|
pixelgl.Run(run)
|
||||||
|
}
|
|
@ -0,0 +1,135 @@
|
||||||
|
//defines the behavior of the game once we have defined the desired direction
|
||||||
|
package mechanics
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/gandrin/ASharedJourney/shared"
|
||||||
|
"github.com/gandrin/ASharedJourney/supervisor"
|
||||||
|
"github.com/gandrin/ASharedJourney/tiles"
|
||||||
|
"github.com/gandrin/ASharedJourney/menu"
|
||||||
|
"github.com/faiface/pixel"
|
||||||
|
"github.com/gandrin/ASharedJourney/music"
|
||||||
|
"image/color"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Mechanics struct {
|
||||||
|
world tiles.World
|
||||||
|
//communication channel to animator
|
||||||
|
toAnimate chan *tiles.World
|
||||||
|
//communication channel from supervisor
|
||||||
|
gameEventChannel chan *supervisor.GameEvent
|
||||||
|
}
|
||||||
|
|
||||||
|
//game mechanics
|
||||||
|
var Mecha *Mechanics
|
||||||
|
|
||||||
|
//initialise the game mechanics structure
|
||||||
|
func Start(
|
||||||
|
gameEventChannel chan *supervisor.GameEvent,
|
||||||
|
baseWorld tiles.World,
|
||||||
|
) chan *tiles.World {
|
||||||
|
Mecha = new(Mechanics)
|
||||||
|
//build return channel to animator
|
||||||
|
var toAnim chan *tiles.World
|
||||||
|
toAnim = make(chan *tiles.World, 1)
|
||||||
|
|
||||||
|
Mecha.toAnimate = toAnim
|
||||||
|
Mecha.gameEventChannel = gameEventChannel
|
||||||
|
Mecha.world = baseWorld
|
||||||
|
|
||||||
|
//log.Print("Mecanics loaded")
|
||||||
|
return Mecha.toAnimate
|
||||||
|
}
|
||||||
|
|
||||||
|
//synchronisation objects
|
||||||
|
func (m *Mechanics) muxChannel() *supervisor.GameEvent {
|
||||||
|
select {
|
||||||
|
case nextGameEvent, ok := <-m.gameEventChannel:
|
||||||
|
if !ok {
|
||||||
|
fmt.Println("Channel closed!")
|
||||||
|
log.Fatal()
|
||||||
|
}
|
||||||
|
return nextGameEvent
|
||||||
|
default:
|
||||||
|
nextEvent := supervisor.Event("NONE")
|
||||||
|
nextGameEvent := new(supervisor.GameEvent)
|
||||||
|
nextGameEvent.PlayerDirections = new(supervisor.PlayerDirections)
|
||||||
|
nextGameEvent.PlayerDirections.Player1.X = 0
|
||||||
|
nextGameEvent.PlayerDirections.Player1.Y = 0
|
||||||
|
nextGameEvent.PlayerDirections.Player2.X = 0
|
||||||
|
nextGameEvent.PlayerDirections.Player2.Y = 0
|
||||||
|
nextGameEvent.Event = &nextEvent
|
||||||
|
fmt.Println("No player direction mecha is faster than supervisor ")
|
||||||
|
return nextGameEvent
|
||||||
|
//set motion to default values
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//call mechanics
|
||||||
|
func (m *Mechanics) Play() {
|
||||||
|
|
||||||
|
for play := true; play; play = shared.Continue() {
|
||||||
|
//delay to not call and overload cpu
|
||||||
|
time.Sleep(shared.MechanicsRefreshDelayMs * time.Millisecond)
|
||||||
|
|
||||||
|
gameEvent := m.muxChannel()
|
||||||
|
m.toAnimate <- m.Move(gameEvent.PlayerDirections)
|
||||||
|
m.handleGameEvent(gameEvent.Event)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Mechanics) handleGameEvent(event *supervisor.Event) {
|
||||||
|
switch *event {
|
||||||
|
case "RESTART":
|
||||||
|
m.world = tiles.RestartLevel()
|
||||||
|
menu.Menu(menu.WinLevelMenuImage, "Reloading level ...", pixel.V(180, 150), true, music.SOUND_EFFECT_START_GAME)
|
||||||
|
shared.Win.Clear(color.Black)
|
||||||
|
break
|
||||||
|
case "KEY0":
|
||||||
|
tiles.SetNexLevel(0)
|
||||||
|
m.world = tiles.NextLevel()
|
||||||
|
break
|
||||||
|
case "KEY1":
|
||||||
|
tiles.SetNexLevel(1)
|
||||||
|
m.world = tiles.NextLevel()
|
||||||
|
break
|
||||||
|
case "KEY2":
|
||||||
|
tiles.SetNexLevel(2)
|
||||||
|
m.world = tiles.NextLevel()
|
||||||
|
break
|
||||||
|
case "KEY3":
|
||||||
|
tiles.SetNexLevel(3)
|
||||||
|
m.world = tiles.NextLevel()
|
||||||
|
break
|
||||||
|
case "KEY4":
|
||||||
|
tiles.SetNexLevel(4)
|
||||||
|
m.world = tiles.NextLevel()
|
||||||
|
break
|
||||||
|
case "KEY5":
|
||||||
|
tiles.SetNexLevel(5)
|
||||||
|
m.world = tiles.NextLevel()
|
||||||
|
break
|
||||||
|
case "KEY6":
|
||||||
|
tiles.SetNexLevel(6)
|
||||||
|
m.world = tiles.NextLevel()
|
||||||
|
break
|
||||||
|
case "KEY7":
|
||||||
|
tiles.SetNexLevel(7)
|
||||||
|
m.world = tiles.NextLevel()
|
||||||
|
break
|
||||||
|
case "KEY8":
|
||||||
|
tiles.SetNexLevel(8)
|
||||||
|
m.world = tiles.NextLevel()
|
||||||
|
break
|
||||||
|
case "KEY9":
|
||||||
|
tiles.SetNexLevel(9)
|
||||||
|
m.world = tiles.NextLevel()
|
||||||
|
break
|
||||||
|
|
||||||
|
default:
|
||||||
|
//No event
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,155 @@
|
||||||
|
package mechanics
|
||||||
|
|
||||||
|
import (
|
||||||
|
"reflect"
|
||||||
|
|
||||||
|
"github.com/faiface/pixel"
|
||||||
|
"github.com/gandrin/ASharedJourney/menu"
|
||||||
|
"github.com/gandrin/ASharedJourney/music"
|
||||||
|
"github.com/gandrin/ASharedJourney/supervisor"
|
||||||
|
"github.com/gandrin/ASharedJourney/tiles"
|
||||||
|
)
|
||||||
|
|
||||||
|
//move function receives as input the data from a player direction channel
|
||||||
|
func (m *Mechanics) Move(playDir *supervisor.PlayerDirections) *tiles.World {
|
||||||
|
|
||||||
|
if m.world.Players[0].HasWon && m.world.Players[1].HasWon &&
|
||||||
|
!reflect.DeepEqual(m.world.Players[0].WinningPosition, m.world.Players[1].WinningPosition) {
|
||||||
|
music.Music.PlayEffect(music.SOUND_EFFECT_WIN_GAME)
|
||||||
|
m.world = tiles.NextLevel()
|
||||||
|
}
|
||||||
|
|
||||||
|
if m.world.Players[0].InTheWater || m.world.Players[1].InTheWater {
|
||||||
|
menu.Menu(menu.DrownedGameImage, "Oops ....", pixel.V(300, 150), true, music.SOUND_EFFECT_LOSE_GAME)
|
||||||
|
m.world = tiles.RestartLevel()
|
||||||
|
}
|
||||||
|
|
||||||
|
if playDir.Player1.X != 0 || playDir.Player1.Y != 0 {
|
||||||
|
// "Zzzz" tile...
|
||||||
|
m.world.Holes[len(m.world.Holes)-1].Position.X = -100
|
||||||
|
m.world.Holes[len(m.world.Holes)-1].Position.Y = -100
|
||||||
|
|
||||||
|
m.movePlayer(&m.world.Players[0], playDir.Player1.Next)
|
||||||
|
m.movePlayer(&m.world.Players[1], playDir.Player2.Next)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return m.copyToNewWorld()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Mechanics) movePlayer(player *tiles.SpriteWithPosition, getNextPosition func(pixel.Vec) pixel.Vec) {
|
||||||
|
var canPlayerMove = true
|
||||||
|
nextPlayerPosition := getNextPosition(player.Position)
|
||||||
|
|
||||||
|
/// In the hole
|
||||||
|
if player.InTheHole {
|
||||||
|
player.InTheHole = false
|
||||||
|
m.world.Holes[len(m.world.Holes)-1].Position = player.Position
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Obstacles
|
||||||
|
for _, obstacle := range m.world.Obstacles {
|
||||||
|
if obstacle.Position.X == nextPlayerPosition.X && obstacle.Position.Y == nextPlayerPosition.Y {
|
||||||
|
canPlayerMove = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Movables
|
||||||
|
if canPlayerMove {
|
||||||
|
for n, mov := range m.world.Movables {
|
||||||
|
if mov.Position.X == nextPlayerPosition.X && mov.Position.Y == nextPlayerPosition.Y {
|
||||||
|
// There's a movable in that position
|
||||||
|
movableNextPosition := getNextPosition(nextPlayerPosition)
|
||||||
|
for _, playerTile := range m.world.Players {
|
||||||
|
if playerTile.Position.X == movableNextPosition.X &&
|
||||||
|
playerTile.Position.Y == movableNextPosition.Y {
|
||||||
|
canPlayerMove = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, obstacleTile := range m.world.Obstacles {
|
||||||
|
if obstacleTile.Position.X == movableNextPosition.X &&
|
||||||
|
obstacleTile.Position.Y == movableNextPosition.Y {
|
||||||
|
canPlayerMove = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, movableTile := range m.world.Movables {
|
||||||
|
if movableTile.Position.X == movableNextPosition.X &&
|
||||||
|
movableTile.Position.Y == movableNextPosition.Y {
|
||||||
|
canPlayerMove = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, winStarTile := range m.world.WinStars {
|
||||||
|
if winStarTile.Position.X == movableNextPosition.X && winStarTile.Position.Y == movableNextPosition.Y {
|
||||||
|
player.HasWon = true
|
||||||
|
player.WinningPosition = pixel.V(winStarTile.Position.X, winStarTile.Position.Y)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if canPlayerMove {
|
||||||
|
m.world.Movables[n].Position = movableNextPosition
|
||||||
|
}
|
||||||
|
for h, holeTile := range m.world.Holes {
|
||||||
|
if holeTile.Position.X == movableNextPosition.X && holeTile.Position.Y == movableNextPosition.Y {
|
||||||
|
// remove both obj (hole and movable)
|
||||||
|
m.world.Movables[n].Position.X = -100
|
||||||
|
m.world.Holes[h].Position.X = -100
|
||||||
|
music.Music.PlayEffect(music.SOUND_EFFECT_SNORE)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if canPlayerMove {
|
||||||
|
player.Position = nextPlayerPosition
|
||||||
|
|
||||||
|
// Water
|
||||||
|
for _, waterTile := range m.world.Water {
|
||||||
|
if waterTile.Position.X == nextPlayerPosition.X && waterTile.Position.Y == nextPlayerPosition.Y {
|
||||||
|
player.InTheWater = true
|
||||||
|
music.Music.PlayEffect(music.SOUND_EFFECT_WATER)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hole
|
||||||
|
for _, holeTile := range m.world.Holes {
|
||||||
|
if holeTile.Position.X == nextPlayerPosition.X && holeTile.Position.Y == nextPlayerPosition.Y {
|
||||||
|
player.InTheHole = true
|
||||||
|
m.world.Holes[len(m.world.Holes)-1].Position = nextPlayerPosition
|
||||||
|
music.Music.PlayEffect(music.SOUND_EFFECT_SNORE)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
player.HasWon = false
|
||||||
|
|
||||||
|
// Winning rule
|
||||||
|
for _, winStarTile := range m.world.WinStars {
|
||||||
|
if winStarTile.Position.X == nextPlayerPosition.X && winStarTile.Position.Y == nextPlayerPosition.Y {
|
||||||
|
player.HasWon = true
|
||||||
|
player.WinningPosition = pixel.V(winStarTile.Position.X, winStarTile.Position.Y)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Mechanics) copyToNewWorld() *tiles.World {
|
||||||
|
var newWorld = new(tiles.World)
|
||||||
|
|
||||||
|
//copy player locations
|
||||||
|
//copy world
|
||||||
|
newWorld.BackgroundTiles = make([]tiles.SpriteWithPosition, len(m.world.BackgroundTiles))
|
||||||
|
newWorld.Movables = make([]tiles.SpriteWithPosition, len(m.world.Movables))
|
||||||
|
newWorld.Players = make([]tiles.SpriteWithPosition, len(m.world.Players))
|
||||||
|
newWorld.Obstacles = make([]tiles.SpriteWithPosition, len(m.world.Obstacles))
|
||||||
|
newWorld.Water = make([]tiles.SpriteWithPosition, len(m.world.Water))
|
||||||
|
newWorld.Holes = make([]tiles.SpriteWithPosition, len(m.world.Holes))
|
||||||
|
newWorld.WinStars = make([]tiles.SpriteWithPosition, len(m.world.WinStars))
|
||||||
|
copy(newWorld.BackgroundTiles, m.world.BackgroundTiles)
|
||||||
|
copy(newWorld.Movables, m.world.Movables)
|
||||||
|
copy(newWorld.Players, m.world.Players)
|
||||||
|
copy(newWorld.WinStars, m.world.WinStars)
|
||||||
|
copy(newWorld.Water, m.world.Water)
|
||||||
|
copy(newWorld.Obstacles, m.world.Obstacles)
|
||||||
|
copy(newWorld.Holes, m.world.Holes)
|
||||||
|
return newWorld
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
package mechanics
|
||||||
|
|
||||||
|
type PlayerType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
FOX PlayerType = "fox"
|
||||||
|
MOUSE PlayerType = "mouse"
|
||||||
|
BEE PlayerType = "bee"
|
||||||
|
ELEPHANT PlayerType = "elephant"
|
||||||
|
)
|
|
@ -0,0 +1,77 @@
|
||||||
|
package menu
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
"image"
|
||||||
|
"log"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/gandrin/ASharedJourney/assets_manager"
|
||||||
|
|
||||||
|
"github.com/faiface/pixel"
|
||||||
|
"github.com/faiface/pixel/pixelgl"
|
||||||
|
"github.com/faiface/pixel/text"
|
||||||
|
"github.com/gandrin/ASharedJourney/music"
|
||||||
|
"github.com/gandrin/ASharedJourney/shared"
|
||||||
|
"golang.org/x/image/colornames"
|
||||||
|
"golang.org/x/image/font/basicfont"
|
||||||
|
)
|
||||||
|
|
||||||
|
//level image names
|
||||||
|
const MainMenuImage = "menu.png"
|
||||||
|
const WinLevelMenuImage = "win.png"
|
||||||
|
const FinishedGameImage = "end.png"
|
||||||
|
const DrownedGameImage = "oops.png"
|
||||||
|
const RulesMenuImage = "splashScreen.png"
|
||||||
|
|
||||||
|
//draw menu to screen while player while player hasn't pressed enter
|
||||||
|
func Menu(pictureName string, menuText string, positionText pixel.Vec, blocking bool, exitSoundEffect music.SoundEffect) {
|
||||||
|
|
||||||
|
basicAtlas := text.NewAtlas(basicfont.Face7x13, text.ASCII)
|
||||||
|
basicTxt := text.New(positionText, basicAtlas)
|
||||||
|
basicTxt.Color = colornames.White
|
||||||
|
fmt.Fprintln(basicTxt, menuText)
|
||||||
|
|
||||||
|
//get picture
|
||||||
|
pic, err := loadPicture(pictureName)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
sprite := pixel.NewSprite(pic, pic.Bounds())
|
||||||
|
|
||||||
|
mat := pixel.IM
|
||||||
|
mat = mat.Moved(shared.Win.Bounds().Center())
|
||||||
|
imageMatrix := mat.ScaledXY(shared.Win.Bounds().Center(), pixel.V(0.7, 0.7))
|
||||||
|
|
||||||
|
//clear background
|
||||||
|
shared.Win.Clear(colornames.Black)
|
||||||
|
sprite.Draw(shared.Win, imageMatrix)
|
||||||
|
|
||||||
|
//text
|
||||||
|
basicTxt.Draw(shared.Win, pixel.IM.Scaled(basicTxt.Orig, 3))
|
||||||
|
shared.Win.Update()
|
||||||
|
|
||||||
|
//menu loop
|
||||||
|
if blocking {
|
||||||
|
for !shared.Win.JustPressed(pixelgl.KeyEnter) && !shared.Win.Closed() {
|
||||||
|
time.Sleep(50 * time.Millisecond)
|
||||||
|
shared.Win.Update()
|
||||||
|
}
|
||||||
|
music.Music.PlayEffect(exitSoundEffect)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func loadPicture(path string) (pixel.Picture, error) {
|
||||||
|
byteImage, err := assetsManager.Asset("assets/" + path)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
img, _, err := image.Decode(bytes.NewReader(byteImage))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return pixel.PictureDataFromImage(img), nil
|
||||||
|
}
|
|
@ -0,0 +1,67 @@
|
||||||
|
package music
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/faiface/beep"
|
||||||
|
"github.com/faiface/beep/speaker"
|
||||||
|
)
|
||||||
|
|
||||||
|
type SoundEffect string
|
||||||
|
|
||||||
|
const (
|
||||||
|
SOUND_EFFECT_START_GAME SoundEffect = "MenuEffect.wav"
|
||||||
|
|
||||||
|
SOUND_EFFECT_WIN_GAME SoundEffect = "win2.mp3"
|
||||||
|
|
||||||
|
SOUND_EFFECT_WIN_FINAL_GAME SoundEffect = "win.mp3"
|
||||||
|
|
||||||
|
SOUND_EFFECT_SNORE SoundEffect = "snoring.mp3"
|
||||||
|
|
||||||
|
SOUND_EFFECT_LOSE_GAME SoundEffect = "lose2.mp3"
|
||||||
|
|
||||||
|
SOUND_EFFECT_WATER SoundEffect = "Acid_Bubble.mp3"
|
||||||
|
|
||||||
|
SOUND_NONE SoundEffect = "Acid_Bubble.mp3"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (m *musicStreamers) PlayEffect(effectType SoundEffect) {
|
||||||
|
|
||||||
|
es, ok := m.gameEffects[effectType]
|
||||||
|
if ok {
|
||||||
|
speaker.Lock()
|
||||||
|
m.streamControl.Paused = true
|
||||||
|
speaker.Unlock()
|
||||||
|
//log.Print("Creating new stream entry")
|
||||||
|
LoopAudio := beep.Loop(1, es.Streamer(0, es.Len()))
|
||||||
|
speaker.Play(beep.Seq(LoopAudio)) //effect exists -> play
|
||||||
|
//log.Print("finished playing effect ")
|
||||||
|
speaker.Lock()
|
||||||
|
m.streamControl.Paused = false
|
||||||
|
speaker.Unlock()
|
||||||
|
//log.Print("stream of sound finished")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *musicStreamers) loadEffects() {
|
||||||
|
m.gameEffects = make(map[SoundEffect]*beep.Buffer, 0)
|
||||||
|
//make new buffers and add to buffer
|
||||||
|
stream1, format1 := getStream(string(SOUND_EFFECT_START_GAME))
|
||||||
|
m.gameEffects[SOUND_EFFECT_START_GAME] = beep.NewBuffer(format1)
|
||||||
|
m.gameEffects[SOUND_EFFECT_START_GAME].Append(stream1)
|
||||||
|
|
||||||
|
stream2, format2 := getStream(string(SOUND_EFFECT_WIN_GAME))
|
||||||
|
m.gameEffects[SOUND_EFFECT_WIN_GAME] = beep.NewBuffer(format2)
|
||||||
|
m.gameEffects[SOUND_EFFECT_WIN_GAME].Append(stream2)
|
||||||
|
|
||||||
|
stream3, format3 := getStream(string(SOUND_EFFECT_WATER))
|
||||||
|
m.gameEffects[SOUND_EFFECT_WATER] = beep.NewBuffer(format3)
|
||||||
|
m.gameEffects[SOUND_EFFECT_WATER].Append(stream3)
|
||||||
|
|
||||||
|
stream4, format4 := getStream(string(SOUND_EFFECT_WIN_FINAL_GAME))
|
||||||
|
m.gameEffects[SOUND_EFFECT_WIN_FINAL_GAME] = beep.NewBuffer(format4)
|
||||||
|
m.gameEffects[SOUND_EFFECT_WIN_FINAL_GAME].Append(stream4)
|
||||||
|
|
||||||
|
stream5, format5 := getStream(string(SOUND_EFFECT_SNORE))
|
||||||
|
m.gameEffects[SOUND_EFFECT_SNORE] = beep.NewBuffer(format5)
|
||||||
|
m.gameEffects[SOUND_EFFECT_SNORE].Append(stream5)
|
||||||
|
}
|
|
@ -0,0 +1,112 @@
|
||||||
|
package music
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"io"
|
||||||
|
"log"
|
||||||
|
"path/filepath"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/gandrin/ASharedJourney/assets_manager"
|
||||||
|
|
||||||
|
"github.com/faiface/beep"
|
||||||
|
"github.com/faiface/beep/mp3"
|
||||||
|
"github.com/faiface/beep/speaker"
|
||||||
|
"github.com/faiface/beep/wav"
|
||||||
|
)
|
||||||
|
|
||||||
|
type nopCloser struct {
|
||||||
|
io.Reader
|
||||||
|
}
|
||||||
|
|
||||||
|
func (nopCloser) Close() error { return nil }
|
||||||
|
|
||||||
|
//global synchronization channel
|
||||||
|
var GameMusicLoader chan int
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
GameMusicLoader = make(chan int, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
const musicThemeFileName = "MainThemeMiroir.mp3"
|
||||||
|
|
||||||
|
type musicStreamers struct {
|
||||||
|
//list of loaded musics ( streamer )
|
||||||
|
mainThemeStreamer beep.Streamer
|
||||||
|
backgroundMusic *beep.Buffer
|
||||||
|
gameEffects map[SoundEffect]*beep.Buffer
|
||||||
|
streamControl beep.Ctrl
|
||||||
|
}
|
||||||
|
|
||||||
|
var Music musicStreamers
|
||||||
|
|
||||||
|
//called when package is called into scope the first time
|
||||||
|
func (m *musicStreamers) Start() {
|
||||||
|
var format beep.Format
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
format = m.loadMainTheme()
|
||||||
|
|
||||||
|
err := speaker.Init(format.SampleRate, format.SampleRate.N(time.Second/10))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
m.streamControl.Streamer = m.mainThemeStreamer
|
||||||
|
m.playMainTheme()
|
||||||
|
}()
|
||||||
|
|
||||||
|
go m.loadEffects()
|
||||||
|
|
||||||
|
log.Print("Music loaded")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *musicStreamers) loadMainTheme() beep.Format {
|
||||||
|
var format beep.Format
|
||||||
|
m.mainThemeStreamer, format = getStream(musicThemeFileName)
|
||||||
|
m.backgroundMusic = beep.NewBuffer(format)
|
||||||
|
m.backgroundMusic.Append(m.mainThemeStreamer)
|
||||||
|
m.streamControl.Paused = false
|
||||||
|
return format
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *musicStreamers) playMainTheme() {
|
||||||
|
|
||||||
|
log.Print("Starting music")
|
||||||
|
var streamer = m.backgroundMusic.Streamer(0, m.backgroundMusic.Len())
|
||||||
|
LoopAudio := beep.Loop(5, streamer)
|
||||||
|
go speaker.Play(beep.Seq(LoopAudio))
|
||||||
|
|
||||||
|
log.Print("Music finished")
|
||||||
|
|
||||||
|
GameMusicLoader <- 1
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func getFileName(fileName string) string {
|
||||||
|
return "assets/" + fileName
|
||||||
|
}
|
||||||
|
|
||||||
|
func getStream(filename string) (beep.StreamCloser, beep.Format) {
|
||||||
|
|
||||||
|
absFilePath := getFileName(filename)
|
||||||
|
var newStreamer beep.StreamCloser
|
||||||
|
var format beep.Format
|
||||||
|
var err error
|
||||||
|
|
||||||
|
byteSound, err := assetsManager.Asset(absFilePath)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal("Music file ", err)
|
||||||
|
}
|
||||||
|
ext := filepath.Ext(filename)
|
||||||
|
nopCloser := nopCloser{bytes.NewReader(byteSound)}
|
||||||
|
if ext == ".mp3" {
|
||||||
|
newStreamer, format, err = mp3.Decode(nopCloser)
|
||||||
|
} else if ext == ".wav" {
|
||||||
|
newStreamer, format, err = wav.Decode(nopCloser)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal("Decorer error on file ", absFilePath, " ", err)
|
||||||
|
}
|
||||||
|
return newStreamer, format
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
package shared
|
||||||
|
|
||||||
|
const KeyPressedDelayMs = 10
|
||||||
|
const FrameRefreshDelayMs = 50
|
||||||
|
const MechanicsRefreshDelayMs = 20
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
package shared
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//struct that holds all data about the current game state
|
||||||
|
type gameState struct {
|
||||||
|
//is the game to keep on playing ?
|
||||||
|
Playing bool
|
||||||
|
Level int //todo use this values as game state
|
||||||
|
NbAction int
|
||||||
|
Score int
|
||||||
|
}
|
||||||
|
|
||||||
|
var gState gameState
|
||||||
|
|
||||||
|
func StartGame(NewLevel int ){
|
||||||
|
gState.Playing = true
|
||||||
|
gState.Score = 0
|
||||||
|
gState.Level = NewLevel
|
||||||
|
gState.NbAction = 0
|
||||||
|
}
|
||||||
|
func GetCurrentLevel() int{
|
||||||
|
return gState.Level
|
||||||
|
}
|
||||||
|
func IncrementLevel() int{
|
||||||
|
//todo increment level value here
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
func StopGame(){
|
||||||
|
gState.Playing = false
|
||||||
|
}
|
||||||
|
func AddAction() {
|
||||||
|
gState.NbAction +=1
|
||||||
|
//log.Print("Actions ",gState.NbAction)
|
||||||
|
}
|
||||||
|
func Continue() bool {
|
||||||
|
return gState.Playing
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
//shared objects ( global )
|
||||||
|
package shared
|
||||||
|
|
||||||
|
import "github.com/faiface/pixel/pixelgl"
|
||||||
|
|
||||||
|
var Win *pixelgl.Window
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
package supervisor
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/faiface/pixel"
|
||||||
|
"github.com/gandrin/ASharedJourney/tiles"
|
||||||
|
)
|
||||||
|
|
||||||
|
//call motion
|
||||||
|
func Move() *PlayerDirections {
|
||||||
|
newDir := new(PlayerDirections)
|
||||||
|
newDir.Player1 = key()
|
||||||
|
newDir.mirror()
|
||||||
|
return newDir
|
||||||
|
}
|
||||||
|
|
||||||
|
//mirror motion of player 1 onto direction of player 2
|
||||||
|
func (dir *PlayerDirections) mirror() {
|
||||||
|
dir.Player2.X = dir.Player1.X
|
||||||
|
if dir.Player1.Y != 0 {
|
||||||
|
dir.Player2.Y = dir.Player1.Y * (-1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//calculate next position based on direction
|
||||||
|
func (dir Direction) Next(currentPos pixel.Vec) pixel.Vec {
|
||||||
|
currentPos.X += float64(dir.X * tiles.TileSize)
|
||||||
|
currentPos.Y += float64(dir.Y * tiles.TileSize)
|
||||||
|
//log.Printf("Calculated next position ", currentPos)
|
||||||
|
return currentPos
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
package supervisor
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
|
||||||
|
"github.com/faiface/pixel/pixelgl"
|
||||||
|
"github.com/gandrin/ASharedJourney/shared"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Event string
|
||||||
|
|
||||||
|
//get the key values that was pressed
|
||||||
|
func catchEvent() *Event {
|
||||||
|
var event = new(Event)
|
||||||
|
//check if key was just pressed
|
||||||
|
if shared.Win.Pressed(pixelgl.KeyR) {
|
||||||
|
*event = "RESTART"
|
||||||
|
} else if shared.Win.Pressed(pixelgl.Key0) {
|
||||||
|
*event = "KEY0"
|
||||||
|
} else if shared.Win.Pressed(pixelgl.Key1) {
|
||||||
|
log.Printf("1")
|
||||||
|
*event = "KEY1"
|
||||||
|
} else if shared.Win.Pressed(pixelgl.Key2) {
|
||||||
|
*event = "KEY2"
|
||||||
|
} else if shared.Win.Pressed(pixelgl.Key3) {
|
||||||
|
*event = "KEY3"
|
||||||
|
} else if shared.Win.Pressed(pixelgl.Key4) {
|
||||||
|
*event = "KEY4"
|
||||||
|
} else if shared.Win.Pressed(pixelgl.Key5) {
|
||||||
|
*event = "KEY5"
|
||||||
|
} else if shared.Win.Pressed(pixelgl.Key6) {
|
||||||
|
*event = "KEY6"
|
||||||
|
} else if shared.Win.Pressed(pixelgl.Key7) {
|
||||||
|
*event = "KEY7"
|
||||||
|
} else if shared.Win.Pressed(pixelgl.Key8) {
|
||||||
|
*event = "KEY8"
|
||||||
|
} else if shared.Win.Pressed(pixelgl.Key9) {
|
||||||
|
*event = "KEY9"
|
||||||
|
}
|
||||||
|
|
||||||
|
return event
|
||||||
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
//retrieve player input and send the directions of motions to the mechanics
|
||||||
|
package supervisor
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/gandrin/ASharedJourney/shared"
|
||||||
|
)
|
||||||
|
|
||||||
|
type PlayerDirections struct {
|
||||||
|
Player1 Direction
|
||||||
|
Player2 Direction
|
||||||
|
}
|
||||||
|
|
||||||
|
type GameEvent struct {
|
||||||
|
PlayerDirections *PlayerDirections
|
||||||
|
Event *Event
|
||||||
|
}
|
||||||
|
|
||||||
|
type GameSupervisor struct {
|
||||||
|
GameEventsChannel chan *GameEvent
|
||||||
|
}
|
||||||
|
|
||||||
|
var Sup *GameSupervisor
|
||||||
|
|
||||||
|
//Start initialises the game and specify the game mode
|
||||||
|
func Start() chan *GameEvent {
|
||||||
|
Sup = new(GameSupervisor)
|
||||||
|
Sup.GameEventsChannel = make(chan *GameEvent, 1)
|
||||||
|
return Sup.GameEventsChannel
|
||||||
|
}
|
||||||
|
|
||||||
|
//Play launches game supervisor (should be launched last)
|
||||||
|
|
||||||
|
func (gameSupervisor *GameSupervisor) Play() {
|
||||||
|
var nextMove *PlayerDirections
|
||||||
|
var nextEvent *Event
|
||||||
|
nextGameEvent := new(GameEvent)
|
||||||
|
for play := true; play; play = shared.Continue() {
|
||||||
|
time.Sleep(shared.KeyPressedDelayMs * time.Millisecond)
|
||||||
|
|
||||||
|
nextEvent = catchEvent()
|
||||||
|
//get the players key move
|
||||||
|
nextMove = Move()
|
||||||
|
if nextMove.Player1.X != 0 || nextMove.Player1.Y != 0 {
|
||||||
|
//new move
|
||||||
|
shared.AddAction()
|
||||||
|
}
|
||||||
|
nextGameEvent.PlayerDirections = nextMove
|
||||||
|
nextGameEvent.Event = nextEvent
|
||||||
|
gameSupervisor.GameEventsChannel <- nextGameEvent
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,68 @@
|
||||||
|
package supervisor
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/faiface/pixel/pixelgl"
|
||||||
|
"github.com/gandrin/ASharedJourney/shared"
|
||||||
|
)
|
||||||
|
|
||||||
|
//transition Direction in x , y coordinates
|
||||||
|
type Direction struct {
|
||||||
|
X int
|
||||||
|
Y int
|
||||||
|
}
|
||||||
|
|
||||||
|
//get the key values that was pressed
|
||||||
|
//old directions
|
||||||
|
var prevKeyPressed pixelgl.Button
|
||||||
|
var keyAlreadyPressed int
|
||||||
|
|
||||||
|
func key() Direction {
|
||||||
|
var pressed pixelgl.Button
|
||||||
|
|
||||||
|
var newDir = Direction{
|
||||||
|
X: 0,
|
||||||
|
Y: 0,
|
||||||
|
}
|
||||||
|
|
||||||
|
//check if key was just pressed
|
||||||
|
if shared.Win.Pressed(pixelgl.KeyLeft) {
|
||||||
|
pressed = pixelgl.KeyLeft
|
||||||
|
newDir.X = -1
|
||||||
|
goto end
|
||||||
|
} else if shared.Win.Pressed(pixelgl.KeyRight) {
|
||||||
|
pressed = pixelgl.KeyRight
|
||||||
|
newDir.X = 1
|
||||||
|
goto end
|
||||||
|
} else if shared.Win.Pressed(pixelgl.KeyDown) {
|
||||||
|
newDir.X = 0
|
||||||
|
newDir.Y = -1
|
||||||
|
pressed = pixelgl.KeyDown
|
||||||
|
goto end
|
||||||
|
} else if shared.Win.Pressed(pixelgl.KeyUp) {
|
||||||
|
newDir.X = 0
|
||||||
|
newDir.Y = 1
|
||||||
|
pressed = pixelgl.KeyUp
|
||||||
|
goto end
|
||||||
|
} else {
|
||||||
|
//no key pressed
|
||||||
|
prevKeyPressed = pixelgl.Key0 //default
|
||||||
|
return newDir
|
||||||
|
}
|
||||||
|
|
||||||
|
end:
|
||||||
|
//check if key repressed
|
||||||
|
if pressed == prevKeyPressed {
|
||||||
|
//time penalty
|
||||||
|
if keyAlreadyPressed == 5 {
|
||||||
|
keyAlreadyPressed = 0
|
||||||
|
return newDir
|
||||||
|
} else {
|
||||||
|
newDir = Direction{0, 0}
|
||||||
|
}
|
||||||
|
keyAlreadyPressed += 1
|
||||||
|
} else {
|
||||||
|
keyAlreadyPressed = 0
|
||||||
|
}
|
||||||
|
prevKeyPressed = pressed
|
||||||
|
return newDir
|
||||||
|
}
|
|
@ -0,0 +1,291 @@
|
||||||
|
package tiles
|
||||||
|
|
||||||
|
//noinspection ALL
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"errors"
|
||||||
|
"image"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/gandrin/ASharedJourney/assets_manager"
|
||||||
|
tiled "github.com/lafriks/go-tiled"
|
||||||
|
|
||||||
|
"github.com/gandrin/ASharedJourney/shared"
|
||||||
|
|
||||||
|
_ "image/png"
|
||||||
|
|
||||||
|
"log"
|
||||||
|
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/faiface/pixel"
|
||||||
|
"github.com/faiface/pixel/pixelgl"
|
||||||
|
"github.com/gandrin/ASharedJourney/menu"
|
||||||
|
"github.com/gandrin/ASharedJourney/music"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Level names
|
||||||
|
const (
|
||||||
|
bonhommeMap = "bonhomme"
|
||||||
|
orgyIsIsland = "orgyIsland"
|
||||||
|
veryEasyLevel = "veryEasy"
|
||||||
|
mazeLevel = "maze"
|
||||||
|
theLongCorridorLevel = "theLongCorridor"
|
||||||
|
amazeingLevel = "amazeing"
|
||||||
|
forestLevel = "forest"
|
||||||
|
myLittlePonyLevel = "myLittlePony"
|
||||||
|
theLittlePigLevel = "theLittlePig"
|
||||||
|
theStruggleLevel = "theStruggle"
|
||||||
|
inTheHoleTileID = 61
|
||||||
|
)
|
||||||
|
|
||||||
|
// CurrentLevel played
|
||||||
|
var CurrentLevel = -1
|
||||||
|
|
||||||
|
// Levels list
|
||||||
|
var Levels = [...]string{
|
||||||
|
veryEasyLevel,
|
||||||
|
amazeingLevel,
|
||||||
|
mazeLevel,
|
||||||
|
forestLevel,
|
||||||
|
theLongCorridorLevel,
|
||||||
|
theLittlePigLevel,
|
||||||
|
bonhommeMap,
|
||||||
|
theStruggleLevel,
|
||||||
|
myLittlePonyLevel,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Uncomment this for testing :)
|
||||||
|
// var Levels = [...]string{biggerLevel}
|
||||||
|
|
||||||
|
const tilesPath = "map.png" // path to your tileset
|
||||||
|
|
||||||
|
// TileSize tile in pixels of squares
|
||||||
|
var TileSize int
|
||||||
|
var mapWidth int
|
||||||
|
var mapHeight int
|
||||||
|
|
||||||
|
// World struct with global tiles and obj positions
|
||||||
|
type World struct {
|
||||||
|
BackgroundTiles []SpriteWithPosition
|
||||||
|
Players []SpriteWithPosition
|
||||||
|
Movables []SpriteWithPosition
|
||||||
|
Obstacles []SpriteWithPosition
|
||||||
|
Water []SpriteWithPosition
|
||||||
|
Holes []SpriteWithPosition
|
||||||
|
WinStars []SpriteWithPosition
|
||||||
|
}
|
||||||
|
|
||||||
|
//SpriteWithPosition holds the sprite and its position into the window
|
||||||
|
type SpriteWithPosition struct {
|
||||||
|
Sprite *pixel.Sprite
|
||||||
|
Position pixel.Vec
|
||||||
|
InTheWater bool
|
||||||
|
InTheHole bool
|
||||||
|
HasWon bool
|
||||||
|
WinningPosition pixel.Vec
|
||||||
|
}
|
||||||
|
|
||||||
|
// loadMap load the map
|
||||||
|
func loadMap() (pixel.Picture, error) {
|
||||||
|
|
||||||
|
//noinspection GoUnresolvedReference
|
||||||
|
byteImage, err := assetsManager.Asset("assets/" + tilesPath)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
img, _, err := image.Decode(bytes.NewReader(byteImage))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return pixel.PictureDataFromImage(img), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func getTilesFrames(spritesheet pixel.Picture) []pixel.Rect {
|
||||||
|
var tilesFrames []pixel.Rect
|
||||||
|
for y := spritesheet.Bounds().Max.Y - float64(TileSize); y > spritesheet.Bounds().Min.Y-float64(TileSize); y -= float64(TileSize) {
|
||||||
|
for x := spritesheet.Bounds().Min.X; x < spritesheet.Bounds().Max.X; x += float64(TileSize) {
|
||||||
|
tilesFrames = append(tilesFrames, pixel.R(x, y, x+float64(TileSize), y+float64(TileSize)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return tilesFrames
|
||||||
|
}
|
||||||
|
|
||||||
|
func getOrigin(win *pixelgl.Window) pixel.Vec {
|
||||||
|
centerPosition := win.Bounds().Center()
|
||||||
|
originXPosition := centerPosition.X - float64(mapWidth)/2*float64(TileSize)
|
||||||
|
originYPosition := centerPosition.Y + float64(mapHeight)/2*float64(TileSize) - float64(TileSize)
|
||||||
|
|
||||||
|
return pixel.V(originXPosition, originYPosition)
|
||||||
|
}
|
||||||
|
|
||||||
|
func getSpritePosition(spriteIndex int, origin pixel.Vec) pixel.Vec {
|
||||||
|
spriteXPosition := origin.X + float64((spriteIndex%mapWidth)*TileSize) + float64(TileSize)/2
|
||||||
|
spriteYPosition := origin.Y + float64(TileSize)/2 - float64((spriteIndex/mapWidth)*TileSize)
|
||||||
|
|
||||||
|
return pixel.V(spriteXPosition, spriteYPosition)
|
||||||
|
}
|
||||||
|
|
||||||
|
// extractAndPlaceSprites filters out empty tiles and positions them properly on the screen
|
||||||
|
func extractAndPlaceSprites(
|
||||||
|
layerTiles []*tiled.LayerTile,
|
||||||
|
spritesheet pixel.Picture,
|
||||||
|
tilesFrames []pixel.Rect,
|
||||||
|
originPosition pixel.Vec,
|
||||||
|
) (positionedSprites []SpriteWithPosition) {
|
||||||
|
for index, layerTile := range layerTiles {
|
||||||
|
if !layerTile.IsNil() {
|
||||||
|
sprite := pixel.NewSprite(spritesheet, tilesFrames[layerTile.ID])
|
||||||
|
spritePosition := getSpritePosition(index, originPosition)
|
||||||
|
positionedSprites = append(positionedSprites, SpriteWithPosition{
|
||||||
|
Sprite: sprite,
|
||||||
|
Position: spritePosition,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return positionedSprites
|
||||||
|
}
|
||||||
|
|
||||||
|
func findLayerIndex(layerName string, layers []*tiled.Layer) (layerIndex int, err error) {
|
||||||
|
for index, layer := range layers {
|
||||||
|
if layer.Name == layerName {
|
||||||
|
return index, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1, errors.New("Expected to find layer with name " + layerName)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetNextLevel called before NextLevel if you want to select it
|
||||||
|
func SetNexLevel(nextMapLevel int) {
|
||||||
|
if nextMapLevel == 0 {
|
||||||
|
CurrentLevel = len(Levels)
|
||||||
|
} else {
|
||||||
|
CurrentLevel = nextMapLevel - 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NextLevel goes to next level
|
||||||
|
func NextLevel() World {
|
||||||
|
CurrentLevel = (CurrentLevel + 1) % len(Levels)
|
||||||
|
var newWorlg = GenerateMap(Levels[CurrentLevel])
|
||||||
|
if CurrentLevel != 0 {
|
||||||
|
//if !(len(Levels) == CurrentLevel){
|
||||||
|
if !(len(Levels)-1 == CurrentLevel) {
|
||||||
|
//last level was finished
|
||||||
|
menu.Menu(menu.WinLevelMenuImage, "Level solved, continue ...", pixel.V(150, 200), true, music.SOUND_EFFECT_WIN_GAME)
|
||||||
|
|
||||||
|
} else {
|
||||||
|
//game was finished
|
||||||
|
music.Music.PlayEffect(music.SOUND_EFFECT_WIN_FINAL_GAME)
|
||||||
|
menu.Menu(menu.FinishedGameImage, "You WIN", pixel.V(300, 140), true, music.SOUND_EFFECT_WIN_GAME)
|
||||||
|
//reload main menu
|
||||||
|
menu.Menu(menu.MainMenuImage, "Press ENTER to PLAY ...", pixel.V(180, 150), true, music.SOUND_EFFECT_START_GAME)
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newWorlg
|
||||||
|
}
|
||||||
|
|
||||||
|
// RestartLevel reinitializes the current level
|
||||||
|
func RestartLevel() World {
|
||||||
|
return GenerateMap(Levels[CurrentLevel])
|
||||||
|
}
|
||||||
|
|
||||||
|
// GenerateMap generates the map from a .tmx file
|
||||||
|
func GenerateMap(levelFileName string) World {
|
||||||
|
//added support for relative file addressing
|
||||||
|
byteTiledMap, _ := assetsManager.Asset("assets/" + levelFileName + ".tmx")
|
||||||
|
gameMap, err := tiled.LoadFromReader("", bytes.NewReader(byteTiledMap))
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
fmt.Println("Error parsing map")
|
||||||
|
os.Exit(2)
|
||||||
|
}
|
||||||
|
mapWidth = gameMap.Width
|
||||||
|
mapHeight = gameMap.Height
|
||||||
|
TileSize = gameMap.TileHeight
|
||||||
|
|
||||||
|
spritesheet, err := loadMap()
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
tilesFrames := getTilesFrames(spritesheet)
|
||||||
|
|
||||||
|
originPosition := getOrigin(shared.Win)
|
||||||
|
|
||||||
|
var background []SpriteWithPosition
|
||||||
|
var players []SpriteWithPosition
|
||||||
|
var obstacles []SpriteWithPosition
|
||||||
|
var movables []SpriteWithPosition
|
||||||
|
var water []SpriteWithPosition
|
||||||
|
var winStars []SpriteWithPosition
|
||||||
|
var holes []SpriteWithPosition
|
||||||
|
|
||||||
|
backgoundIndex, err := findLayerIndex("background", gameMap.Layers)
|
||||||
|
if err == nil {
|
||||||
|
background = extractAndPlaceSprites(gameMap.Layers[backgoundIndex].Tiles, spritesheet, tilesFrames, originPosition)
|
||||||
|
}
|
||||||
|
playersLayerIndex, err := findLayerIndex("animals", gameMap.Layers)
|
||||||
|
if err == nil {
|
||||||
|
players = extractAndPlaceSprites(gameMap.Layers[playersLayerIndex].Tiles, spritesheet, tilesFrames, originPosition)
|
||||||
|
}
|
||||||
|
obstaclesLayerIndex, err := findLayerIndex("obstacles", gameMap.Layers)
|
||||||
|
if err == nil {
|
||||||
|
obstacles = extractAndPlaceSprites(gameMap.Layers[obstaclesLayerIndex].Tiles, spritesheet, tilesFrames, originPosition)
|
||||||
|
}
|
||||||
|
movablesLayerIndex, err := findLayerIndex("movables", gameMap.Layers)
|
||||||
|
if err == nil {
|
||||||
|
movables = extractAndPlaceSprites(gameMap.Layers[movablesLayerIndex].Tiles, spritesheet, tilesFrames, originPosition)
|
||||||
|
}
|
||||||
|
waterLayerIndex, err := findLayerIndex("water", gameMap.Layers)
|
||||||
|
if err == nil {
|
||||||
|
water = extractAndPlaceSprites(gameMap.Layers[waterLayerIndex].Tiles, spritesheet, tilesFrames, originPosition)
|
||||||
|
}
|
||||||
|
winStarsLayerIndex, err := findLayerIndex("win", gameMap.Layers)
|
||||||
|
if err == nil {
|
||||||
|
winStars = extractAndPlaceSprites(gameMap.Layers[winStarsLayerIndex].Tiles, spritesheet, tilesFrames, originPosition)
|
||||||
|
}
|
||||||
|
holesLayerIndex, err := findLayerIndex("holes", gameMap.Layers)
|
||||||
|
if err == nil {
|
||||||
|
holes = extractAndPlaceSprites(gameMap.Layers[holesLayerIndex].Tiles, spritesheet, tilesFrames, originPosition)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Playable checks
|
||||||
|
if len(players) == 0 {
|
||||||
|
panic(errors.New("no animal tile was placed"))
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(winStars) == 0 {
|
||||||
|
panic(errors.New("no win star tile was placed"))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Zz special tile
|
||||||
|
sprite := pixel.NewSprite(spritesheet, tilesFrames[inTheHoleTileID])
|
||||||
|
spritePosition := pixel.V(-100, -100)
|
||||||
|
holes = append(holes, SpriteWithPosition{
|
||||||
|
Sprite: sprite,
|
||||||
|
Position: spritePosition,
|
||||||
|
})
|
||||||
|
|
||||||
|
world := World{
|
||||||
|
BackgroundTiles: background,
|
||||||
|
Players: players,
|
||||||
|
Movables: movables,
|
||||||
|
Obstacles: obstacles,
|
||||||
|
Water: water,
|
||||||
|
Holes: holes,
|
||||||
|
WinStars: winStars,
|
||||||
|
}
|
||||||
|
return world
|
||||||
|
}
|
||||||
|
|
||||||
|
//DrawMap draws into window the given sprites
|
||||||
|
func DrawMap(positionedSprites []SpriteWithPosition) {
|
||||||
|
for _, positionedSprite := range positionedSprites {
|
||||||
|
positionedSprite.Sprite.Draw(shared.Win, pixel.IM.Moved(positionedSprite.Position))
|
||||||
|
}
|
||||||
|
}
|