~kmdodrill/dungeonyx

09eb95265d82278d3bc1b9b018564668ec249f4e — Kenneth Dodrill 2 years ago 923eeae
Add rest of sound effects. Fix TIAR AI
M README.md => README.md +8 -0
@@ 2,3 2,11 @@

a short dungeon adventure game that uses only the nyx8 palette.

[get the game](https://stormkmd.itch.io/dungeonyx)

credits:

this game was made using the Godot game engine, licensed as MIT.

some of the sound effects used were done by [artisticdude on OGA](https://opengameart.org/content/inventory-sound-effects).


M src/Game.tscn => src/Game.tscn +6 -0
@@ 31,6 31,7 @@ pause_mode = 2
layer = 2

[node name="MainMenuContainer" type="MarginContainer" parent="MainScreen"]
visible = false
anchor_right = 1.0
anchor_bottom = 1.0
__meta__ = {


@@ 118,6 119,7 @@ size_flags_vertical = 3
[node name="GUI" type="CanvasLayer" parent="."]

[node name="TextContainerBackground" type="TextureRect" parent="GUI"]
visible = false
show_behind_parent = true
anchor_top = 0.75
anchor_right = 1.0


@@ 130,6 132,7 @@ __meta__ = {

[node name="TextContainer" type="MarginContainer" parent="GUI"]
pause_mode = 2
visible = false
anchor_left = 0.016
anchor_top = 0.766
anchor_right = 0.984


@@ 189,6 192,7 @@ margin_bottom = 4.0
text = "test2"

[node name="ItemsContainer" type="MarginContainer" parent="GUI"]
visible = false
anchor_left = 0.75
anchor_right = 1.0
anchor_bottom = 0.75


@@ 233,6 237,7 @@ margin_bottom = 48.0
texture = ExtResource( 12 )

[node name="GameContainer" type="CenterContainer" parent="GUI"]
visible = false
anchor_right = 0.75
anchor_bottom = 0.75
margin_right = -3.8147e-06


@@ 247,6 252,7 @@ margin_bottom = 48.0
texture = ExtResource( 10 )

[node name="CompassContainer" type="CenterContainer" parent="GUI"]
visible = false
anchor_top = 0.125
anchor_right = 0.125
anchor_bottom = 0.25

M src/Player/Player.gd => src/Player/Player.gd +3 -0
@@ 4,6 4,7 @@ onready var game: Game = get_tree().root.get_node("Game")
onready var text_container: TextContainer = get_tree().root.get_node("Game/GUI/TextContainer")
onready var items_container: ItemsContainer = get_tree().root.get_node("Game/GUI/ItemsContainer")
onready var compass_texture: TextureRect = get_tree().root.get_node("Game/GUI/CompassContainer/Compass")
onready var sfx_player: AudioStreamPlayer = get_tree().root.get_node("Game/SFXPlayer")

var compass = [
    "north",


@@ 47,6 48,7 @@ func take(item: String):
            Map.replace_space("4", "W")
        "game":
            Map.replace_space("5", "T")
    sfx_player.get_item(item)

func kill():
    yield(get_tree().create_timer(2), "timeout")


@@ 55,6 57,7 @@ func kill():
        text_container.display_text("You don't have anything to kill him with.")
        get_tree().paused = false
        return
    sfx_player.kill()
    text_container.display_text("You kill the guard. His blood is all over you.")
    yield(get_tree().create_timer(3), "timeout")
    game.end("kill")

M src/ThreeInARow.gd => src/ThreeInARow.gd +16 -12
@@ 19,6 19,9 @@ var winnable_conditions = [
]
var current_turn = "player"

func _ready():
    start()

func start():
    show()



@@ 34,34 37,35 @@ func end(player: String):
            game.end("lost")

func next_turn():
    check_won()
    if check_won():
        return

    match current_turn:
        "player":
            Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN)
            current_turn = "guard"
            yield(get_tree().create_timer(2), "timeout")
            play_guard_turn()
        "guard":
            Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
            current_turn = "player"

func play_guard_turn():
    yield(get_tree().create_timer(2), "timeout")
    var random_number = randi() % 8
    print(random_number)
    # Select a random position that is not already taken by the player.
    for position in piece_positions.get_children():
        if random_number >= 0:
            random_number -= 1
            continue
        if position.played():
            continue
        position.play_piece()

    var position = piece_positions.get_child(random_number)
    if position.played():
        play_guard_turn()
        return
    position.play_piece()

func check_won():
func check_won() -> bool:
    for condition in winnable_conditions:
        if ArrayHelper.array_has_subarray(condition, player_pieces):
            end("player")
            return true
        if ArrayHelper.array_has_subarray(condition, guard_pieces):
            end("guard")
            return true

    return false

M src/UI/ThreeInARowArea.gd => src/UI/ThreeInARowArea.gd +4 -1
@@ 3,6 3,7 @@ extends Area2D
onready var three_in_a_row: ThreeInARow = get_parent().get_parent()
onready var player_piece = ResourceLoader.load("res://assets/art/three-in-a-row/player-circle.png")
onready var guard_piece = ResourceLoader.load("res://assets/art/three-in-a-row/guard-circle.png")
onready var sfx_player: AudioStreamPlayer = get_tree().root.get_node("Game/SFXPlayer")
onready var sprite: Sprite = $Sprite

func _ready():


@@ 16,8 17,9 @@ func play_piece():
    sprite.show()
    three_in_a_row.guard_pieces.append(get_index())
    three_in_a_row.next_turn()
    sfx_player.place_piece("guard")

func _on_ThreeInARowArea_input_event(viewport, event, shape_idx):
func _on_ThreeInARowArea_input_event(_viewport, event, _shape_idx):
    if three_in_a_row.current_turn != "player":
        return



@@ 26,3 28,4 @@ func _on_ThreeInARowArea_input_event(viewport, event, shape_idx):
        sprite.show()
        three_in_a_row.player_pieces.append(get_index())
        three_in_a_row.next_turn()
        sfx_player.place_piece("player")

M src/Utilities/Map.gd => src/Utilities/Map.gd +3 -0
@@ 46,6 46,9 @@ func init_player_position():
        return

func replace_space(space_to_replace: String, replacer: String):
    if space_to_replace == "C":
        sfx_player.open_chest()

    for line in map:
        var space_index = line.find(space_to_replace)
        if space_index == -1:

M src/Utilities/SFXPlayer.gd => src/Utilities/SFXPlayer.gd +25 -0
@@ 2,6 2,10 @@ extends AudioStreamPlayer

onready var door_open = ResourceLoader.load("res://assets/sfx/door-open.wav")
onready var door_close = ResourceLoader.load("res://assets/sfx/door-close.wav")
onready var chest_open = ResourceLoader.load("res://assets/sfx/chest.wav")
onready var kill_sound = ResourceLoader.load("res://assets/sfx/kill.wav")
onready var player_piece = ResourceLoader.load("res://assets/sfx/three-in-a-row/player-piece.wav")
onready var guard_piece = ResourceLoader.load("res://assets/sfx/three-in-a-row/guard-piece.wav")

func open_door():
    stream = door_open


@@ 10,3 14,24 @@ func open_door():
func close_door():
    stream = door_close
    play()

func open_chest():
    stream = chest_open
    play()

func kill():
    stream = kill_sound
    play()

func place_piece(player: String):
    match player:
        "player":
            stream = player_piece
            play()
        "guard":
            stream = guard_piece
            play()

func get_item(item: String):
    stream = ResourceLoader.load("res://assets/sfx/items/" + item + ".wav")
    play()