WIP electrical work
This commit is contained in:
parent
6b25359a38
commit
04eb4846e8
21 changed files with 325 additions and 59 deletions
10
Actors/Components/PowerManager.gd
Normal file
10
Actors/Components/PowerManager.gd
Normal file
|
@ -0,0 +1,10 @@
|
|||
extends Node
|
||||
|
||||
class_name PowerManager
|
||||
|
||||
signal power_connected()
|
||||
signal power_disconnected()
|
||||
|
||||
var wired = false
|
||||
|
||||
const DEBUG = true
|
53
Actors/Objects/ElectricSocket/ElectricSocket.gd
Normal file
53
Actors/Objects/ElectricSocket/ElectricSocket.gd
Normal file
|
@ -0,0 +1,53 @@
|
|||
tool
|
||||
|
||||
extends Area2D
|
||||
|
||||
enum Direction { LEFT, RIGHT, UP, DOWN }
|
||||
enum Flow { SOURCE, SINK }
|
||||
|
||||
export(Direction) var direction = Direction.DOWN setget set_direction
|
||||
|
||||
export(Array, NodePath) var connections = []
|
||||
|
||||
export(Color) var source_color
|
||||
export(Color) var sink_color
|
||||
|
||||
export(Flow) var flow = Flow.SINK setget set_flow
|
||||
|
||||
var ready = false
|
||||
|
||||
func _ready():
|
||||
ready = true
|
||||
$socket.material = $socket.material.duplicate()
|
||||
refresh_sprite()
|
||||
|
||||
func set_direction(dir):
|
||||
direction = dir
|
||||
if ready:
|
||||
refresh_sprite()
|
||||
|
||||
func set_flow(val):
|
||||
flow = val
|
||||
if ready:
|
||||
refresh_sprite()
|
||||
|
||||
func refresh_sprite():
|
||||
var rot = 0
|
||||
match direction:
|
||||
Direction.DOWN:
|
||||
$socket.region_rect.position = Vector2(0, 0)
|
||||
rot = 0
|
||||
Direction.UP:
|
||||
$socket.region_rect.position = Vector2(32, 0)
|
||||
rot = PI
|
||||
Direction.LEFT:
|
||||
$socket.region_rect.position = Vector2(32, 32)
|
||||
rot = PI/2
|
||||
Direction.RIGHT:
|
||||
$socket.region_rect.position = Vector2(0, 32)
|
||||
rot = -PI/2
|
||||
match flow:
|
||||
Flow.SOURCE:
|
||||
$socket.material.set_shader_param("cable_color", source_color)
|
||||
Flow.SINK:
|
||||
$socket.material.set_shader_param("cable_color", sink_color)
|
45
Actors/Objects/ElectricSocket/ElectricSocket.tscn
Normal file
45
Actors/Objects/ElectricSocket/ElectricSocket.tscn
Normal file
|
@ -0,0 +1,45 @@
|
|||
[gd_scene load_steps=6 format=2]
|
||||
|
||||
[ext_resource path="res://Graphics/tgstation/socket.png" type="Texture" id=1]
|
||||
[ext_resource path="res://Actors/Objects/ElectricSocket/ElectricSocket.gd" type="Script" id=2]
|
||||
|
||||
[sub_resource type="Shader" id=4]
|
||||
code = "shader_type canvas_item;
|
||||
render_mode blend_mix;
|
||||
|
||||
uniform vec4 cable_color: hint_color;
|
||||
|
||||
void fragment() {
|
||||
vec4 col = texture(TEXTURE, UV);
|
||||
if (col.r/col.g > 2.) {
|
||||
col.rgb = cable_color.rgb * length(col.rgb);
|
||||
}
|
||||
COLOR = col;
|
||||
}"
|
||||
custom_defines = ""
|
||||
|
||||
[sub_resource type="ShaderMaterial" id=5]
|
||||
shader = SubResource( 4 )
|
||||
shader_param/cable_color = Color( 0.0823529, 0.937255, 0.27451, 1 )
|
||||
|
||||
[sub_resource type="CircleShape2D" id=6]
|
||||
radius = 12.0
|
||||
|
||||
[node name="ElectricSocket" type="Area2D"]
|
||||
collision_layer = 4
|
||||
collision_mask = 2147483652
|
||||
script = ExtResource( 2 )
|
||||
direction = 1
|
||||
source_color = Color( 0.937255, 0.0823529, 0.0823529, 1 )
|
||||
sink_color = Color( 0.0901961, 0.533333, 0.960784, 1 )
|
||||
|
||||
[node name="socket" type="Sprite" parent="."]
|
||||
material = SubResource( 5 )
|
||||
texture = ExtResource( 1 )
|
||||
centered = false
|
||||
region_enabled = true
|
||||
region_rect = Rect2( 0, 32, 32, 32 )
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
position = Vector2( 16, 16 )
|
||||
shape = SubResource( 6 )
|
|
@ -2,13 +2,23 @@ extends StaticBody2D
|
|||
|
||||
class_name GameObjectPowerStorage
|
||||
|
||||
const MAX_CHARGE = 5000.0
|
||||
|
||||
var open = false
|
||||
var attached = true
|
||||
onready var activationRange = $ActivationRange as ActivationRange
|
||||
|
||||
var current_charge = MAX_CHARGE
|
||||
|
||||
func _ready():
|
||||
if not Engine.editor_hint:
|
||||
activationRange.visible = true
|
||||
|
||||
func _physics_process(delta):
|
||||
if $PowerManager.wired:
|
||||
if $PowerManager.DEBUG:
|
||||
update()
|
||||
|
||||
func _input(event):
|
||||
if event is InputEventMouseButton and event.pressed and not is_inside and open:
|
||||
open = false
|
||||
|
@ -36,3 +46,13 @@ func _force_close_ui():
|
|||
if open:
|
||||
open = false
|
||||
$UIAnimation.play("fadeout")
|
||||
|
||||
func _draw():
|
||||
if $PowerManager.DEBUG:
|
||||
var charge_px = int(current_charge / MAX_CHARGE * 32)
|
||||
var charge_color = Color.greenyellow
|
||||
if charge_px < 20:
|
||||
charge_color = Color.yellow
|
||||
if charge_px < 10:
|
||||
charge_color = Color.red
|
||||
draw_rect(Rect2(32, 32-charge_px, 4, charge_px), charge_color)
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
[gd_scene load_steps=9 format=2]
|
||||
[gd_scene load_steps=10 format=2]
|
||||
|
||||
[ext_resource path="res://Actors/Objects/PowerStorage/PowerStorage.gd" type="Script" id=1]
|
||||
[ext_resource path="res://Graphics/tgstation/smes.png" type="Texture" id=2]
|
||||
[ext_resource path="res://Actors/Components/ActivationRange.gd" type="Script" id=3]
|
||||
[ext_resource path="res://Actors/Objects/PowerStorage/UI/PowerUI.tscn" type="PackedScene" id=4]
|
||||
[ext_resource path="res://Actors/Components/PowerManager.gd" type="Script" id=5]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=1]
|
||||
extents = Vector2( 16, 16 )
|
||||
|
@ -12,7 +13,7 @@ extents = Vector2( 16, 16 )
|
|||
length = 0.2
|
||||
step = 0.05
|
||||
tracks/0/type = "value"
|
||||
tracks/0/path = NodePath("Control:modulate")
|
||||
tracks/0/path = NodePath("../StaticBody2D/Control:modulate")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/imported = false
|
||||
|
@ -24,7 +25,7 @@ tracks/0/keys = {
|
|||
"values": [ Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ) ]
|
||||
}
|
||||
tracks/1/type = "bezier"
|
||||
tracks/1/path = NodePath("Control:position:y")
|
||||
tracks/1/path = NodePath("../StaticBody2D/Control:position:y")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/imported = false
|
||||
|
@ -37,7 +38,7 @@ tracks/1/keys = {
|
|||
[sub_resource type="Animation" id=3]
|
||||
length = 0.2
|
||||
tracks/0/type = "value"
|
||||
tracks/0/path = NodePath("Control:modulate")
|
||||
tracks/0/path = NodePath("../StaticBody2D/Control:modulate")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/imported = false
|
||||
|
@ -49,7 +50,7 @@ tracks/0/keys = {
|
|||
"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
|
||||
}
|
||||
tracks/1/type = "bezier"
|
||||
tracks/1/path = NodePath("Control:position:y")
|
||||
tracks/1/path = NodePath("../StaticBody2D/Control:position:y")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/imported = false
|
||||
|
@ -59,7 +60,7 @@ tracks/1/keys = {
|
|||
"times": PoolRealArray( 0, 0.2 )
|
||||
}
|
||||
|
||||
[sub_resource type="CircleShape2D" id=4]
|
||||
[sub_resource type="CircleShape2D" id=5]
|
||||
radius = 56.0
|
||||
|
||||
[node name="StaticBody2D" type="StaticBody2D"]
|
||||
|
@ -78,6 +79,9 @@ centered = false
|
|||
anims/fadein = SubResource( 2 )
|
||||
anims/fadeout = SubResource( 3 )
|
||||
|
||||
[node name="PowerManager" type="Node" parent="."]
|
||||
script = ExtResource( 5 )
|
||||
|
||||
[node name="Control" type="Node2D" parent="."]
|
||||
position = Vector2( 16, 0 )
|
||||
z_index = 999
|
||||
|
@ -96,7 +100,7 @@ position = Vector2( 16, 16 )
|
|||
script = ExtResource( 3 )
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="ActivationRange"]
|
||||
shape = SubResource( 4 )
|
||||
shape = SubResource( 5 )
|
||||
[connection signal="mouse_entered" from="Control/PowerUI" to="." method="_ui_focus_changed" binds= [ true ]]
|
||||
[connection signal="mouse_exited" from="Control/PowerUI" to="." method="_ui_focus_changed" binds= [ false ]]
|
||||
[connection signal="player_left" from="ActivationRange" to="." method="_force_close_ui"]
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
[gd_scene load_steps=4 format=2]
|
||||
[gd_scene load_steps=5 format=2]
|
||||
|
||||
[ext_resource path="res://Graphics/tgstation/scanner.png" type="Texture" id=1]
|
||||
[ext_resource path="res://Actors/Objects/Scanner/Scanner.gd" type="Script" id=2]
|
||||
[ext_resource path="res://Actors/Components/PowerManager.gd" type="Script" id=3]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=1]
|
||||
extents = Vector2( 16, 16 )
|
||||
|
@ -17,3 +18,6 @@ shape = SubResource( 1 )
|
|||
position = Vector2( -1, 0 )
|
||||
texture = ExtResource( 1 )
|
||||
centered = false
|
||||
|
||||
[node name="PowerManager" type="Node" parent="."]
|
||||
script = ExtResource( 3 )
|
||||
|
|
25
Actors/Systems/Electricity/ElectricProbe.gd
Normal file
25
Actors/Systems/Electricity/ElectricProbe.gd
Normal file
|
@ -0,0 +1,25 @@
|
|||
extends Area2D
|
||||
|
||||
class_name ProbeElectric
|
||||
|
||||
const DEBUG = true
|
||||
|
||||
const center = Vector2.ONE * 16
|
||||
|
||||
var neighbours = []
|
||||
|
||||
func _physics_process(delta):
|
||||
if DEBUG:
|
||||
update()
|
||||
|
||||
func _draw():
|
||||
if DEBUG:
|
||||
draw_circle(center, 4, Color.cyan)
|
||||
for neighbour in neighbours:
|
||||
var delta = (neighbour.global_position - global_position) / global_scale
|
||||
draw_line(center, delta + center, Color.cyan, 2)
|
||||
|
||||
func _got_neighbour(area: Area2D):
|
||||
if area == self:
|
||||
return
|
||||
neighbours.push_back(area)
|
36
Actors/Systems/Electricity/ElectricProbe.tscn
Normal file
36
Actors/Systems/Electricity/ElectricProbe.tscn
Normal file
|
@ -0,0 +1,36 @@
|
|||
[gd_scene load_steps=5 format=2]
|
||||
|
||||
[ext_resource path="res://Actors/Systems/Electricity/ElectricProbe.gd" type="Script" id=1]
|
||||
|
||||
[sub_resource type="CircleShape2D" id=1]
|
||||
radius = 12.0
|
||||
|
||||
[sub_resource type="SegmentShape2D" id=2]
|
||||
a = Vector2( 16, -16 )
|
||||
b = Vector2( 16, 48 )
|
||||
|
||||
[sub_resource type="SegmentShape2D" id=3]
|
||||
a = Vector2( -16, 16 )
|
||||
b = Vector2( 48, 16 )
|
||||
|
||||
[node name="ElProbe" type="Area2D"]
|
||||
collision_layer = 4
|
||||
collision_mask = 4
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
position = Vector2( 16, 16 )
|
||||
shape = SubResource( 1 )
|
||||
|
||||
[node name="NeighbourCheck" type="Area2D" parent="."]
|
||||
input_pickable = false
|
||||
monitorable = false
|
||||
collision_layer = 4
|
||||
collision_mask = 4
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="NeighbourCheck"]
|
||||
shape = SubResource( 2 )
|
||||
|
||||
[node name="CollisionShape2D2" type="CollisionShape2D" parent="NeighbourCheck"]
|
||||
shape = SubResource( 3 )
|
||||
[connection signal="area_entered" from="NeighbourCheck" to="." method="_got_neighbour"]
|
1
Actors/Systems/Electricity/Electricity.gd
Normal file
1
Actors/Systems/Electricity/Electricity.gd
Normal file
|
@ -0,0 +1 @@
|
|||
extends Node
|
|
@ -3,7 +3,7 @@
|
|||
[ext_resource path="res://Graphics/tgstation/wires-l2.png" type="Texture" id=1]
|
||||
|
||||
[resource]
|
||||
0/name = "wires-l2.png 0"
|
||||
0/name = "Wire"
|
||||
0/texture = ExtResource( 1 )
|
||||
0/tex_offset = Vector2( 0, 0 )
|
||||
0/modulate = Color( 1, 1, 1, 1 )
|
||||
|
|
BIN
Graphics/tgstation/socket.png
Normal file
BIN
Graphics/tgstation/socket.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 301 B |
34
Graphics/tgstation/socket.png.import
Normal file
34
Graphics/tgstation/socket.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/socket.png-6a3c65f9b84aa2e36705290607e8f31f.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Graphics/tgstation/socket.png"
|
||||
dest_files=[ "res://.import/socket.png-6a3c65f9b84aa2e36705290607e8f31f.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=false
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
|
@ -20,7 +20,7 @@ compress/hdr_mode=0
|
|||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=true
|
||||
flags/filter=false
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
|
|
|
@ -20,7 +20,6 @@ map_path = NodePath("runtime")
|
|||
[node name="runtime" parent="world" instance=ExtResource( 7 )]
|
||||
|
||||
[node name="odyssey" parent="world" instance=ExtResource( 1 )]
|
||||
visible = false
|
||||
|
||||
[node name="player" parent="world" instance=ExtResource( 2 )]
|
||||
position = Vector2( 206.017, 250.966 )
|
||||
|
|
|
@ -13,26 +13,29 @@ const SPEED_EASE = 0.5
|
|||
const DIRECTION_EASE = 0.5
|
||||
const EPSILON = 0.01
|
||||
|
||||
var tilemaps = []
|
||||
const ProbeElectricity = preload("res://Actors/Systems/Electricity/ElectricProbe.tscn")
|
||||
|
||||
onready var tilemaps = [ $base, $cables, $floor, $walls ]
|
||||
|
||||
export var unlit = false setget set_unlit
|
||||
onready var darkness = $darkness
|
||||
|
||||
export var shadow_intensity = 0.2
|
||||
|
||||
func _ready():
|
||||
if Engine.editor_hint:
|
||||
return
|
||||
$editor.queue_free()
|
||||
set_unlit(false)
|
||||
|
||||
func set_unlit(val):
|
||||
unlit = val
|
||||
if darkness:
|
||||
darkness.visible = not val
|
||||
# Electricity setup
|
||||
make_electric_probes($cables, "Wire")
|
||||
|
||||
func _process(delta):
|
||||
func _process(delta: float):
|
||||
if Engine.editor_hint:
|
||||
return
|
||||
|
||||
# Ease ship speed/direction changes
|
||||
if abs(ship_direction - current_ship_direction) < EPSILON:
|
||||
current_ship_direction = ship_direction
|
||||
else:
|
||||
|
@ -45,9 +48,28 @@ func _process(delta):
|
|||
$deepspace.rotation = current_ship_direction-PI/2
|
||||
$deepspace.region_rect.position += Vector2(sin(current_ship_direction), cos(current_ship_direction)) * current_ship_speed * delta
|
||||
|
||||
# Lighting
|
||||
|
||||
func set_unlit(val: bool):
|
||||
unlit = val
|
||||
if darkness:
|
||||
darkness.visible = not val
|
||||
|
||||
# Engine related functions
|
||||
|
||||
func set_engine_strength(val: float):
|
||||
# Set energy strength to current speed
|
||||
for child in $engines.get_children():
|
||||
if child is GameObjectEngine:
|
||||
var engine = child as GameObjectEngine
|
||||
engine.strength = val
|
||||
|
||||
# Tileset related functions
|
||||
|
||||
func make_electric_probes(tilemap: TileMap, tile_name: String):
|
||||
var tile_id = tilemap.tile_set.find_tile_by_name(tile_name)
|
||||
for cell in tilemap.get_used_cells_by_id(tile_id):
|
||||
var coord = tilemap.map_to_world(cell)
|
||||
var probe = ProbeElectricity.instance()
|
||||
probe.position = coord
|
||||
tilemap.add_child(probe)
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,10 +1,4 @@
|
|||
extends GameMap
|
||||
|
||||
func _ready():
|
||||
tilemaps = [
|
||||
$base,
|
||||
$cables,
|
||||
$floor,
|
||||
$walls
|
||||
]
|
||||
set_unlit(true)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=14 format=2]
|
||||
[gd_scene load_steps=15 format=2]
|
||||
|
||||
[ext_resource path="res://Graphics/tgstation/walls.tres" type="TileSet" id=1]
|
||||
[ext_resource path="res://Graphics/tgstation/1x1.tres" type="TileSet" id=2]
|
||||
|
@ -12,12 +12,12 @@
|
|||
[ext_resource path="res://Actors/Objects/Engine/Engine.tscn" type="PackedScene" id=10]
|
||||
[ext_resource path="res://Graphics/tgstation/base.tres" type="TileSet" id=11]
|
||||
[ext_resource path="res://Actors/Objects/PowerStorage/PowerStorage.tscn" type="PackedScene" id=12]
|
||||
[ext_resource path="res://Actors/Objects/ElectricSocket/ElectricSocket.tscn" type="PackedScene" id=13]
|
||||
|
||||
[sub_resource type="CanvasItemMaterial" id=1]
|
||||
light_mode = 1
|
||||
|
||||
[node name="map" type="Node2D"]
|
||||
position = Vector2( -1, 0 )
|
||||
script = ExtResource( 5 )
|
||||
|
||||
[node name="darkness" type="CanvasModulate" parent="."]
|
||||
|
@ -43,19 +43,14 @@ cell_quadrant_size = 32
|
|||
occluder_light_mask = -2147483647
|
||||
format = 1
|
||||
tile_data = PoolIntArray( 262137, 0, 0, 262138, 0, 0, 262139, 0, 0, 262140, 0, 0, 262141, 0, 0, 262142, 0, 0, 262143, 0, 0, 196608, 0, 0, 196609, 0, 0, 196610, 0, 0, 196611, 0, 0, 196612, 0, 0, 196613, 0, 0, 196614, 0, 0, 196615, 0, 0, 196616, 0, 0, 196617, 0, 0, 196618, 0, 0, 196619, 0, 0, 196620, 0, 0, 196621, 0, 0, 196622, 0, 0, 196623, 0, 0, 196624, 0, 0, 196625, 0, 0, 196626, 0, 0, 196627, 0, 0, 327673, 0, 0, 327674, 0, 0, 327675, 0, 0, 327676, 0, 0, 327677, 0, 0, 327678, 0, 0, 327679, 0, 0, 262144, 0, 0, 262145, 0, 0, 262146, 0, 0, 262147, 0, 0, 262148, 0, 0, 262149, 0, 0, 262150, 0, 0, 262151, 0, 0, 262152, 0, 0, 262153, 0, 0, 262154, 0, 0, 262155, 0, 0, 262156, 0, 0, 262157, 0, 0, 262158, 0, 0, 262159, 0, 0, 262160, 0, 0, 262161, 0, 0, 262162, 0, 0, 262163, 0, 0, 393209, 0, 0, 393210, 0, 0, 393211, 0, 0, 393212, 0, 0, 393213, 0, 0, 393214, 0, 0, 393215, 0, 0, 327680, 0, 0, 327681, 0, 0, 327682, 0, 0, 327683, 0, 0, 327684, 0, 0, 327685, 0, 0, 327686, 0, 0, 327687, 0, 0, 327688, 0, 0, 327689, 0, 0, 327690, 0, 0, 327691, 0, 0, 327692, 0, 0, 327693, 0, 0, 327694, 0, 0, 327695, 0, 0, 327696, 0, 0, 327697, 0, 0, 327698, 0, 0, 327699, 0, 0, 458745, 0, 0, 458746, 0, 0, 458747, 0, 0, 458748, 0, 0, 458749, 0, 0, 458750, 0, 0, 458751, 0, 0, 393216, 0, 0, 393217, 0, 0, 393218, 0, 0, 393219, 0, 0, 393220, 0, 0, 393221, 0, 0, 393222, 0, 0, 393223, 0, 0, 393224, 0, 0, 393225, 0, 0, 393226, 0, 0, 393227, 0, 0, 393228, 0, 0, 393229, 0, 0, 393230, 0, 0, 393231, 0, 0, 393232, 0, 0, 393233, 0, 0, 393234, 0, 0, 393235, 0, 0, 524281, 0, 0, 524282, 0, 0, 524283, 0, 0, 524284, 0, 0, 524285, 0, 0, 524286, 0, 0, 524287, 0, 0, 458752, 0, 0, 458753, 0, 0, 458754, 0, 0, 458755, 0, 0, 458756, 0, 0, 458757, 0, 0, 458758, 0, 0, 458759, 0, 0, 458760, 0, 0, 458761, 0, 0, 458762, 0, 0, 458763, 0, 0, 458764, 0, 0, 458765, 0, 0, 458766, 0, 0, 458767, 0, 0, 458768, 0, 0, 458769, 0, 0, 458770, 0, 0, 458771, 0, 0, 589817, 0, 0, 589818, 0, 0, 589819, 0, 0, 589820, 0, 0, 589821, 0, 0, 589822, 0, 0, 589823, 0, 0, 524288, 0, 0, 524289, 0, 0, 524290, 0, 0, 524291, 0, 0, 524292, 0, 0, 524293, 0, 0, 524294, 0, 0, 524295, 0, 0, 524296, 0, 0, 524297, 0, 0, 524298, 0, 0, 524299, 0, 0, 524300, 0, 0, 524301, 0, 0, 524302, 0, 0, 524303, 0, 0, 524304, 0, 0, 524305, 0, 0, 524306, 0, 0, 524307, 0, 0, 655353, 0, 0, 655354, 0, 0, 655355, 0, 0, 655356, 0, 0, 655357, 0, 0, 655358, 0, 0, 655359, 0, 0, 589824, 0, 0, 589825, 0, 0, 589826, 0, 0, 589827, 0, 0, 589828, 0, 0, 589829, 0, 0, 589830, 0, 0, 589831, 0, 0, 589832, 0, 0, 589833, 0, 0, 589834, 0, 0, 589835, 0, 0, 589836, 0, 0, 589837, 0, 0, 589838, 0, 0, 589839, 0, 0, 589840, 0, 0, 589841, 0, 0, 589842, 0, 0, 589843, 0, 0, 720889, 0, 0, 720890, 0, 0, 720891, 0, 0, 720892, 0, 0, 720893, 0, 0, 720894, 0, 0, 720895, 0, 0, 655360, 0, 0, 655361, 0, 0, 655362, 0, 0, 655363, 0, 0, 655364, 0, 0, 655365, 0, 0, 655366, 0, 0, 655367, 0, 0, 655368, 0, 0, 655369, 0, 0, 655370, 0, 0, 655371, 0, 0, 655372, 0, 0, 655373, 0, 0, 655374, 0, 0, 655375, 0, 0, 655376, 0, 0, 655377, 0, 0, 655378, 0, 0, 655379, 0, 0, 786425, 0, 0, 786426, 0, 0, 786427, 0, 0, 786428, 0, 0, 786429, 0, 0, 786430, 0, 0, 786431, 0, 0, 720896, 0, 0, 720897, 0, 0, 720898, 0, 0, 720899, 0, 0, 720900, 0, 0, 720901, 0, 0, 720902, 0, 0, 720903, 0, 0, 720904, 0, 0, 720905, 0, 0, 720906, 0, 0, 720907, 0, 0, 720908, 0, 0, 720909, 0, 0, 720910, 0, 0, 720911, 0, 0, 720912, 0, 0, 720913, 0, 0, 720914, 0, 0, 720915, 0, 0, 851961, 0, 0, 851962, 0, 0, 851963, 0, 0, 851964, 0, 0, 851965, 0, 0, 851966, 0, 0, 851967, 0, 0, 786432, 0, 0, 786433, 0, 0, 786434, 0, 0, 786435, 0, 0, 786436, 0, 0, 786437, 0, 0, 786438, 0, 0, 786439, 0, 0, 786440, 0, 0, 786441, 0, 0, 786442, 0, 0, 786443, 0, 0, 786444, 0, 0, 786445, 0, 0, 786446, 0, 0, 786447, 0, 0, 786448, 0, 0, 786449, 0, 0, 786450, 0, 0, 786451, 0, 0 )
|
||||
script = ExtResource( 3 )
|
||||
extended_tilemap_node = NodePath("../1x1")
|
||||
|
||||
[node name="cables" type="TileMap" parent="."]
|
||||
position = Vector2( -3, 0 )
|
||||
tile_set = ExtResource( 4 )
|
||||
cell_size = Vector2( 32, 32 )
|
||||
cell_quadrant_size = 32
|
||||
occluder_light_mask = -2147483647
|
||||
format = 1
|
||||
tile_data = PoolIntArray( 524286, 0, 131072, 524287, 0, 65536, 458752, 0, 65536, 458753, 0, 65536, 458754, 0, 65536, 458755, 0, 196608, 524291, 0, 65539, 655355, 0, 131073, 589827, 0, 65539, 720891, 0, 65539, 655363, 0, 131075, 786427, 0, 65538, 786428, 0, 65536, 786429, 0, 262144 )
|
||||
script = ExtResource( 3 )
|
||||
extended_tilemap_node = NodePath("../1x1")
|
||||
tile_data = PoolIntArray( 393214, 0, 327681, 393215, 0, 262145, 327680, 0, 458752, 458749, 0, 65537, 458750, 0, 262150, 458751, 0, 458754, 393216, 0, 393218, 524284, 0, 327681, 524285, 0, 131078, 524287, 0, 262151, 458752, 0, 458755, 458755, 0, 131072, 458756, 0, 0, 589820, 0, 262151, 589821, 0, 6, 589822, 0, 1, 589823, 0, 196611, 655355, 0, 131072, 655356, 0, 131074, 655358, 0, 65539, 589828, 0, 131073, 720892, 0, 65538, 720893, 0, 1, 720894, 0, 2, 720895, 0, 262144, 655363, 0, 131072, 655364, 0, 2, 655365, 0, 65536, 655366, 0, 65536, 655367, 0, 1, 655368, 0, 262144, 786429, 0, 131075, 720903, 0, 131075 )
|
||||
|
||||
[node name="floor" type="TileMap" parent="."]
|
||||
tile_set = ExtResource( 9 )
|
||||
|
@ -63,8 +58,6 @@ cell_size = Vector2( 32, 32 )
|
|||
cell_quadrant_size = 32
|
||||
occluder_light_mask = -2147483647
|
||||
format = 1
|
||||
script = ExtResource( 3 )
|
||||
extended_tilemap_node = NodePath("../1x1")
|
||||
|
||||
[node name="walls" type="TileMap" parent="."]
|
||||
tile_set = ExtResource( 1 )
|
||||
|
@ -106,37 +99,50 @@ __meta__ = {
|
|||
}
|
||||
|
||||
[node name="Computer" parent="objects" instance=ExtResource( 6 )]
|
||||
position = Vector2( -32, 224 )
|
||||
position = Vector2( -64, 128 )
|
||||
|
||||
[node name="Computer2" parent="objects" instance=ExtResource( 6 )]
|
||||
position = Vector2( 0, 224 )
|
||||
position = Vector2( -32, 128 )
|
||||
computer_type = 1
|
||||
|
||||
[node name="Computer3" parent="objects" instance=ExtResource( 6 )]
|
||||
position = Vector2( 32, 224 )
|
||||
position = Vector2( 0, 128 )
|
||||
computer_type = 2
|
||||
|
||||
[node name="Computer4" parent="objects" instance=ExtResource( 6 )]
|
||||
position = Vector2( 64, 224 )
|
||||
position = Vector2( 32, 128 )
|
||||
computer_type = 3
|
||||
|
||||
[node name="Computer5" parent="objects" instance=ExtResource( 6 )]
|
||||
position = Vector2( -64, 224 )
|
||||
position = Vector2( -96, 128 )
|
||||
computer_type = 4
|
||||
|
||||
[node name="Computer6" parent="objects" instance=ExtResource( 6 )]
|
||||
position = Vector2( -96, 224 )
|
||||
position = Vector2( -128, 128 )
|
||||
computer_type = 5
|
||||
|
||||
[node name="StaticBody2D2" parent="objects" instance=ExtResource( 12 )]
|
||||
position = Vector2( 193, 128 )
|
||||
|
||||
[node name="SMES1" parent="objects" instance=ExtResource( 12 )]
|
||||
position = Vector2( 128, 256 )
|
||||
|
||||
[node name="Computer7" parent="objects" instance=ExtResource( 6 )]
|
||||
position = Vector2( 96, 224 )
|
||||
position = Vector2( 64, 128 )
|
||||
computer_type = 6
|
||||
|
||||
[node name="StaticBody2D" parent="objects/Computer7" instance=ExtResource( 12 )]
|
||||
position = Vector2( -255, 64 )
|
||||
[node name="Scanner" parent="objects" instance=ExtResource( 8 )]
|
||||
position = Vector2( 288, 320 )
|
||||
|
||||
[node name="StaticBody2D2" parent="objects/Computer7" instance=ExtResource( 12 )]
|
||||
position = Vector2( 1, 96 )
|
||||
[node name="ElectricSocket" parent="objects" instance=ExtResource( 13 )]
|
||||
position = Vector2( 128, 288 )
|
||||
direction = 2
|
||||
connections = [ NodePath("../SMES1") ]
|
||||
flow = 0
|
||||
|
||||
[node name="ElectricSocket2" parent="objects" instance=ExtResource( 13 )]
|
||||
position = Vector2( 256, 320 )
|
||||
connections = [ NodePath("../Scanner") ]
|
||||
|
||||
[node name="lights" type="Node2D" parent="."]
|
||||
modulate = Color( 0.980392, 0.980392, 0.980392, 1 )
|
||||
|
@ -144,6 +150,3 @@ __meta__ = {
|
|||
"_edit_group_": true,
|
||||
"_edit_lock_": true
|
||||
}
|
||||
|
||||
[node name="StaticBody2D" parent="." instance=ExtResource( 8 )]
|
||||
position = Vector2( -95, 352 )
|
||||
|
|
|
@ -3,6 +3,7 @@ extends TileMap
|
|||
class_name MapTiles
|
||||
|
||||
export(NodePath) var extended_tilemap_node
|
||||
|
||||
export var occluders = ["Wall"]
|
||||
|
||||
export var shadow_intensity = 0.2
|
||||
|
@ -10,12 +11,13 @@ export var shadow_intensity = 0.2
|
|||
onready var extended_tilemap = get_node(extended_tilemap_node) as TileMap
|
||||
|
||||
func _ready():
|
||||
# Make occluders for FOV
|
||||
# Make occluders
|
||||
make_occluders()
|
||||
|
||||
# Convert 2x2 tiles to 1x1 if possible
|
||||
convert_extended()
|
||||
|
||||
|
||||
func convert_extended():
|
||||
var extended = extended_tilemap.tile_set
|
||||
for id in tile_set.get_tiles_ids():
|
||||
|
@ -39,7 +41,9 @@ func convert_extended():
|
|||
func make_occluders():
|
||||
var occluder_ids = []
|
||||
for occluder_name in occluders:
|
||||
occluder_ids.push_back(tile_set.find_tile_by_name(occluder_name))
|
||||
var id = tile_set.find_tile_by_name(occluder_name)
|
||||
if id >= 0:
|
||||
occluder_ids.push_back(id)
|
||||
for id in tile_set.get_tiles_ids():
|
||||
if occluder_ids.find(id) < 0:
|
||||
# Not an occluder, skip it
|
||||
|
|
|
@ -10,4 +10,5 @@ onready var map = get_node(map_path) as GameMap
|
|||
|
||||
func _ready():
|
||||
for tilemap in map.tilemaps:
|
||||
tilemap.set_occluder_origin(player)
|
||||
if tilemap is MapTiles:
|
||||
tilemap.set_occluder_origin(player)
|
||||
|
|
|
@ -74,6 +74,16 @@ _global_script_classes=[ {
|
|||
"language": "GDScript",
|
||||
"path": "res://Scenes/Rendering/Occluder.gd"
|
||||
}, {
|
||||
"base": "Node",
|
||||
"class": "PowerManager",
|
||||
"language": "GDScript",
|
||||
"path": "res://Actors/Components/PowerManager.gd"
|
||||
}, {
|
||||
"base": "Area2D",
|
||||
"class": "ProbeElectric",
|
||||
"language": "GDScript",
|
||||
"path": "res://Actors/Systems/Electricity/ElectricProbe.gd"
|
||||
}, {
|
||||
"base": "Reference",
|
||||
"class": "UICommand",
|
||||
"language": "GDScript",
|
||||
|
@ -93,6 +103,8 @@ _global_script_class_icons={
|
|||
"GameWorld": "",
|
||||
"MapTiles": "",
|
||||
"Occluder": "",
|
||||
"PowerManager": "",
|
||||
"ProbeElectric": "",
|
||||
"UICommand": ""
|
||||
}
|
||||
|
||||
|
@ -152,6 +164,12 @@ sprint={
|
|||
]
|
||||
}
|
||||
|
||||
[layer_names]
|
||||
|
||||
2d_physics/layer_1="Environment"
|
||||
2d_physics/layer_2="Projectile"
|
||||
2d_physics/layer_3="Electric"
|
||||
|
||||
[rendering]
|
||||
|
||||
vram_compression/import_etc=true
|
||||
|
|
Reference in a new issue