commit 7eed16cd022e32e643285055ef9b9d2cd3df6659 Author: hzhang Date: Fri Jun 21 20:57:19 2024 +0800 ini diff --git a/.gitattributes b/.gitattributes new file mode 100755 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..7de8ea5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# Godot 4+ specific ignores +.godot/ +android/ diff --git a/.idea/.idea.VirtualChemDemo/.idea/.gitignore b/.idea/.idea.VirtualChemDemo/.idea/.gitignore new file mode 100755 index 0000000..6e5e29f --- /dev/null +++ b/.idea/.idea.VirtualChemDemo/.idea/.gitignore @@ -0,0 +1,13 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Rider ignored files +/projectSettingsUpdater.xml +/modules.xml +/contentModel.xml +/.idea.VirtualChemDemo.iml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/.idea.VirtualChemDemo/.idea/encodings.xml b/.idea/.idea.VirtualChemDemo/.idea/encodings.xml new file mode 100755 index 0000000..df87cf9 --- /dev/null +++ b/.idea/.idea.VirtualChemDemo/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/.idea.VirtualChemDemo/.idea/indexLayout.xml b/.idea/.idea.VirtualChemDemo/.idea/indexLayout.xml new file mode 100755 index 0000000..7b08163 --- /dev/null +++ b/.idea/.idea.VirtualChemDemo/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/.idea.VirtualChemDemo/.idea/vcs.xml b/.idea/.idea.VirtualChemDemo/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/.idea.VirtualChemDemo/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Assets/Atom.png b/Assets/Atom.png new file mode 100755 index 0000000..03eef74 Binary files /dev/null and b/Assets/Atom.png differ diff --git a/Assets/Atom.png.import b/Assets/Atom.png.import new file mode 100755 index 0000000..051f9fd --- /dev/null +++ b/Assets/Atom.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dwdq5w17xjv18" +path="res://.godot/imported/Atom.png-82387415c8a4b737bd2c35a7fc20bb08.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Atom.png" +dest_files=["res://.godot/imported/Atom.png-82387415c8a4b737bd2c35a7fc20bb08.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 diff --git a/Assets/Bottle.png b/Assets/Bottle.png new file mode 100755 index 0000000..9861c9d Binary files /dev/null and b/Assets/Bottle.png differ diff --git a/Assets/Bottle.png.import b/Assets/Bottle.png.import new file mode 100755 index 0000000..b64decd --- /dev/null +++ b/Assets/Bottle.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dnfv1cab4fbb1" +path="res://.godot/imported/Bottle.png-5cc68d0152334bdf774876c7b2f304da.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Bottle.png" +dest_files=["res://.godot/imported/Bottle.png-5cc68d0152334bdf774876c7b2f304da.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 diff --git a/Assets/ConnectPendingAtom.png b/Assets/ConnectPendingAtom.png new file mode 100755 index 0000000..4e43597 Binary files /dev/null and b/Assets/ConnectPendingAtom.png differ diff --git a/Assets/ConnectPendingAtom.png.import b/Assets/ConnectPendingAtom.png.import new file mode 100755 index 0000000..fbf8c8a --- /dev/null +++ b/Assets/ConnectPendingAtom.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b5rdjefwmh10t" +path="res://.godot/imported/ConnectPendingAtom.png-20c452cc3a92c27df01519b154992d5c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/ConnectPendingAtom.png" +dest_files=["res://.godot/imported/ConnectPendingAtom.png-20c452cc3a92c27df01519b154992d5c.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 diff --git a/Assets/Content.png b/Assets/Content.png new file mode 100755 index 0000000..8abfaa9 Binary files /dev/null and b/Assets/Content.png differ diff --git a/Assets/Content.png.import b/Assets/Content.png.import new file mode 100755 index 0000000..731b7db --- /dev/null +++ b/Assets/Content.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://daq4xhxh3x5s8" +path="res://.godot/imported/Content.png-8bacee953efbc1db37a83269b1f6ac9f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Content.png" +dest_files=["res://.godot/imported/Content.png-8bacee953efbc1db37a83269b1f6ac9f.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 diff --git a/Assets/Flask.png b/Assets/Flask.png new file mode 100755 index 0000000..03ee070 Binary files /dev/null and b/Assets/Flask.png differ diff --git a/Assets/Flask.png.import b/Assets/Flask.png.import new file mode 100755 index 0000000..79f3807 --- /dev/null +++ b/Assets/Flask.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://chx2yte05x4lj" +path="res://.godot/imported/Flask.png-e92b272abe676f7b1b1836b6e73ea766.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Flask.png" +dest_files=["res://.godot/imported/Flask.png-e92b272abe676f7b1b1836b6e73ea766.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 diff --git a/Assets/FlaskContent.png b/Assets/FlaskContent.png new file mode 100755 index 0000000..e25f475 Binary files /dev/null and b/Assets/FlaskContent.png differ diff --git a/Assets/FlaskContent.png.import b/Assets/FlaskContent.png.import new file mode 100755 index 0000000..fd72a22 --- /dev/null +++ b/Assets/FlaskContent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bcly47aut0nc4" +path="res://.godot/imported/FlaskContent.png-c312b67a447fe1f204fda81bc9550539.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/FlaskContent.png" +dest_files=["res://.godot/imported/FlaskContent.png-c312b67a447fe1f204fda81bc9550539.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 diff --git a/Assets/FlaskSeperator.png b/Assets/FlaskSeperator.png new file mode 100755 index 0000000..55de6fe Binary files /dev/null and b/Assets/FlaskSeperator.png differ diff --git a/Assets/FlaskSeperator.png.import b/Assets/FlaskSeperator.png.import new file mode 100755 index 0000000..56e7d1c --- /dev/null +++ b/Assets/FlaskSeperator.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b5g6vjintef0" +path="res://.godot/imported/FlaskSeperator.png-420534126e054a5f806c5803d478669e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/FlaskSeperator.png" +dest_files=["res://.godot/imported/FlaskSeperator.png-420534126e054a5f806c5803d478669e.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 diff --git a/GlobalAccess/GlobalScene.cs b/GlobalAccess/GlobalScene.cs new file mode 100755 index 0000000..6dfe167 --- /dev/null +++ b/GlobalAccess/GlobalScene.cs @@ -0,0 +1,11 @@ +public static class GlobalScene +{ + public static MainScene MainScene { get; set; } + public static CompoundConstructor CompoundConstructor { get; set; } + public static VirtualChemDemo Demo { get; set; } + public static MainControlPanel MainControlPanel { get; set; } + public static Flask Flask { get; set; } + + public static StringLoader StringLoader { get; set; } +} + diff --git a/Scenes/AddAtom.cs b/Scenes/AddAtom.cs new file mode 100755 index 0000000..3a173a0 --- /dev/null +++ b/Scenes/AddAtom.cs @@ -0,0 +1,31 @@ +using Godot; +using VirtualChemistry.Constants; + +public partial class AddAtom : MenuButton +{ + public CompoundConstructor CompoundConstructor => GlobalScene.CompoundConstructor; + + private void BuildMenu() + { + PopupMenu menu = GetPopup(); + menu.Clear(); + foreach (var w in menu.GetSignalConnectionList(PopupMenu.SignalName.IdPressed)) + menu.Disconnect(PopupMenu.SignalName.IdPressed, w["callable"].AsCallable()); + for (int i = 1; i <= 15; i++) + menu.AddItem(ChemistryConstant.ElementSymbols[i-1], i); + menu.Connect(PopupMenu.SignalName.IdPressed, Callable.From((int idx) => MenuHandle(idx))); + } + + private void MenuHandle(int idx) => CompoundConstructor.AddAtomOf(idx); + + // Called when the node enters the scene tree for the first time. + public override void _Ready() + { + BuildMenu(); + } + + // Called every frame. 'delta' is the elapsed time since the previous frame. + public override void _Process(double delta) + { + } +} diff --git a/Scenes/Atom.cs b/Scenes/Atom.cs new file mode 100755 index 0000000..81a59a4 --- /dev/null +++ b/Scenes/Atom.cs @@ -0,0 +1,31 @@ +using Godot; +using VirtualChemistry.Chemistry.Atoms.Implements; + +public partial class Atom : TextureRect +{ + private Sprite2D ConnectPending { get; set; } + private Label PendingBond { get; set; } + public BaseAtom BaseAtom { get; set; } = BaseAtom.Null; + private Label ElementName { get; set; } + public AtomActions AtomActions { get; set; } + + // Called when the node enters the scene tree for the first time. + public override void _Ready() + { + ElementName = GetNode