Procházet zdrojové kódy

Tileset updated again. New door object that opens based on a player's mood and the color of the door. Other minor changes.

master
Bryan Miller před 4 roky
rodič
revize
3ec7cc6809
13 změnil soubory, kde provedl 353 přidání a 99 odebrání
  1. +2
    -2
      .import/Tileset.png-94e4bb279d0d6de91fd5dbad11924f37.md5
  2. binární
      .import/Tileset.png-94e4bb279d0d6de91fd5dbad11924f37.stex
  3. binární
      Data/Graphics/Tileset.png
  4. +77
    -77
      Data/Misc/Tileset.tres
  5. +25
    -0
      Data/Objects/Doorway.tscn
  6. +2
    -2
      Data/Objects/Glowdot.tscn
  7. +74
    -0
      Data/Objects/HalfDoor.tscn
  8. +11
    -9
      Data/Objects/Player.tscn
  9. +34
    -2
      Data/Scenes/World.tscn
  10. +18
    -4
      Data/Scripts/Controller.gd
  11. +54
    -0
      Data/Scripts/Doorway.gd
  12. +50
    -0
      Data/Scripts/HalfDoor.gd
  13. +6
    -3
      Data/Scripts/Mood.gd

+ 2
- 2
.import/Tileset.png-94e4bb279d0d6de91fd5dbad11924f37.md5 Zobrazit soubor

@@ -1,3 +1,3 @@
source_md5="e41723119ad098ee6d774b2f16a39de9"
dest_md5="756d0b8eb8901dc659e286aee8d54ccf"
source_md5="86074a28b273b2351f5c7e74e0073a2f"
dest_md5="11c6e7c9bde0cc292ec036e432b178d1"


binární
.import/Tileset.png-94e4bb279d0d6de91fd5dbad11924f37.stex Zobrazit soubor


binární
Data/Graphics/Tileset.png Zobrazit soubor

Před Za
Šířka: 1024  |  Výška: 1024  |  Velikost: 9.0KB Šířka: 1024  |  Výška: 1024  |  Velikost: 17KB

+ 77
- 77
Data/Misc/Tileset.tres Zobrazit soubor

@@ -2,118 +2,118 @@

[ext_resource path="res://Data/Graphics/Tileset.png" type="Texture" id=1]

[sub_resource type="ConvexPolygonShape2D" id=3]
[sub_resource type="ConvexPolygonShape2D" id=1]
points = PoolVector2Array( 32.8313, 6.08595, 64, 6.27976, 64, 64, 5.89214, 64, 5.89214, 33.4127 )

[sub_resource type="ConvexPolygonShape2D" id=4]
[sub_resource type="ConvexPolygonShape2D" id=2]
points = PoolVector2Array( 30.9994, 6.27976, 58.1323, 33.6065, 57.9385, 64, 0, 64, 0.184143, 6.27976 )

[sub_resource type="ConvexPolygonShape2D" id=5]
[sub_resource type="ConvexPolygonShape2D" id=3]
points = PoolVector2Array( 0, 0, 57.9385, 0, 57.9385, 30.8056, 30.6118, 58.1323, 0, 58.1323 )

[sub_resource type="ConvexPolygonShape2D" id=6]
[sub_resource type="ConvexPolygonShape2D" id=4]
points = PoolVector2Array( 6.08595, 30.8056, 6.27975, 0, 64, 0, 64, 58.1323, 33.2189, 58.1323 )

[sub_resource type="ConvexPolygonShape2D" id=7]
[sub_resource type="ConvexPolygonShape2D" id=5]
points = PoolVector2Array( 64, 64, 0, 64, 0, 6.08595, 64, 6.27976 )

[sub_resource type="ConvexPolygonShape2D" id=8]
[sub_resource type="ConvexPolygonShape2D" id=6]
points = PoolVector2Array( 57.9385, 64, 0, 64, 0, 0, 58.1323, 0 )

[sub_resource type="ConvexPolygonShape2D" id=9]
[sub_resource type="ConvexPolygonShape2D" id=7]
points = PoolVector2Array( 6.08595, 0, 64, 0, 64, 64, 5.89214, 64 )

[sub_resource type="ConvexPolygonShape2D" id=10]
[sub_resource type="ConvexPolygonShape2D" id=8]
points = PoolVector2Array( 64, 57.9385, 0, 58.1323, 0, 0, 64, 0 )

[sub_resource type="ConvexPolygonShape2D" id=11]
[sub_resource type="ConvexPolygonShape2D" id=9]
points = PoolVector2Array( 64, 64, 0, 64, 0, 0, 64, 0 )

[sub_resource type="ConvexPolygonShape2D" id=16]
[sub_resource type="ConvexPolygonShape2D" id=10]
points = PoolVector2Array( 64, 64, 0, 64, 0, 0, 64, 0 )

[sub_resource type="ConvexPolygonShape2D" id=17]
[sub_resource type="ConvexPolygonShape2D" id=11]
points = PoolVector2Array( 64, 64, 0, 64, 0, 0, 64, 0 )

[sub_resource type="ConvexPolygonShape2D" id=18]
[sub_resource type="ConvexPolygonShape2D" id=12]
points = PoolVector2Array( 64, 64, 0, 64, 0, 0, 64, 0 )

[sub_resource type="ConvexPolygonShape2D" id=19]
[sub_resource type="ConvexPolygonShape2D" id=13]
points = PoolVector2Array( 64, 64, 0, 64, 0, 0, 64, 0 )

[sub_resource type="ConvexPolygonShape2D" id=20]
[sub_resource type="ConvexPolygonShape2D" id=14]
points = PoolVector2Array( 64, 64, 0, 64, 0, 0, 64, 0 )

[sub_resource type="ConvexPolygonShape2D" id=21]
[sub_resource type="ConvexPolygonShape2D" id=15]
points = PoolVector2Array( 64, 64, 0, 64, 0, 0, 64, 0 )

[sub_resource type="ConvexPolygonShape2D" id=22]
[sub_resource type="ConvexPolygonShape2D" id=16]
points = PoolVector2Array( 64, 64, 0, 64, 0, 0, 64, 0 )

[sub_resource type="ConvexPolygonShape2D" id=23]
[sub_resource type="ConvexPolygonShape2D" id=17]
points = PoolVector2Array( 64, 64, 0, 64, 0, 0, 64, 0 )

[sub_resource type="ConvexPolygonShape2D" id=24]
[sub_resource type="ConvexPolygonShape2D" id=18]
points = PoolVector2Array( 27.3148, 6.27084, 37.3617, 6.3755, 58.2928, 27.8648, 58.0137, 36.7954, 37.0826, 58.2847, 27.5938, 58.2847, 6.10455, 36.5163, 6.38361, 26.7485 )

[sub_resource type="ConvexPolygonShape2D" id=25]
[sub_resource type="ConvexPolygonShape2D" id=19]
points = PoolVector2Array( 64, 0, 64, 64, 5.0731, 63.9027, 0, 59.2514, 0, 0 )

[sub_resource type="ConvexPolygonShape2D" id=26]
[sub_resource type="ConvexPolygonShape2D" id=20]
points = PoolVector2Array( 64, 0, 64, 64, 0, 64, 0, 5.32932, 5.0731, 0 )

[sub_resource type="ConvexPolygonShape2D" id=27]
[sub_resource type="ConvexPolygonShape2D" id=21]
points = PoolVector2Array( 64, 64, 0, 64, 0, 0, 58.4137, 0, 64, 5.1355 )

[sub_resource type="ConvexPolygonShape2D" id=28]
[sub_resource type="ConvexPolygonShape2D" id=22]
points = PoolVector2Array( 64, 58.0885, 58.2823, 64, 6.14835, 64, 6.14835, 27.4671, 27.2733, 5.95453, 64, 5.95453 )

[sub_resource type="ConvexPolygonShape2D" id=29]
[sub_resource type="ConvexPolygonShape2D" id=23]
points = PoolVector2Array( 64, 58.2823, 0, 58.2823, 0, 6.14835, 64, 6.34213 )

[sub_resource type="ConvexPolygonShape2D" id=30]
[sub_resource type="ConvexPolygonShape2D" id=24]
points = PoolVector2Array( 0, 6.14835, 36.876, 6.14835, 58.1947, 27.2733, 58.0009, 64, 5.86694, 64, 0, 58.2823 )

[sub_resource type="ConvexPolygonShape2D" id=31]
[sub_resource type="ConvexPolygonShape2D" id=25]
points = PoolVector2Array( 58.0009, 64, 6.25452, 64, 6.25452, 0, 58.0009, 0 )

[sub_resource type="ConvexPolygonShape2D" id=32]
[sub_resource type="ConvexPolygonShape2D" id=26]
points = PoolVector2Array( 58.0009, 0, 58.0009, 36.6822, 36.4884, 58.1947, 0, 58.0009, 0, 6.06073, 6.25452, 0.246521 )

[sub_resource type="ConvexPolygonShape2D" id=33]
[sub_resource type="ConvexPolygonShape2D" id=27]
points = PoolVector2Array( 64, 58.0009, 0, 58.1947, 0, 6.25452, 64, 6.25452 )

[sub_resource type="ConvexPolygonShape2D" id=34]
[sub_resource type="ConvexPolygonShape2D" id=28]
points = PoolVector2Array( 57.8947, 0, 64, 6.61792, 64, 57.9767, 27.2733, 57.9767, 5.95453, 36.4641, 5.95453, 0 )

[sub_resource type="ConvexPolygonShape2D" id=35]
[sub_resource type="ConvexPolygonShape2D" id=29]
points = PoolVector2Array( 58.0885, 64, 5.95453, 64, 5.95453, 0, 57.8947, 0 )

[sub_resource type="ConvexPolygonShape2D" id=36]
[sub_resource type="ConvexPolygonShape2D" id=30]
points = PoolVector2Array( 64, 58.6942, 58.6075, 64, 0, 64, 0, 0, 64, 0 )

[sub_resource type="ConvexPolygonShape2D" id=37]
[sub_resource type="ConvexPolygonShape2D" id=31]
points = PoolVector2Array( 6.19214, 64, 5.99834, 26.8419, 27.5109, 5.52313, 36.8136, 5.71692, 57.9385, 27.2295, 57.9385, 64 )

[sub_resource type="ConvexPolygonShape2D" id=38]
[sub_resource type="ConvexPolygonShape2D" id=32]
points = PoolVector2Array( 58.1323, 0, 58.1323, 64, 5.80453, 64, 0, 58.7761, 0, 6.06073, 5.99835, 0 )

[sub_resource type="ConvexPolygonShape2D" id=39]
[sub_resource type="ConvexPolygonShape2D" id=33]
points = PoolVector2Array( 64, 58.7761, 58.9514, 64, 6.04215, 64, 0, 57.6133, 0, 5.86691, 64, 6.06073 )

[sub_resource type="ConvexPolygonShape2D" id=40]
[sub_resource type="ConvexPolygonShape2D" id=34]
points = PoolVector2Array( 64, 57.6133, 26.6295, 57.6133, 5.69833, 36.876, 5.89214, 27.5733, 27.2109, 6.06073, 64, 6.06073 )

[sub_resource type="ConvexPolygonShape2D" id=41]
[sub_resource type="ConvexPolygonShape2D" id=35]
points = PoolVector2Array( 58.3699, 0, 64, 5.2417, 64, 57.9571, 59.1452, 63.7713, 5.84834, 64, 6.42976, 0 )

[sub_resource type="ConvexPolygonShape2D" id=42]
[sub_resource type="ConvexPolygonShape2D" id=36]
points = PoolVector2Array( 6.23596, 0, 57.7885, 0, 57.9823, 36.4008, 36.4698, 58.1071, 27.1671, 58.1071, 6.04214, 36.0132 )

[sub_resource type="ConvexPolygonShape2D" id=43]
[sub_resource type="ConvexPolygonShape2D" id=37]
points = PoolVector2Array( 57.7447, 0, 64, 6.01691, 64, 57.9571, 0, 58.1509, 0, 5.43549, 5.41693, 0 )

[sub_resource type="ConvexPolygonShape2D" id=44]
[sub_resource type="ConvexPolygonShape2D" id=38]
points = PoolVector2Array( 0.527954, 6.21072, 36.576, 6.21072, 58.0885, 27.7233, 58.0885, 36.4445, 36.3822, 58.1509, 0, 57.7633 )

[resource]
@@ -150,236 +150,236 @@ points = PoolVector2Array( 0.527954, 6.21072, 36.576, 6.21072, 58.0885, 27.7233,
1/navigation_offset = Vector2( 0, 0 )
1/shape_offset = Vector2( 0, 0 )
1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
1/shape = SubResource( 3 )
1/shape = SubResource( 1 )
1/shape_one_way = false
1/shape_one_way_margin = 1.0
1/shapes = [ {
"autotile_coord": Vector2( 0, 0 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 3 ),
"shape": SubResource( 1 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 2, 0 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 4 ),
"shape": SubResource( 2 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 2, 2 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 5 ),
"shape": SubResource( 3 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 0, 2 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 6 ),
"shape": SubResource( 4 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 1, 0 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 7 ),
"shape": SubResource( 5 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 2, 1 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 8 ),
"shape": SubResource( 6 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 0, 1 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 9 ),
"shape": SubResource( 7 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 1, 2 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 10 ),
"shape": SubResource( 8 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 1, 1 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 11 ),
"shape": SubResource( 9 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 3, 0 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 16 ),
"shape": SubResource( 10 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 4, 0 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 17 ),
"shape": SubResource( 11 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 5, 0 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 18 ),
"shape": SubResource( 12 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 5, 1 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 19 ),
"shape": SubResource( 13 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 5, 2 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 20 ),
"shape": SubResource( 14 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 4, 2 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 21 ),
"shape": SubResource( 15 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 3, 2 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 22 ),
"shape": SubResource( 16 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 3, 1 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 23 ),
"shape": SubResource( 17 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 4, 1 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 24 ),
"shape": SubResource( 18 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 1, 3 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 25 ),
"shape": SubResource( 19 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 1, 4 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 26 ),
"shape": SubResource( 20 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 0, 4 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 27 ),
"shape": SubResource( 21 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 3, 3 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 28 ),
"shape": SubResource( 22 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 4, 3 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 29 ),
"shape": SubResource( 23 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 5, 3 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 30 ),
"shape": SubResource( 24 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 5, 4 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 31 ),
"shape": SubResource( 25 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 5, 5 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 32 ),
"shape": SubResource( 26 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 4, 5 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 33 ),
"shape": SubResource( 27 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 3, 5 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 34 ),
"shape": SubResource( 28 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 3, 4 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 35 ),
"shape": SubResource( 29 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 0, 3 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 36 ),
"shape": SubResource( 30 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 2, 4 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 37 ),
"shape": SubResource( 31 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 2, 5 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 38 ),
"shape": SubResource( 32 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 1, 5 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 39 ),
"shape": SubResource( 33 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 0, 5 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 40 ),
"shape": SubResource( 34 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 1, 6 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 41 ),
"shape": SubResource( 35 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 1, 7 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 42 ),
"shape": SubResource( 36 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 2, 6 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 43 ),
"shape": SubResource( 37 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
}, {
"autotile_coord": Vector2( 3, 6 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 44 ),
"shape": SubResource( 38 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
} ]
1/z_index = 0

+ 25
- 0
Data/Objects/Doorway.tscn Zobrazit soubor

@@ -0,0 +1,25 @@
[gd_scene load_steps=4 format=2]

[ext_resource path="res://Data/Scripts/Doorway.gd" type="Script" id=2]
[ext_resource path="res://Data/Objects/HalfDoor.tscn" type="PackedScene" id=3]

[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 40, 40 )

[node name="Doorway" type="Node2D"]
position = Vector2( 211.518, -137.077 )
script = ExtResource( 2 )

[node name="LeftDoor" parent="." instance=ExtResource( 3 )]
position = Vector2( -18.0513, -0.440125 )

[node name="RightDoor" parent="." instance=ExtResource( 3 )]
position = Vector2( 18.0682, -0.440125 )
scale = Vector2( -1, 1 )

[node name="Area2D" type="Area2D" parent="."]

[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
shape = SubResource( 1 )
[connection signal="body_entered" from="Area2D" to="." method="_on_Area2D_body_entered"]
[connection signal="body_exited" from="Area2D" to="." method="_on_Area2D_body_exited"]

+ 2
- 2
Data/Objects/Glowdot.tscn Zobrazit soubor

@@ -4,13 +4,13 @@
[ext_resource path="res://Data/Scripts/Glowdot.gd" type="Script" id=2]
[ext_resource path="res://Data/Shaders/Glowdot.shader" type="Shader" id=3]

[sub_resource type="ShaderMaterial" id=2]
[sub_resource type="ShaderMaterial" id=1]
shader = ExtResource( 3 )
shader_param/primary_color = Color( 1, 0.8, 0, 1 )
shader_param/fade_offset = 0.15

[node name="Glowdot" type="Sprite"]
material = SubResource( 2 )
material = SubResource( 1 )
texture = ExtResource( 1 )
script = ExtResource( 2 )


+ 74
- 0
Data/Objects/HalfDoor.tscn Zobrazit soubor

@@ -0,0 +1,74 @@
[gd_scene load_steps=7 format=2]

[ext_resource path="res://Data/Scripts/HalfDoor.gd" type="Script" id=1]
[ext_resource path="res://Data/Shaders/Glowdot.shader" type="Shader" id=3]
[ext_resource path="res://Data/Objects/Glowdot.tscn" type="PackedScene" id=5]
[ext_resource path="res://Data/Graphics/Tileset.png" type="Texture" id=6]

[sub_resource type="ShaderMaterial" id=1]
shader = ExtResource( 3 )
shader_param/primary_color = Color( 1, 0.8, 0, 1 )
shader_param/fade_offset = 0.15

[sub_resource type="RectangleShape2D" id=2]
extents = Vector2( 24, 7 )

[node name="HalfDoor" type="StaticBody2D"]
position = Vector2( 0.440125, -0.440125 )
collision_layer = 2
script = ExtResource( 1 )

[node name="Backplane" type="Node2D" parent="."]
position = Vector2( -32, 0 )

[node name="Backplane_Top" type="Sprite" parent="Backplane"]
position = Vector2( 0, -8 )
scale = Vector2( 1, -1 )
texture = ExtResource( 6 )
region_enabled = true
region_rect = Rect2( 0, 528, 32, 16 )

[node name="Backplane_Bottom" type="Sprite" parent="Backplane"]
position = Vector2( 0, 8 )
texture = ExtResource( 6 )
region_enabled = true
region_rect = Rect2( 0, 528, 32, 16 )

[node name="Doorway" type="KinematicBody2D" parent="."]
position = Vector2( -6, 0 )
collision_layer = 2

[node name="Sprite" type="Sprite" parent="Doorway"]
texture = ExtResource( 6 )
region_enabled = true
region_rect = Rect2( 32, 512, 48, 16 )

[node name="Glow" parent="Doorway" instance=ExtResource( 5 )]
material = SubResource( 1 )
position = Vector2( 14.989, -0.323532 )
scale = Vector2( 0.25, 0.25 )
pulse_in_time = 0.2

[node name="CollisionShape2D" type="CollisionShape2D" parent="Doorway"]
shape = SubResource( 2 )

[node name="Frontplane" type="Node2D" parent="."]
position = Vector2( -32, 0 )

[node name="Front_Top" type="Sprite" parent="Frontplane"]
position = Vector2( 0, -8 )
scale = Vector2( 1, -1 )
texture = ExtResource( 6 )
region_enabled = true
region_rect = Rect2( 0, 512, 32, 16 )

[node name="Front_Bottom" type="Sprite" parent="Frontplane"]
position = Vector2( 0, 8 )
texture = ExtResource( 6 )
region_enabled = true
region_rect = Rect2( 0, 512, 32, 16 )

[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."]
polygon = PoolVector2Array( -47.9044, -15.9911, -30.1666, -15.9101, -18.8273, -9.9975, -19.0703, -8.86357, -21.0952, -7.08169, -27.0888, -5.13782, -29.9236, -1.97902, -29.8426, 1.74673, -27.0888, 5.06752, -21.0952, 7.09238, -18.9893, 9.03626, -18.9893, 10.0892, -30.0855, 15.8398, -47.9854, 15.9208 )

[node name="Tween" type="Tween" parent="."]

+ 11
- 9
Data/Objects/Player.tscn Zobrazit soubor

@@ -9,13 +9,13 @@
[sub_resource type="CircleShape2D" id=1]
radius = 16.0

[sub_resource type="Curve" id=4]
[sub_resource type="Curve" id=2]
_data = [ Vector2( 0, 1 ), 0.0, 0.219234, 0, 0, Vector2( 1, 0.434091 ), -0.228985, 0.0, 0, 0 ]

[sub_resource type="CurveTexture" id=5]
curve = SubResource( 4 )
[sub_resource type="CurveTexture" id=3]
curve = SubResource( 2 )

[sub_resource type="ParticlesMaterial" id=6]
[sub_resource type="ParticlesMaterial" id=4]
lifetime_randomness = 0.52
emission_shape = 1
emission_sphere_radius = 16.0
@@ -30,10 +30,10 @@ damping_random = 0.41
angle = 45.0
angle_random = 0.85
scale = 2.0
scale_curve = SubResource( 5 )
scale_curve = SubResource( 3 )
color = Color( 0.737255, 0.737255, 0.737255, 1 )

[sub_resource type="ShaderMaterial" id=8]
[sub_resource type="ShaderMaterial" id=5]
shader = ExtResource( 5 )
shader_param/cell_color = Color( 0, 0, 0, 1 )
shader_param/cell_energy = 3.0
@@ -44,7 +44,9 @@ shader_param/wave_amp = 0.1
shader_param/wave_freq = 0.075
shader_param/wave_scale = 0.075

[node name="Player" type="RigidBody2D"]
[node name="Player" type="RigidBody2D" groups=[
"Player",
]]
collision_mask = 7171
continuous_cd = 2
contacts_reported = 1
@@ -67,10 +69,10 @@ smoothing_enabled = true
[node name="Particles" type="Particles2D" parent="."]
amount = 50
local_coords = false
process_material = SubResource( 6 )
process_material = SubResource( 4 )

[node name="Sprite" type="Sprite" parent="."]
material = SubResource( 8 )
material = SubResource( 5 )
scale = Vector2( 0.5, 0.5 )
texture = ExtResource( 2 )
[connection signal="body_entered" from="." to="." method="_on_Player_body_entered"]

+ 34
- 2
Data/Scenes/World.tscn Zobrazit soubor

@@ -1,30 +1,62 @@
[gd_scene load_steps=6 format=2]
[gd_scene load_steps=10 format=2]

[ext_resource path="res://Data/Objects/PulseArrow.tscn" type="PackedScene" id=1]
[ext_resource path="res://Data/Objects/Player.tscn" type="PackedScene" id=2]
[ext_resource path="res://Data/Objects/Liquid.tscn" type="PackedScene" id=3]
[ext_resource path="res://Data/Shaders/Liquid.shader" type="Shader" id=4]
[ext_resource path="res://Data/Objects/BladeSaw.tscn" type="PackedScene" id=5]
[ext_resource path="res://Data/Objects/Doorway.tscn" type="PackedScene" id=6]
[ext_resource path="res://Data/Misc/Tileset.tres" type="TileSet" id=7]

[sub_resource type="ShaderMaterial" id=1]
resource_local_to_scene = true
shader = ExtResource( 4 )
shader_param/sprite_scale = Vector2( 2.96, 1 )
shader_param/distortion = 16.265
shader_param/liquid_color_main = Color( 0.180908, 0.250748, 0.8125, 1 )
shader_param/liquid_color_surface = Color( 0.576471, 0.760784, 0.996078, 1 )
shader_param/liquid_surface_thickness = 0.12
shader_param/wave_amp = 0.25
shader_param/wave_freq = 1.0
shader_param/wave_scale = 1.0

[sub_resource type="ShaderMaterial" id=2]
resource_local_to_scene = true
shader = ExtResource( 4 )
shader_param/sprite_scale = Vector2( 2.96, 1 )
shader_param/distortion = 16.265
shader_param/liquid_color_main = Color( 0.180908, 0.250748, 0.8125, 1 )
shader_param/liquid_color_surface = Color( 0.576471, 0.760784, 0.996078, 1 )
shader_param/liquid_surface_thickness = 0.12
shader_param/wave_amp = 0.25
shader_param/wave_freq = 1.0
shader_param/wave_scale = 1.0

[node name="World" type="Node2D"]

[node name="Liquid2" parent="." instance=ExtResource( 3 )]
material = SubResource( 1 )
position = Vector2( -127.435, 105.962 )
scale = Vector2( 2.35979, 1.50659 )
liquid_body_color = Color( 0.517647, 0.145098, 0.145098, 1 )
liquid_surface_color = Color( 0.984314, 0.478431, 0.490196, 1 )

[node name="Liquid" parent="." instance=ExtResource( 3 )]
material = SubResource( 2 )
position = Vector2( 539.108, -23.1772 )
scale = Vector2( 1.66713, 1.11691 )
liquid_body_color = Color( 0.180908, 0.250748, 0.8125, 1 )
liquid_surface_color = Color( 0.576471, 0.760784, 0.996078, 1 )

[node name="Doorway" parent="." instance=ExtResource( 6 )]
position = Vector2( 94.9786, 581.025 )
color = Color( 0.0470588, 0.0156863, 0.980392, 1 )

[node name="TileMap" type="TileMap" parent="."]
tile_set = ExtResource( 7 )
collision_layer = 2
format = 1
tile_data = PoolIntArray( -327678, 1, 196611, -327677, 1, 327684, -327676, 1, 327684, -327675, 1, 327684, -327674, 1, 327684, -327673, 1, 196612, -327672, 1, 196612, -327671, 1, 327684, -327670, 1, 196613, -262142, 1, 458753, -262134, 1, 262149, -131081, 1, 0, -131080, 1, 1, -131079, 1, 65537, -131078, 1, 327684, -131077, 1, 327684, -131076, 1, 327684, -131075, 1, 327684, -131074, 1, 196612, -131073, 1, 393219, -196598, 1, 262149, -65545, 1, 65536, -65544, 1, 65537, -65543, 1, 65539, -131063, 1, 0, -131062, 1, 65537, -9, 1, 65541, -8, 1, 65537, -7, 1, 65539, -65529, 1, 262146, -65527, 1, 65536, -65526, 1, 65538, 65527, 1, 131072, 65528, 1, 65537, 65529, 1, 131074, 65532, 1, 262146, 65535, 1, 262146, 7, 1, 327683, 8, 1, 327684, 9, 1, 196609, 10, 1, 65539, 131064, 1, 262147, 131068, 1, 262149, 131071, 1, 262147, 65545, 1, 65536, 65546, 1, 65538, 196600, 1, 262149, 196602, 1, 0, 196603, 1, 1, 196604, 1, 65537, 196605, 1, 131076, 196606, 1, 131076, 196607, 1, 65537, 131081, 1, 131072, 131082, 1, 65537, 262136, 1, 262147, 262138, 1, 131072, 262139, 1, 4, 262140, 1, 65537, 262141, 1, 4, 262142, 1, 4, 262143, 1, 131074, 196618, 1, 262147, 327672, 1, 262147, 327676, 1, 262147, 262154, 1, 262149, 393208, 1, 327683, 393209, 1, 196612, 393210, 1, 196612, 393211, 1, 196612, 393212, 1, 393218, 393213, 1, 327684, 393214, 1, 393219, 327683, 1, 327680, 327684, 1, 196612, 327685, 1, 196612, 327686, 1, 327684, 327687, 1, 196612, 327688, 1, 196612, 327689, 1, 196612, 327690, 1, 327685 )
tile_data = PoolIntArray( -262145, 1, 262146, -327678, 1, 196611, -327677, 1, 327684, -327676, 1, 327684, -327675, 1, 327684, -327674, 1, 327684, -327673, 1, 196612, -327672, 1, 196612, -327671, 1, 327684, -327670, 1, 196613, -196609, 1, 262147, -262143, 0, 0, -262142, 1, 458753, -262134, 1, 262149, -131081, 1, 0, -131080, 1, 1, -131079, 1, 65537, -131078, 1, 327684, -131077, 1, 327684, -131076, 1, 327684, -131075, 1, 327684, -131074, 1, 196612, -131073, 1, 327685, -196607, 0, 0, -196598, 1, 262149, -65545, 1, 65536, -65544, 1, 65537, -65543, 1, 65539, -131070, 0, 0, -131063, 1, 0, -131062, 1, 65537, -9, 1, 65541, -8, 1, 65537, -7, 1, 65539, -65534, 0, 0, -65529, 1, 262146, -65527, 1, 65536, -65526, 1, 65538, 65527, 1, 131072, 65528, 1, 65537, 65529, 1, 131074, 65532, 1, 262146, 65535, 1, 262146, 2, 0, 0, 7, 1, 327683, 8, 1, 327684, 9, 1, 196609, 10, 1, 65539, 131064, 1, 262147, 131068, 1, 262149, 131071, 1, 262147, 65538, 0, 0, 65545, 1, 65536, 65546, 1, 65538, 196600, 1, 262149, 196602, 1, 0, 196603, 1, 1, 196604, 1, 65537, 196605, 1, 131076, 196606, 1, 131076, 196607, 1, 65537, 131074, 0, 0, 131081, 1, 131072, 131082, 1, 65537, 262136, 1, 262147, 262138, 1, 131072, 262139, 1, 4, 262140, 1, 65537, 262141, 1, 4, 262142, 1, 4, 262143, 1, 131074, 196610, 0, 0, 196618, 1, 262147, 327672, 1, 262147, 327676, 1, 262147, 262154, 1, 262149, 393208, 1, 327683, 393209, 1, 196612, 393210, 1, 196612, 393211, 1, 196612, 393212, 1, 393218, 393213, 1, 327684, 393214, 1, 196612, 393215, 1, 327684, 327680, 1, 196613, 327683, 1, 196611, 327684, 1, 327684, 327685, 1, 196612, 327686, 1, 327684, 327687, 1, 196612, 327688, 1, 196612, 327689, 1, 196612, 327690, 1, 327685, 393216, 1, 262149, 393219, 1, 262149, 458752, 1, 262149, 458754, 1, 196611, 458755, 1, 327685, 524288, 1, 262147, 524290, 1, 262149, 589824, 1, 458753, 589826, 1, 458753 )

[node name="Player" parent="." instance=ExtResource( 2 )]
position = Vector2( -32.4329, -11.6956 )

+ 18
- 4
Data/Scripts/Controller.gd Zobrazit soubor

@@ -4,9 +4,8 @@ const COLLISION_MINOR_SPEED_THRESHOLD = 150
const COLLISION_MAJOR_SPEED_THRESHOLD = 400
const COLLISION_TIMEDT_THRESHOLD = 0.1

# The maximum distance from the player in which the mouse will adjust the push force.
# at max_mouse_distance the full base_push_force <+ modifiers> will be applied.
var max_mouse_distance = 128
export var max_stamina = 1000
export var stamina_regen_per_sec = 125

# The base tangential acceleration that will be applied to the particles to give the
# player the illusion it's trying to move on it's own. This is just effects things visually (ATM)
@@ -14,8 +13,14 @@ export var base_tangential_accel = 32 setget _set_base_tangential_accel

# The base force applied when being pushed.
export var base_push_force = 64 setget _set_base_push_force
export var push_stamina_cost = 100


var current_stamina = max_stamina

# The maximum distance from the player in which the mouse will adjust the push force.
# at max_mouse_distance the full base_push_force <+ modifiers> will be applied.
var max_mouse_distance = 128
var neutral_rim = Color(0.9, 0.9, 0.9, 1.0)

var mouse_position = Vector2.ZERO
@@ -77,6 +82,9 @@ func get_push_force():
func get_body_radius():
return $CollisionShape2D.shape.radius

func get_mood():
return $Mood


func _set_color_collision_mask(id):
set_collision_mask_bit(10, true)
@@ -106,7 +114,9 @@ func _input(event):
mouse_down = true
elif Input.is_action_just_released("ButtonA"):
mouse_down = false
push = true
if current_stamina >= push_stamina_cost:
current_stamina -= push_stamina_cost
push = true


func _physics_process(delta):
@@ -132,6 +142,10 @@ func _physics_process(delta):
$Mood.shift_mood(delta, in_air, last_speed, (position - mouse_position).length())
last_speed = linear_velocity.length()
current_stamina += stamina_regen_per_sec * delta
if current_stamina > max_stamina:
current_stamina = max_stamina


func _process(delta):

+ 54
- 0
Data/Scripts/Doorway.gd Zobrazit soubor

@@ -0,0 +1,54 @@
extends Node2D


export var color:Color
export var transition_rate = 0.75


func _dominant_color():
if color.r > color.g and color.r > color.b:
return "r"
if color.g > color.r and color.g > color.b:
return "g"
if color.b > color.r and color.b > color.g:
return "b"
return "n"

func _ready():
$LeftDoor.set_color(color)
$LeftDoor.transition_rate = transition_rate
$RightDoor.set_color(color)
$RightDoor.transition_rate = transition_rate

func open():
$LeftDoor.open()
$RightDoor.open()

func close():
$LeftDoor.close()
$RightDoor.close()

func stop():
$LeftDoor.stop()
$RightDoor.stop()



func _on_Area2D_body_entered(body):
if body.is_in_group("Player"):
var mood = body.get_mood()
var dc = _dominant_color()
print ("Dominant Color: ", dc)
print ("Is Aggressive: ", mood.is_aggressive())
print ("Is Needie: ", mood.is_needie())
print ("Is Content: ", mood.is_content())
if (dc == "r" and mood.is_aggressive()) or \
(dc == "g" and mood.is_needie()) or \
(dc == "b" and mood.is_content()) or \
(dc == "n" and mood.is_neutral()):
open()


func _on_Area2D_body_exited(body):
if body.is_in_group("Player"):
close()

+ 50
- 0
Data/Scripts/HalfDoor.gd Zobrazit soubor

@@ -0,0 +1,50 @@
extends StaticBody2D


const OPENED_POSITION = Vector2(-47, 0)
const CLOSED_POSITION = Vector2(-6, 0)
const POSITION_DIFF = 41

export var color:Color
export var transition_rate = 0.75

var _control_state = 0 # 0 = No-OP | 1 = Open | 2 = Close


func _ready():
set_color(color)

func set_color(c):
$Doorway/Glow.pulse_color = c

func is_opening():
if $Tween.is_active():
return _control_state == 1
return false

func is_closing():
if $Tween.is_active():
return _control_state == 2
return false

func open():
var t = transition_rate
var cdiff = ($Doorway.position - OPENED_POSITION).length()
if cdiff > 0.001:
t = transition_rate * (cdiff / POSITION_DIFF)
$Tween.interpolate_property($Doorway, "position", $Doorway.position, OPENED_POSITION, t, Tween.TRANS_LINEAR, Tween.EASE_IN)
$Tween.start()
_control_state = 1

func close():
var t = transition_rate
var cdiff = ($Doorway.position - CLOSED_POSITION).length()
if cdiff > 0.001:
t = transition_rate * (cdiff / POSITION_DIFF)
$Tween.interpolate_property($Doorway, "position", $Doorway.position, CLOSED_POSITION, t, Tween.TRANS_LINEAR, Tween.EASE_IN)
$Tween.start()
_control_state = 2

func stop():
$Tween.stop($Doorway, "position")
_control_state = 0

+ 6
- 3
Data/Scripts/Mood.gd Zobrazit soubor

@@ -48,6 +48,9 @@ func is_needie():
func is_content():
return _mood.b > _mood.r and _mood.b > _mood.g

func is_neutral():
return not is_aggressive() and not is_needie() and not is_content()

func get_aggression():
return _mood.r

@@ -70,13 +73,13 @@ func _agg_shift(in_air, speed):
v = 0.1 # If in the air, going at an "exciting" speed, aggression rises!
elif is_aggressive():
v = -0.05 # Otherwise, if we're dominantly aggressive, slow aggression cooldown.
if _mood.r * 0.5 > _mood.b and _mood.r * 0.5 > _mood.g:
v = 0.0 # But, if our aggression is more than twice the other emotions, don't cooldown at all.
if speed > 1.0 and _mood.r * 0.5 > _mood.b and _mood.r * 0.5 > _mood.g:
v = 0.0 # But, if we're moving and our aggression is more than twice the other emotions, don't cooldown at all.
return v

func _need_shift(in_air, distance):
var v = -0.1
if in_air or is_aggressive():
if in_air:
# Decrease neediness faster while in air, as "player" is giving attension (in the air) or
# otherwise excited!!
v = -0.25

Načítá se…
Zrušit
Uložit