Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
2d60cb4
Add Melanchall.DryWetMidi
collectioncard Feb 4, 2025
8cc7c05
[WIP] Add initial support for midi reading
collectioncard Feb 11, 2025
f93bb64
Add midi test files
collectioncard Feb 14, 2025
88e3fe3
Adding Reading visual notes from midi
LifeHckr Feb 14, 2025
ddf5ab7
Visual Update
LifeHckr Feb 20, 2025
dfa7550
Make make navigateable with keys
LifeHckr Feb 21, 2025
1412851
added heal note
cornerloan Feb 21, 2025
c53c06c
Add csharp stuff to gitignore
collectioncard Feb 21, 2025
7595ae4
Refactoring for map room types
LifeHckr Feb 21, 2025
7a93dc4
Remove dotsettings from repo
collectioncard Feb 21, 2025
5276383
Refactoring for map room types
LifeHckr Feb 21, 2025
3a11a5b
Merge branch 'Robust-Map' of https://github.com/Project-Funk-Engine/P…
LifeHckr Feb 21, 2025
fdcac57
Add star shader to battle scene
collectioncard Feb 21, 2025
fbdbaf7
Add blood droplets to enemy 1
collectioncard Feb 21, 2025
af12534
added vampire note
cornerloan Feb 21, 2025
0f950db
added quarter note
cornerloan Feb 21, 2025
0626651
Merge branch 'new-note-types' into game_beautification
cornerloan Feb 22, 2025
5471c93
Add gradient and timescale modifier to star shader
collectioncard Feb 23, 2025
df12691
Removed old looping Backgrounds
LifeHckr Feb 24, 2025
6f7bc92
added art to placed notes
cornerloan Feb 24, 2025
1f003c2
Merge pull request #73 from Project-Funk-Engine/game_beautification
LifeHckr Feb 24, 2025
0ee00a4
Refactored quarter note
LifeHckr Feb 24, 2025
9815194
Merge branch 'Sprint-3' into player-notes-art
LifeHckr Feb 24, 2025
35ba1e7
Merge pull request #74 from Project-Funk-Engine/player-notes-art
LifeHckr Feb 24, 2025
8678563
Refactoring note sprites
LifeHckr Feb 24, 2025
2aaaf78
Chest Room finished
LifeHckr Feb 22, 2025
7aa6bf1
Added room transition animation
LifeHckr Feb 22, 2025
e3841cc
Added loop marker
LifeHckr Feb 24, 2025
5676fc7
Update frame
LifeHckr Feb 24, 2025
4936f27
Make Loopable visible before battle start
LifeHckr Feb 24, 2025
9958590
Merge pull request #75 from Project-Funk-Engine/Robust-Map
LifeHckr Feb 24, 2025
d9bae26
Create Remap.tscn
Rmojarro1 Feb 21, 2025
2b75171
Remapping for arrow, WASD, QWER
Rmojarro1 Feb 24, 2025
ed934a3
Icons and fix default
Rmojarro1 Feb 24, 2025
ba77149
Oops my bad
LifeHckr Feb 25, 2025
0ca318e
Merge pull request #76 from Project-Funk-Engine/Remap_Menu
LifeHckr Feb 25, 2025
12f211c
Fix merge and integration issues with remap menu
LifeHckr Feb 25, 2025
f75b4d5
Added 2 new on loop relics. From now on riff == loop
LifeHckr Feb 26, 2025
e383446
WIP changes, needs lots of improvement
Rmojarro1 Feb 26, 2025
638577c
Added some juice to NPB
LifeHckr Feb 26, 2025
d0099b2
added second song
cornerloan Feb 26, 2025
f32dffd
Merge branch 'Sprint-3' into Midi-Readin
cornerloan Feb 26, 2025
60f25e5
added song templates to scribe
cornerloan Feb 26, 2025
6a31079
Added particles that emit on hits
Rmojarro1 Feb 26, 2025
9748ae9
Particles for full bar
Rmojarro1 Feb 27, 2025
74b3e15
Make song play based on SongTemplate
LifeHckr Feb 27, 2025
ae27013
Prepping for multiple battles
LifeHckr Feb 27, 2025
891e11f
Fixed MM GetStartTimeSeconds
LifeHckr Feb 27, 2025
6ed4ff5
added third song, does not loop
cornerloan Feb 27, 2025
29756a2
Added randomly chosen battles
LifeHckr Feb 27, 2025
524505b
Updated map icons
LifeHckr Feb 27, 2025
42c1277
Added note reward functions
LifeHckr Feb 27, 2025
848bca8
Added particle effects for bar
Rmojarro1 Feb 27, 2025
988fd97
Tweaks and refactoring
LifeHckr Feb 27, 2025
ae42dc9
Merge branch 'Sprint-3' into Note_Feedback
LifeHckr Feb 27, 2025
31e6304
Merge pull request #77 from Project-Funk-Engine/Note_Feedback
LifeHckr Feb 27, 2025
730381c
Merge remote-tracking branch 'origin/Sprint-3' into RelicNJuice
LifeHckr Feb 27, 2025
beee83e
Reload in editor
LifeHckr Feb 27, 2025
5e04b03
Merge pull request #78 from Project-Funk-Engine/RelicNJuice
LifeHckr Feb 27, 2025
9f0068f
Migrate to ogg audio files for smaller builds
collectioncard Feb 27, 2025
ab4146a
Fix reward selection
LifeHckr Feb 27, 2025
dcf7442
Merge branch 'Sprint-3' into Midi-Readin
LifeHckr Feb 27, 2025
c67fe34
Merge pull request #79 from Project-Funk-Engine/Midi-Readin
LifeHckr Feb 27, 2025
0863351
Fix song looping
collectioncard Feb 27, 2025
bb0fd08
Fix audio dependency change
LifeHckr Feb 27, 2025
ddb029c
Fix case mismatch Song1
LifeHckr Feb 27, 2025
e3e7c12
Add star shader to chest scene note area
collectioncard Feb 27, 2025
1064d9e
Change menu opacity
LifeHckr Feb 27, 2025
bd3ec35
Added playtestability
LifeHckr Feb 28, 2025
02938e8
Post playtest initial revisions
LifeHckr Feb 28, 2025
f04f5c7
Tweak rempa for clarity
LifeHckr Mar 1, 2025
e1d9615
Remap grabs focus for buttons
LifeHckr Mar 1, 2025
35a6667
Make start button clearer
LifeHckr Mar 1, 2025
1edc750
Add missing contributors
collectioncard Mar 1, 2025
5bbf483
Merge remote-tracking branch 'origin/Sprint-3' into Sprint-3
collectioncard Mar 1, 2025
c323388
Start work on title screen
collectioncard Mar 1, 2025
056fbf6
Continue working on title screen
collectioncard Mar 2, 2025
f4c4e15
Re-Add secondary input map
LifeHckr Mar 2, 2025
20d8108
Add note particles to title screen
collectioncard Mar 2, 2025
c13cbb3
Added clearer win/lose screens
LifeHckr Mar 2, 2025
6bd4acc
Added end win screen
LifeHckr Mar 2, 2025
07aeca2
Merge pull request #80 from Project-Funk-Engine/WinLoseFeedback
LifeHckr Mar 2, 2025
8401eb0
Add music persistent across scenes
collectioncard Mar 3, 2025
78f1d1e
Switch title screen music to ogg
collectioncard Mar 3, 2025
f5a3e48
Add title screen lighting
LifeHckr Mar 3, 2025
4e44b15
Cool wave effect
LifeHckr Mar 3, 2025
24900f8
Add menu music & Jarod's menu tweaks I guess
collectioncard Mar 3, 2025
3b81e7b
Merge branch 'Sprint-3' into mainMenu
LifeHckr Mar 3, 2025
407be5a
Merge pull request #82 from Project-Funk-Engine/mainMenu
LifeHckr Mar 3, 2025
b4f8023
Enemy effects and Scalable relics
LifeHckr Mar 2, 2025
5161e01
Add title screen font attribution
collectioncard Mar 3, 2025
584ff14
Merge pull request #83 from Project-Funk-Engine/IDK_Im_Testing_Things
LifeHckr Mar 3, 2025
31db455
Light map texture attribution
LifeHckr Mar 3, 2025
4df9a60
Removing some debug and print statements
LifeHckr Mar 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,6 @@


.idea/.idea.Funk Engine/.idea/

*.DotSettings.user
export_presets.cfg
Binary file removed Audio/335571__magntron__gamemusic_120bpm.mp3
Binary file not shown.
19 changes: 0 additions & 19 deletions Audio/335571__magntron__gamemusic_120bpm.mp3.import

This file was deleted.

Binary file added Audio/Song1.ogg
Binary file not shown.
19 changes: 19 additions & 0 deletions Audio/Song1.ogg.import
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[remap]

importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://iq0xxe5cggs8"
path="res://.godot/imported/Song1.ogg-1d785b9ae3fbaa8393048e39af66ed86.oggvorbisstr"

[deps]

source_file="res://Audio/Song1.ogg"
dest_files=["res://.godot/imported/Song1.ogg-1d785b9ae3fbaa8393048e39af66ed86.oggvorbisstr"]

[params]

loop=true
loop_offset=0.0
bpm=0.0
beat_count=0
bar_beats=4
Binary file added Audio/Song2.ogg
Binary file not shown.
19 changes: 19 additions & 0 deletions Audio/Song2.ogg.import
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[remap]

importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://ckis6k6vuums"
path="res://.godot/imported/Song2.ogg-b95c04f3512de6fa42e0f9c35aba831f.oggvorbisstr"

[deps]

source_file="res://Audio/Song2.ogg"
dest_files=["res://.godot/imported/Song2.ogg-b95c04f3512de6fa42e0f9c35aba831f.oggvorbisstr"]

[params]

loop=true
loop_offset=0.0
bpm=0.0
beat_count=0
bar_beats=4
Binary file added Audio/Song3.ogg
Binary file not shown.
19 changes: 19 additions & 0 deletions Audio/Song3.ogg.import
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[remap]

importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://ceyw5mjkem2pi"
path="res://.godot/imported/Song3.ogg-d4e6a5f1a550561df18989fb495ba591.oggvorbisstr"

[deps]

source_file="res://Audio/Song3.ogg"
dest_files=["res://.godot/imported/Song3.ogg-d4e6a5f1a550561df18989fb495ba591.oggvorbisstr"]

[params]

loop=true
loop_offset=0.0
bpm=0.0
beat_count=0
bar_beats=4
Binary file added Audio/midi/Song1.mid
Binary file not shown.
Binary file added Audio/midi/Song2.mid
Binary file not shown.
Binary file added Audio/midi/Song3.mid
Binary file not shown.
Binary file added Audio/midi/florestan-subset.sf2
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Technically doesn't have to be here until we have actual midi playback implemented but its fine

Binary file not shown.
117 changes: 117 additions & 0 deletions Classes/MidiMaestro/MidiMaestro.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
using System;
using System.Linq;
using FunkEngine;
using Godot;
using Melanchall.DryWetMidi.Core;
using Melanchall.DryWetMidi.Interaction;
using Melanchall.DryWetMidi.Multimedia;

public partial class MidiMaestro : Resource
{
private MidiFile _midiFile;

//The four note rows that we care about
private midiNoteInfo[] _upNotes;
private midiNoteInfo[] _downNotes;
private midiNoteInfo[] _leftNotes;
private midiNoteInfo[] _rightNotes;

//private MidiFile strippedSong;

private SongData songData;

//The path relative to the Audio folder. Will change later
public MidiMaestro(string filePath)
{
if (!OS.HasFeature("editor"))
{
filePath = OS.GetExecutablePath().GetBaseDir() + "/" + filePath;
}

if (!FileAccess.FileExists(filePath))
{
GD.PrintErr("ERROR: Unable to load level Midi file: " + filePath);
}

_midiFile = MidiFile.Read(filePath);
Comment on lines +23 to +36
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Improve error handling for file loading.

The code currently prints an error if the MIDI file doesn't exist but continues execution, which could lead to null reference exceptions later.

 if (!FileAccess.FileExists(filePath))
 {
     GD.PrintErr("ERROR: Unable to load level Midi file: " + filePath);
+    throw new FileNotFoundException($"MIDI file not found: {filePath}");
 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
//The path relative to the Audio folder. Will change later
public MidiMaestro(string filePath)
{
if (!OS.HasFeature("editor"))
{
filePath = OS.GetExecutablePath().GetBaseDir() + "/" + filePath;
}
if (!FileAccess.FileExists(filePath))
{
GD.PrintErr("ERROR: Unable to load level Midi file: " + filePath);
}
_midiFile = MidiFile.Read(filePath);
//The path relative to the Audio folder. Will change later
public MidiMaestro(string filePath)
{
if (!OS.HasFeature("editor"))
{
filePath = OS.GetExecutablePath().GetBaseDir() + "/" + filePath;
}
if (!FileAccess.FileExists(filePath))
{
GD.PrintErr("ERROR: Unable to load level Midi file: " + filePath);
throw new FileNotFoundException($"MIDI file not found: {filePath}");
}
_midiFile = MidiFile.Read(filePath);


//Strip out the notes from the midi file
foreach (var track in _midiFile.GetTrackChunks())
{
string trackName = track.Events.OfType<SequenceTrackNameEvent>().FirstOrDefault()?.Text;
midiNoteInfo[] noteEvents = track
.GetNotes()
.Select(note => new midiNoteInfo(note, _midiFile.GetTempoMap()))
.ToArray();

switch (trackName)
{
case "Up":
_upNotes = noteEvents;
break;
case "Down":
_downNotes = noteEvents;
break;
case "Left":
_leftNotes = noteEvents;
break;
case "Right":
_rightNotes = noteEvents;
break;
}
}
Comment on lines +37 to +62
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Consider handling missing MIDI tracks.

The code assumes that the MIDI file will have tracks named "Up", "Down", "Left", and "Right", but doesn't handle the case where some tracks might be missing.

 foreach (var track in _midiFile.GetTrackChunks())
 {
     string trackName = track.Events.OfType<SequenceTrackNameEvent>().FirstOrDefault()?.Text;
+    if (string.IsNullOrEmpty(trackName))
+    {
+        GD.PrintWarn($"Track without name found in MIDI file, skipping");
+        continue;
+    }
     midiNoteInfo[] noteEvents = track
         .GetNotes()
         .Select(note => new midiNoteInfo(note, _midiFile.GetTempoMap()))
         .ToArray();

     switch (trackName)
     {
         case "Up":
             _upNotes = noteEvents;
             break;
         case "Down":
             _downNotes = noteEvents;
             break;
         case "Left":
             _leftNotes = noteEvents;
             break;
         case "Right":
             _rightNotes = noteEvents;
             break;
+        default:
+            GD.PrintWarn($"Unknown track name '{trackName}' in MIDI file, skipping");
+            break;
     }
 }
+
+// Initialize any missing tracks with empty arrays
+_upNotes ??= Array.Empty<midiNoteInfo>();
+_downNotes ??= Array.Empty<midiNoteInfo>();
+_leftNotes ??= Array.Empty<midiNoteInfo>();
+_rightNotes ??= Array.Empty<midiNoteInfo>();
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
//Strip out the notes from the midi file
foreach (var track in _midiFile.GetTrackChunks())
{
string trackName = track.Events.OfType<SequenceTrackNameEvent>().FirstOrDefault()?.Text;
midiNoteInfo[] noteEvents = track
.GetNotes()
.Select(note => new midiNoteInfo(note, _midiFile.GetTempoMap()))
.ToArray();
switch (trackName)
{
case "Up":
_upNotes = noteEvents;
break;
case "Down":
_downNotes = noteEvents;
break;
case "Left":
_leftNotes = noteEvents;
break;
case "Right":
_rightNotes = noteEvents;
break;
}
}
//Strip out the notes from the midi file
foreach (var track in _midiFile.GetTrackChunks())
{
string trackName = track.Events.OfType<SequenceTrackNameEvent>().FirstOrDefault()?.Text;
if (string.IsNullOrEmpty(trackName))
{
GD.PrintWarn($"Track without name found in MIDI file, skipping");
continue;
}
midiNoteInfo[] noteEvents = track
.GetNotes()
.Select(note => new midiNoteInfo(note, _midiFile.GetTempoMap()))
.ToArray();
switch (trackName)
{
case "Up":
_upNotes = noteEvents;
break;
case "Down":
_downNotes = noteEvents;
break;
case "Left":
_leftNotes = noteEvents;
break;
case "Right":
_rightNotes = noteEvents;
break;
default:
GD.PrintWarn($"Unknown track name '{trackName}' in MIDI file, skipping");
break;
}
}
// Initialize any missing tracks with empty arrays
_upNotes ??= Array.Empty<midiNoteInfo>();
_downNotes ??= Array.Empty<midiNoteInfo>();
_leftNotes ??= Array.Empty<midiNoteInfo>();
_rightNotes ??= Array.Empty<midiNoteInfo>();


//Populate the song data
songData = new SongData
{
//TODO: Allow for changes in this data
Bpm = 120,
//Fudge the numbers a bit if we have a really short song
SongLength =
_midiFile.GetDuration<MetricTimeSpan>().Seconds < 20
? 20
: _midiFile.GetDuration<MetricTimeSpan>().Seconds,
NumLoops = 1,
};
}
Comment on lines +63 to +76
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Extract BPM from MIDI file instead of hardcoding.

The code currently hardcodes the BPM to 120, but it would be better to extract this information from the MIDI file's tempo map.

 //Populate the song data
 songData = new SongData
 {
-    //TODO: Allow for changes in this data
-    Bpm = 120,
+    // Extract BPM from the MIDI file's tempo map
+    Bpm = (int)_midiFile.GetTempoMap().GetTempoAtTime(0).BeatsPerMinute,
     //Fudge the numbers a bit if we have a really short song
     SongLength =
         _midiFile.GetDuration<MetricTimeSpan>().Seconds < 20
             ? 20
             : _midiFile.GetDuration<MetricTimeSpan>().Seconds,
     NumLoops = 1,
 };
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
//Populate the song data
songData = new SongData
{
//TODO: Allow for changes in this data
Bpm = 120,
//Fudge the numbers a bit if we have a really short song
SongLength =
_midiFile.GetDuration<MetricTimeSpan>().Seconds < 20
? 20
: _midiFile.GetDuration<MetricTimeSpan>().Seconds,
NumLoops = 1,
};
}
//Populate the song data
songData = new SongData
{
// Extract BPM from the MIDI file's tempo map
Bpm = (int)_midiFile.GetTempoMap().GetTempoAtTime(0).BeatsPerMinute,
//Fudge the numbers a bit if we have a really short song
SongLength =
_midiFile.GetDuration<MetricTimeSpan>().Seconds < 20
? 20
: _midiFile.GetDuration<MetricTimeSpan>().Seconds,
NumLoops = 1,
};
}


public midiNoteInfo[] GetNotes(ArrowType arrowType)
{
return arrowType switch
{
ArrowType.Up => _upNotes,
ArrowType.Down => _downNotes,
ArrowType.Left => _leftNotes,
ArrowType.Right => _rightNotes,
_ => throw new ArgumentOutOfRangeException(nameof(arrowType), arrowType, null),
};
}

public SongData GetSongData()
{
return songData;
}
}

//A facade to wrap the midi notes. This is a simple class that wraps a Note object from the DryWetMidi library.
public class midiNoteInfo
{
private readonly Melanchall.DryWetMidi.Interaction.Note _note;
private readonly TempoMap _tempoMap;

public midiNoteInfo(Melanchall.DryWetMidi.Interaction.Note note, TempoMap tempoMap)
{
_note = note;
_tempoMap = tempoMap;
}

public long GetStartTimeTicks() => _note.Time;

public float GetStartTimeSeconds() =>
_note.TimeAs<MetricTimeSpan>(_tempoMap).Milliseconds / 1000f
+ _note.TimeAs<MetricTimeSpan>(_tempoMap).Seconds;

public long GetEndTime() => _note.EndTime;

public long GetDuration() => _note.Length;
}
25 changes: 25 additions & 0 deletions Classes/MidiMaestro/SongTemplate.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
namespace FunkEngine.Classes.MidiMaestro;

public partial class SongTemplate
{
public string Name;
public string AudioLocation;
public string MIDILocation;
public string EnemyScenePath;
public SongData SongData;

public SongTemplate(
SongData songData,
string name = "",
string audioLocation = "",
string midiLocation = "",
string enemyScenePath = ""
)
{
Name = name;
AudioLocation = audioLocation;
MIDILocation = midiLocation;
SongData = songData;
EnemyScenePath = enemyScenePath;
}
}
15 changes: 9 additions & 6 deletions Classes/Notes/Note.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,25 @@
* @class Note
* @brief Data structure class for holding data and methods for a battle time note. WIP
*/
public partial class Note : Resource
public partial class Note : Resource, IDisplayable
{
public PuppetTemplate Owner;
public string Name;
public string Name { get; set; }
private int _baseVal;
public float CostModifier { get; private set; }
private Action<BattleDirector, Note, Timing> NoteEffect; //TODO: Where/How to deal with timing.

public string Tooltip;
public Texture2D Texture;
public string Tooltip { get; set; }
public Texture2D Texture { get; set; }

public Note(
string name,
string tooltip,
Texture2D texture = null,
PuppetTemplate owner = null,
int baseVal = 1,
Action<BattleDirector, Note, Timing> noteEffect = null
Action<BattleDirector, Note, Timing> noteEffect = null,
float costModifier = 1.0f
)
{
Name = name;
Expand All @@ -38,6 +40,7 @@ public Note(
_baseVal = baseVal;
Texture = texture;
Tooltip = tooltip;
CostModifier = costModifier;
}

public void OnHit(BattleDirector BD, Timing timing)
Expand All @@ -49,7 +52,7 @@ public Note Clone()
{
//Eventually could look into something more robust, but for now shallow copy is preferable.
//We only would want val and name to be copied by value
Note newNote = new Note(Name, Tooltip, Texture, Owner, _baseVal, NoteEffect);
Note newNote = new Note(Name, Tooltip, Texture, Owner, _baseVal, NoteEffect, CostModifier);
return newNote;
}
}
Binary file added Classes/Notes/assets/heal_note.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
34 changes: 34 additions & 0 deletions Classes/Notes/assets/heal_note.png.import
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
[remap]

importer="texture"
type="CompressedTexture2D"
uid="uid://cdf3g3174du4r"
path="res://.godot/imported/heal_note.png-09ca289a296eee82d33c64101a4e593a.ctex"
metadata={
"vram_texture": false
}

[deps]

source_file="res://Classes/Notes/assets/heal_note.png"
dest_files=["res://.godot/imported/heal_note.png-09ca289a296eee82d33c64101a4e593a.ctex"]

[params]

compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file added Classes/Notes/assets/quarter_note.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
34 changes: 34 additions & 0 deletions Classes/Notes/assets/quarter_note.png.import
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
[remap]

importer="texture"
type="CompressedTexture2D"
uid="uid://uksjoqp7p0gq"
path="res://.godot/imported/quarter_note.png-2b4c9985d99038807abfd63e553c2d6a.ctex"
metadata={
"vram_texture": false
}

[deps]

source_file="res://Classes/Notes/assets/quarter_note.png"
dest_files=["res://.godot/imported/quarter_note.png-2b4c9985d99038807abfd63e553c2d6a.ctex"]

[params]

compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file added Classes/Notes/assets/vampire_note.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
34 changes: 34 additions & 0 deletions Classes/Notes/assets/vampire_note.png.import
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
[remap]

importer="texture"
type="CompressedTexture2D"
uid="uid://dg0lmu0pip4lr"
path="res://.godot/imported/vampire_note.png-4331f817a6feee1f1066a9e9f95934c8.ctex"
metadata={
"vram_texture": false
}

[deps]

source_file="res://Classes/Notes/assets/vampire_note.png"
dest_files=["res://.godot/imported/vampire_note.png-4331f817a6feee1f1066a9e9f95934c8.ctex"]

[params]

compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Loading