Skip to content

Commit

Permalink
.
Browse files Browse the repository at this point in the history
  • Loading branch information
rainlizard committed Jan 22, 2023
1 parent d6dc894 commit 81c3bc8
Show file tree
Hide file tree
Showing 14 changed files with 250 additions and 92 deletions.
42 changes: 22 additions & 20 deletions AutoLoad/Cube.gd
Original file line number Diff line number Diff line change
Expand Up @@ -54,26 +54,28 @@ func get_cubescfg_modified_time():

func _notification(what: int):
if what == MainLoop.NOTIFICATION_WM_FOCUS_IN:
if cubesCfgLastModifiedTime != get_cubescfg_modified_time():

var oMessage = Nodelist.list["oMessage"]
var oOverheadGraphics = Nodelist.list["oOverheadGraphics"]
var oPickSlabWindow = Nodelist.list["oPickSlabWindow"]
var oColumnEditor = Nodelist.list["oColumnEditor"]
var oSlabsetWindow = Nodelist.list["oSlabsetWindow"]
var oEditor = Nodelist.list["oEditor"]
var oGenerateTerrain = Nodelist.list["oGenerateTerrain"]

read_cubes_cfg()
# Refresh the display of anything that handles cubes
oOverheadGraphics.update_map_overhead_2d_textures()
oPickSlabWindow.add_slabs()
oColumnEditor._on_ColumnEditor_visibility_changed()
oSlabsetWindow._on_SlabsetWindow_visibility_changed()
if oEditor.currentView == oEditor.VIEW_3D:
oGenerateTerrain.start()

oMessage.quick("Reloaded cubes.cfg")
var oDataClm = Nodelist.list["oDataClm"]
if oDataClm.cubes.empty() == false: # fixes a crash when you've got no map loaded
if cubesCfgLastModifiedTime != get_cubescfg_modified_time():
var oMessage = Nodelist.list["oMessage"]
var oOverheadGraphics = Nodelist.list["oOverheadGraphics"]
var oPickSlabWindow = Nodelist.list["oPickSlabWindow"]
var oColumnEditor = Nodelist.list["oColumnEditor"]
var oSlabsetWindow = Nodelist.list["oSlabsetWindow"]
var oEditor = Nodelist.list["oEditor"]
var oGenerateTerrain = Nodelist.list["oGenerateTerrain"]

read_cubes_cfg()
# Refresh the display of anything that handles cubes

oOverheadGraphics.update_map_overhead_2d_textures()
oPickSlabWindow.add_slabs()
oColumnEditor._on_ColumnEditor_visibility_changed()
oSlabsetWindow._on_SlabsetWindow_visibility_changed()
if oEditor.currentView == oEditor.VIEW_3D:
oGenerateTerrain.start()

oMessage.quick("Reloaded cubes.cfg")

func read_cubes_cfg():

Expand Down
4 changes: 4 additions & 0 deletions LevelChanger.gd
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ onready var oMapSettingsWindow = Nodelist.list["oMapSettingsWindow"]
onready var oMapBrowser = Nodelist.list["oMapBrowser"]
onready var oColumnEditor = Nodelist.list["oColumnEditor"]
onready var oSlabsetWindow = Nodelist.list["oSlabsetWindow"]
onready var oSelector = Nodelist.list["oSelector"]


func _ready():
get_line_edit().expand_to_text_length = true
Expand All @@ -20,6 +22,8 @@ func _input(event):
if oColumnEditor.visible == true: return
if oSlabsetWindow.visible == true: return

if oSelector.mode == oSelector.MODE_TILE: return

var allowKeyShortcuts = false
match get_parent().name:
"PlacingListData": # Placing
Expand Down
84 changes: 84 additions & 0 deletions Scenes/BrushPlacingPreview.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
extends Node2D
onready var oBrushPreviewDisplay = Nodelist.list["oBrushPreviewDisplay"]
onready var oSelector = Nodelist.list["oSelector"]
onready var oSelection = Nodelist.list["oSelection"]
onready var oEditingTools = Nodelist.list["oEditingTools"]
onready var oEditor = Nodelist.list["oEditor"]

var img = Image.new()
var tex = ImageTexture.new()

var brushShapeArray = []
var offsetBrushPos = 0

func _ready():
img.create(1, 1, false, Image.FORMAT_RGBA8)
tex.create_from_image(img, 0)
yield(get_tree(),'idle_frame')
update_img()

func update_img():
img.resize(oEditingTools.BRUSH_SIZE,oEditingTools.BRUSH_SIZE, Image.INTERPOLATE_NEAREST)
var imgW = img.get_width()
var imgH = img.get_height()

match oEditingTools.TOOL_SELECTED:
oEditingTools.PENCIL:
brushShapeArray = make_brush_shape(oSelection.CONSTRUCT_PENCIL)
oEditingTools.BRUSH:
brushShapeArray = make_brush_shape(oSelection.CONSTRUCT_BRUSH)
oEditingTools.RECTANGLE:
brushShapeArray = []
oEditingTools.PAINTBUCKET:
brushShapeArray = []
if oSelector.mode == oSelector.MODE_SUBTILE:
brushShapeArray = []

img.fill(Color(0,0,0,0))

img.lock()

for pos in brushShapeArray:
img.set_pixelv(pos, Color(1,1,1,0.25))
img.unlock()

tex.set_data(img)

var halfSize = ((oEditingTools.BRUSH_SIZE)-1) / 2.0
offsetBrushPos = -Vector2(floor(halfSize),floor(halfSize))

oBrushPreviewDisplay.texture = tex
oBrushPreviewDisplay.rect_size = Vector2(imgW*96, imgH*96)


func _process(delta):
oBrushPreviewDisplay.rect_position = (oSelector.cursorTile+offsetBrushPos) * Vector2(96,96)

func make_brush_shape(constructType):
var array = []


var beginPos = Vector2(0,0)
var endPos = Vector2(oEditingTools.BRUSH_SIZE-1, oEditingTools.BRUSH_SIZE-1)
var brushSize = (beginPos-endPos).abs()
var center = Vector2(brushSize.x*0.5, brushSize.y*0.5)
print("brushSize: " + str(brushSize))
for y in range(beginPos.y, endPos.y+1):
for x in range(beginPos.x, endPos.x+1):
if constructType == oSelection.CONSTRUCT_BRUSH:
print(Vector2(x,y).distance_to(center))
if Vector2(x,y).distance_to(center) < max(brushSize.x+1,brushSize.y+1)*0.47:
array.append(Vector2(x,y))
else:
array.append(Vector2(x,y))
return array



# Clamp inside map
# if clampInsideMap == true:
# beginTile.x = clamp(beginTile.x, oEditor.fieldBoundary.position.x, oEditor.fieldBoundary.end.x-1)
# beginTile.y = clamp(beginTile.y, oEditor.fieldBoundary.position.y, oEditor.fieldBoundary.end.y-1)
# endTile.x = clamp(endTile.x, oEditor.fieldBoundary.position.x, oEditor.fieldBoundary.end.x-1)
# endTile.y = clamp(endTile.y, oEditor.fieldBoundary.position.y, oEditor.fieldBoundary.end.y-1)

4 changes: 4 additions & 0 deletions Scenes/EditBrushSizeValue.gd
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@ onready var oMapSettingsWindow = Nodelist.list["oMapSettingsWindow"]
onready var oMapBrowser = Nodelist.list["oMapBrowser"]
onready var oColumnEditor = Nodelist.list["oColumnEditor"]
onready var oSlabsetWindow = Nodelist.list["oSlabsetWindow"]
onready var oSelector = Nodelist.list["oSelector"]


func _ready():
get_line_edit().expand_to_text_length = true


func _input(event):
if visible == false: return
if event is InputEventKey and event.pressed == true:
Expand All @@ -19,6 +22,7 @@ func _input(event):
if oMapBrowser.visible == true: return
if oColumnEditor.visible == true: return
if oSlabsetWindow.visible == true: return
if oSelector.mode == oSelector.MODE_SUBTILE: return

yield(get_tree(),'idle_frame')
if oPropertiesTabs.current_tab != 1: return
Expand Down
2 changes: 2 additions & 0 deletions Scenes/EditingMode.gd
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ onready var oPropertiesWindow = Nodelist.list["oPropertiesWindow"]
onready var oThingDetails = Nodelist.list["oThingDetails"]
onready var oModeSwitchButton = Nodelist.list["oModeSwitchButton"]
onready var oPlacingSettings = Nodelist.list["oPlacingSettings"]
onready var oBrushPreview = Nodelist.list["oBrushPreview"]

func _ready():
get_viewport().connect("size_changed",self, "_on_viewport_size_changed")
Expand All @@ -29,6 +30,7 @@ func _on_ModeSwitchButton_pressed():
oSelector.change_mode(oSelector.MODE_TILE) # will also call switch_mode in here

oPlacingSettings.editing_mode_was_switched(oModeSwitchButton.text)
oBrushPreview.update_img()

func switch_mode(string): # Called from oSelection too
if is_instance_valid(oPickSlabWindow) == false: return
Expand Down
16 changes: 13 additions & 3 deletions Scenes/EditingTools.gd
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
extends VBoxContainer
onready var oToolPencil = Nodelist.list["oToolPencil"]
onready var oBrushSizeContainer = Nodelist.list["oBrushSizeContainer"]
onready var oBrushPreview = Nodelist.list["oBrushPreview"]
onready var oFillUseDisplay = Nodelist.list["oFillUseDisplay"]

var BRUSH_SIZE = 1

Expand All @@ -17,30 +19,38 @@ func _on_ToolBrush_toggled(button_pressed):
TOOL_SELECTED = BRUSH
oBrushSizeContainer.visible = true
oBrushSizeContainer.get_node("Label").text = "Brush size"
oBrushPreview.update_img()
oFillUseDisplay.visible = false

func _on_ToolPencil_toggled(button_pressed):
TOOL_SELECTED = PENCIL
oBrushSizeContainer.visible = true
oBrushSizeContainer.get_node("Label").text = "Pencil size"
oBrushPreview.update_img()
oFillUseDisplay.visible = false

func _on_ToolRectangle_toggled(button_pressed):
TOOL_SELECTED = RECTANGLE
oBrushSizeContainer.visible = false

oBrushPreview.update_img()
oFillUseDisplay.visible = false

func _on_ToolPaintBucket_toggled(button_pressed):
TOOL_SELECTED = PAINTBUCKET
oBrushSizeContainer.visible = false

oBrushPreview.update_img()
oFillUseDisplay.visible = true

func switched_to_slab_mode():
visible = true

func switched_to_thing_mode():
oToolPencil.pressed = true
visible = false
oFillUseDisplay.visible = false


func _on_EditBrushSizeValue_value_changed(value):
BRUSH_SIZE = value

yield(get_tree(),'idle_frame')
oBrushPreview.update_img()
1 change: 1 addition & 0 deletions Scenes/GamePaths.gd
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ func set_paths(path):
oKeeperFXDetection.text = "KeeperFX not detected"
oKeeperFXDetection.set("custom_colors/font_color", Color(1.0,0.5,0.5,1))
oKeeperFXDetection.visible = true
reconstruct_command_line()

func _on_CmdLineDkCommands_text_changed(new_text):
Settings.set_setting("dk_commands", new_text)
Expand Down
68 changes: 37 additions & 31 deletions Scenes/Instances.gd
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,9 @@ func mirror_adjusted_value(instanceBeingAdjusted, variableNameToAdjust):
"doorLocked":
getNodeAtMirroredPosition.doorLocked = instanceBeingAdjusted.doorLocked
instanceBeingAdjusted.toggle_spinning_key()
"ownership":
var finalOwner = calculate_mirrored_ownership(toPos, fromPos, fieldX, fieldY, instanceBeingAdjusted.ownership)
getNodeAtMirroredPosition.ownership = finalOwner

func mirror_deletion_of_instance(instanceBeingDeleted):
var actions = []
Expand Down Expand Up @@ -148,43 +151,46 @@ func mirror_instance_placement(newThingType, newSubtype, fromPos, newOwner, mirr

placedInstances += 1

var quadrantDestination = oMirrorOptions.get_quadrant(toPos, fieldX, fieldY)
var quadrantClickedOn = oMirrorOptions.get_quadrant(fromPos, fieldX, fieldY)
var quadrantDestinationOwner = oMirrorOptions.ownerValue[quadrantDestination]
var quadrantClickedOnOwner = oMirrorOptions.ownerValue[quadrantClickedOn]

var mainPaint = newOwner
var finalOwner = 5

if oMirrorOptions.ui_quadrants_have_owner(mainPaint) == false:
finalOwner = mainPaint
else:
if mainPaint == quadrantDestinationOwner:
finalOwner = quadrantClickedOnOwner
else:
match oMirrorOptions.splitType:
0,1:
finalOwner = quadrantDestinationOwner
2:
var otherTwoQuadrants = []
for i in 4:
if oMirrorOptions.ownerValue[i] == quadrantClickedOnOwner: continue
if oMirrorOptions.ownerValue[i] == mainPaint: continue
otherTwoQuadrants.append(oMirrorOptions.ownerValue[i])

if otherTwoQuadrants.size() == 2:
if quadrantDestinationOwner == otherTwoQuadrants[0]:
finalOwner = otherTwoQuadrants[1]
else:
finalOwner = otherTwoQuadrants[0]
else:
finalOwner = quadrantDestinationOwner
var finalOwner = calculate_mirrored_ownership(toPos, fromPos, fieldX, fieldY, newOwner)

match mirrorType:
MIRROR_THING: place_new_thing(newThingType, newSubtype, toPos, finalOwner)
MIRROR_LIGHT: place_new_light(newThingType, newSubtype, toPos, finalOwner)
MIRROR_ACTIONPOINT: place_new_action_point(newThingType, newSubtype, toPos, finalOwner)

func calculate_mirrored_ownership(toPos, fromPos, fieldX, fieldY, mainPaint):
var quadrantDestination = oMirrorOptions.get_quadrant(toPos, fieldX, fieldY)
var quadrantClickedOn = oMirrorOptions.get_quadrant(fromPos, fieldX, fieldY)
var quadrantDestinationOwner = oMirrorOptions.ownerValue[quadrantDestination]
var quadrantClickedOnOwner = oMirrorOptions.ownerValue[quadrantClickedOn]

var finalOwner = 5

if oMirrorOptions.ui_quadrants_have_owner(mainPaint) == false:
finalOwner = mainPaint
else:
if mainPaint == quadrantDestinationOwner:
finalOwner = quadrantClickedOnOwner
else:
match oMirrorOptions.splitType:
0,1:
finalOwner = quadrantDestinationOwner
2:
var otherTwoQuadrants = []
for i in 4:
if oMirrorOptions.ownerValue[i] == quadrantClickedOnOwner: continue
if oMirrorOptions.ownerValue[i] == mainPaint: continue
otherTwoQuadrants.append(oMirrorOptions.ownerValue[i])

if otherTwoQuadrants.size() == 2:
if quadrantDestinationOwner == otherTwoQuadrants[0]:
finalOwner = otherTwoQuadrants[1]
else:
finalOwner = otherTwoQuadrants[0]
else:
finalOwner = quadrantDestinationOwner
return finalOwner

func place_new_thing(newThingType, newSubtype, newPosition, newOwnership): # Placed by hand
var CODETIME_START = OS.get_ticks_msec()
var xSlab = floor(newPosition.x / 3)
Expand Down
Loading

0 comments on commit 81c3bc8

Please sign in to comment.