diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..0f8f149 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,17 @@ +# Set the default behavior, in case people don't have core.autocrlf set. +* text=auto + +# Explicitly declare text files you want to always be normalized and converted +# to native line endings on checkout. +*.cpp text +*.c text +*.h text +*.gd text +*.cs text + +# Declare files that will always have CRLF line endings on checkout. +*.sln text eol=crlf + +# Denote all files that are truly binary and should not be modified. +*.png binary +*.jpg binary diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6d330c4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +# Import cache +.import/ + +# Binaries +bin/ +build/ +lib/ diff --git a/Grid.gd b/Grid.gd new file mode 100644 index 0000000..0078509 --- /dev/null +++ b/Grid.gd @@ -0,0 +1,64 @@ +extends GridContainer + + +signal grid_completed + + +export var answerGrid = [ + 1, 0, 0, 0, 1, + 0, 0, 0, 0, 0, + 0, 1, 0, 1, 0, + 1, 0, 0, 0, 1, + 1, 1, 0, 1, 1, +] +export var gridSize = { + "col": 5, + "row": 5, +} +var lineHeaders + + +func _ready(): + lineHeaders = get_tree().get_nodes_in_group("LineHeader") + + for header in lineHeaders: + header.connect("line_completed", self, "_lineHeader_completed") + parse_LineHeader_name(header) + + +func _lineHeader_completed(): + var result = true + + for i in range(0, lineHeaders.size()): + if !lineHeaders[i].completed: + result = false + break + + if result: + emit_signal("grid_completed") + +func parse_LineHeader_name(line_header: LineHeader): + var line_type = line_header.name.substr(0, 3) + match line_type: + "Col": + set_LineHeader_col(line_header) + "Row": + set_LineHeader_row(line_header) + _: + print("Error, LineHeader is neither Col nor Row !") + get_tree().quit(1) + + # Check state at default (line content at 0) + line_header._pix_clicked() + + +func set_LineHeader_col(line_header: LineHeader): + var column = int(line_header.name.substr(3)) + var answer = answerGrid.slice(column, gridSize.col * gridSize.row, gridSize.col) + line_header.set_answer_line(answer, "\n") + + +func set_LineHeader_row(line_header: LineHeader): + var row = int(line_header.name.substr(3)) + var answer = answerGrid.slice(row * gridSize.col, row * gridSize.col + gridSize.col - 1) + line_header.set_answer_line(answer, " ") diff --git a/Grid.tscn b/Grid.tscn new file mode 100644 index 0000000..7c017d6 --- /dev/null +++ b/Grid.tscn @@ -0,0 +1,301 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://Pix.tscn" type="PackedScene" id=1] +[ext_resource path="res://LineHeader.tscn" type="PackedScene" id=2] +[ext_resource path="res://Grid.gd" type="Script" id=3] +[ext_resource path="res://HUD.tscn" type="PackedScene" id=4] + +[node name="Grid" type="GridContainer"] +margin_right = 100.0 +margin_bottom = 40.0 +columns = 6 +script = ExtResource( 3 ) +__meta__ = { +"_edit_group_": true, +"_edit_use_anchors_": false +} + +[node name="base" type="Label" parent="."] +margin_top = 8.0 +margin_bottom = 22.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Col0" parent="." instance=ExtResource( 2 )] +margin_left = 4.0 +margin_right = 54.0 +margin_bottom = 31.0 + +[node name="Col1" parent="." instance=ExtResource( 2 )] +margin_left = 58.0 +margin_right = 108.0 +margin_bottom = 31.0 + +[node name="Col2" parent="." instance=ExtResource( 2 )] +margin_left = 112.0 +margin_right = 162.0 +margin_bottom = 31.0 + +[node name="Col3" parent="." instance=ExtResource( 2 )] +margin_left = 166.0 +margin_right = 216.0 +margin_bottom = 31.0 + +[node name="Col4" parent="." instance=ExtResource( 2 )] +margin_left = 220.0 +margin_right = 270.0 +margin_bottom = 31.0 + +[node name="Row0" parent="." instance=ExtResource( 2 )] +margin_top = 44.0 +margin_right = 0.0 +margin_bottom = 75.0 + +[node name="Pix" parent="." groups=[ +"Col0", +"Row0", +] instance=ExtResource( 1 )] +margin_left = 4.0 +margin_top = 35.0 +margin_right = 54.0 +margin_bottom = 85.0 + +[node name="Pix2" parent="." groups=[ +"Col1", +"Row0", +] instance=ExtResource( 1 )] +margin_left = 58.0 +margin_top = 35.0 +margin_right = 108.0 +margin_bottom = 85.0 + +[node name="Pix3" parent="." groups=[ +"Col2", +"Row0", +] instance=ExtResource( 1 )] +margin_left = 112.0 +margin_top = 35.0 +margin_right = 162.0 +margin_bottom = 85.0 + +[node name="Pix4" parent="." groups=[ +"Col3", +"Row0", +] instance=ExtResource( 1 )] +margin_left = 166.0 +margin_top = 35.0 +margin_right = 216.0 +margin_bottom = 85.0 + +[node name="Pix5" parent="." groups=[ +"Col4", +"Row0", +] instance=ExtResource( 1 )] +margin_left = 220.0 +margin_top = 35.0 +margin_right = 270.0 +margin_bottom = 85.0 + +[node name="Row1" parent="." instance=ExtResource( 2 )] +margin_top = 98.0 +margin_right = 0.0 +margin_bottom = 129.0 + +[node name="Pix6" parent="." groups=[ +"Col0", +"Row1", +] instance=ExtResource( 1 )] +margin_left = 4.0 +margin_top = 89.0 +margin_right = 54.0 +margin_bottom = 139.0 + +[node name="Pix7" parent="." groups=[ +"Col1", +"Row1", +] instance=ExtResource( 1 )] +margin_left = 58.0 +margin_top = 89.0 +margin_right = 108.0 +margin_bottom = 139.0 + +[node name="Pix8" parent="." groups=[ +"Col2", +"Row1", +] instance=ExtResource( 1 )] +margin_left = 112.0 +margin_top = 89.0 +margin_right = 162.0 +margin_bottom = 139.0 + +[node name="Pix9" parent="." groups=[ +"Col3", +"Row1", +] instance=ExtResource( 1 )] +margin_left = 166.0 +margin_top = 89.0 +margin_right = 216.0 +margin_bottom = 139.0 + +[node name="Pix10" parent="." groups=[ +"Col4", +"Row1", +] instance=ExtResource( 1 )] +margin_left = 220.0 +margin_top = 89.0 +margin_right = 270.0 +margin_bottom = 139.0 + +[node name="Row2" parent="." instance=ExtResource( 2 )] +margin_top = 152.0 +margin_right = 0.0 +margin_bottom = 183.0 + +[node name="Pix11" parent="." groups=[ +"Col0", +"Row2", +] instance=ExtResource( 1 )] +margin_left = 4.0 +margin_top = 143.0 +margin_right = 54.0 +margin_bottom = 193.0 + +[node name="Pix12" parent="." groups=[ +"Col1", +"Row2", +] instance=ExtResource( 1 )] +margin_left = 58.0 +margin_top = 143.0 +margin_right = 108.0 +margin_bottom = 193.0 + +[node name="Pix13" parent="." groups=[ +"Col2", +"Row2", +] instance=ExtResource( 1 )] +margin_left = 112.0 +margin_top = 143.0 +margin_right = 162.0 +margin_bottom = 193.0 + +[node name="Pix14" parent="." groups=[ +"Col3", +"Row2", +] instance=ExtResource( 1 )] +margin_left = 166.0 +margin_top = 143.0 +margin_right = 216.0 +margin_bottom = 193.0 + +[node name="Pix15" parent="." groups=[ +"Col4", +"Row2", +] instance=ExtResource( 1 )] +margin_left = 220.0 +margin_top = 143.0 +margin_right = 270.0 +margin_bottom = 193.0 + +[node name="Row3" parent="." instance=ExtResource( 2 )] +margin_top = 206.0 +margin_right = 0.0 +margin_bottom = 237.0 + +[node name="Pix16" parent="." groups=[ +"Col0", +"Row3", +] instance=ExtResource( 1 )] +margin_left = 4.0 +margin_top = 197.0 +margin_right = 54.0 +margin_bottom = 247.0 + +[node name="Pix17" parent="." groups=[ +"Col1", +"Row3", +] instance=ExtResource( 1 )] +margin_left = 58.0 +margin_top = 197.0 +margin_right = 108.0 +margin_bottom = 247.0 + +[node name="Pix18" parent="." groups=[ +"Col2", +"Row3", +] instance=ExtResource( 1 )] +margin_left = 112.0 +margin_top = 197.0 +margin_right = 162.0 +margin_bottom = 247.0 + +[node name="Pix19" parent="." groups=[ +"Col3", +"Row3", +] instance=ExtResource( 1 )] +margin_left = 166.0 +margin_top = 197.0 +margin_right = 216.0 +margin_bottom = 247.0 + +[node name="Pix20" parent="." groups=[ +"Col4", +"Row3", +] instance=ExtResource( 1 )] +margin_left = 220.0 +margin_top = 197.0 +margin_right = 270.0 +margin_bottom = 247.0 + +[node name="Row4" parent="." instance=ExtResource( 2 )] +margin_top = 260.0 +margin_right = 0.0 +margin_bottom = 291.0 + +[node name="Pix21" parent="." groups=[ +"Col0", +"Row4", +] instance=ExtResource( 1 )] +margin_left = 4.0 +margin_top = 251.0 +margin_right = 54.0 +margin_bottom = 301.0 + +[node name="Pix22" parent="." groups=[ +"Col1", +"Row4", +] instance=ExtResource( 1 )] +margin_left = 58.0 +margin_top = 251.0 +margin_right = 108.0 +margin_bottom = 301.0 + +[node name="Pix23" parent="." groups=[ +"Col2", +"Row4", +] instance=ExtResource( 1 )] +margin_left = 112.0 +margin_top = 251.0 +margin_right = 162.0 +margin_bottom = 301.0 + +[node name="Pix24" parent="." groups=[ +"Col3", +"Row4", +] instance=ExtResource( 1 )] +margin_left = 166.0 +margin_top = 251.0 +margin_right = 216.0 +margin_bottom = 301.0 + +[node name="Pix25" parent="." groups=[ +"Col4", +"Row4", +] instance=ExtResource( 1 )] +margin_left = 220.0 +margin_top = 251.0 +margin_right = 270.0 +margin_bottom = 301.0 + +[node name="HUD" parent="." instance=ExtResource( 4 )] +[connection signal="grid_completed" from="." to="HUD" method="end_game"] diff --git a/HUD.gd b/HUD.gd new file mode 100644 index 0000000..b00434f --- /dev/null +++ b/HUD.gd @@ -0,0 +1,24 @@ +extends CanvasLayer + + +var score: int + + +# Called when the node enters the scene tree for the first time. +func _ready(): + $ScoreTimer.connect("timeout", self, "_ScoreTimer_timeout") + + +func _ScoreTimer_timeout(): + score += 1 + $Score.text = str(score) + + +func new_game(): + score = 0 + $ScoreTimer.start() + $State.text = "" + +func end_game(): + $ScoreTimer.stop() + $State.text = "VICTIORE" diff --git a/HUD.tscn b/HUD.tscn new file mode 100644 index 0000000..fabd5c0 --- /dev/null +++ b/HUD.tscn @@ -0,0 +1,41 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://assets/fonts/Xolonium-Regular.ttf" type="DynamicFontData" id=1] +[ext_resource path="res://HUD.gd" type="Script" id=2] + +[sub_resource type="DynamicFont" id=1] +size = 25 +font_data = ExtResource( 1 ) + +[node name="HUD" type="CanvasLayer"] +script = ExtResource( 2 ) + +[node name="ScoreTimer" type="Timer" parent="."] +autostart = true + +[node name="Score" type="Label" parent="."] +anchor_left = 1.0 +anchor_right = 1.0 +margin_left = -40.0 +margin_bottom = 31.0 +custom_fonts/font = SubResource( 1 ) +text = "0" +align = 2 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="State" type="Label" parent="."] +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +margin_left = -40.0 +margin_top = -15.5 +margin_bottom = 15.5 +grow_horizontal = 0 +custom_fonts/font = SubResource( 1 ) +align = 2 +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/LineHeader.gd b/LineHeader.gd new file mode 100644 index 0000000..d37a9fc --- /dev/null +++ b/LineHeader.gd @@ -0,0 +1,62 @@ +class_name LineHeader +extends Label + + +signal line_completed + + +var answer_line : Array +var completed := false +var pixList + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pixList = get_tree().get_nodes_in_group(name) + + for pix in pixList: + pix.connect("value_changed", self, "_pix_clicked") + + +func _pix_clicked(): + var result = true + + for i in range(0, pixList.size()): + if answer_line[i] != pixList[i].value && !(answer_line[i] == 0 && pixList[i].value != 1): + result = false + break + + completed = result + + if completed: + emit_signal("line_completed") + + +func set_answer_line(answers : Array, separator : String): + answer_line = answers + + # Add a value at the end of the array to purge the result text + answers.push_back(0) + + var result : String = "" + var count : int = 0 + var last : int = 0 + for value in answers: + if value == 1: + count += 1 + last = 1 + else: + if last != 0: + if !result.empty(): + result += separator + result += str(count) + count = 0 + last = 0 + + # Remove the last value used to purge the result text + answers.pop_back() + + if result.empty(): + text = "0" + else: + text = result diff --git a/LineHeader.tscn b/LineHeader.tscn new file mode 100644 index 0000000..b219641 --- /dev/null +++ b/LineHeader.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://LineHeader.gd" type="Script" id=1] +[ext_resource path="res://assets/fonts/Xolonium-Regular.ttf" type="DynamicFontData" id=2] + +[sub_resource type="DynamicFont" id=1] +size = 25 +font_data = ExtResource( 2 ) + +[node name="LineHeader" type="Label" groups=[ +"LineHeader", +]] +margin_right = 40.0 +margin_bottom = 14.0 +custom_fonts/font = SubResource( 1 ) +align = 1 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/Pix.gd b/Pix.gd new file mode 100644 index 0000000..c786804 --- /dev/null +++ b/Pix.gd @@ -0,0 +1,46 @@ +extends Button + + +signal value_changed + + +export var corner_radius = 5 +var normal_style = StyleBoxFlat.new() +var outline_style = StyleBoxFlat.new() +var value = 0 + + +# Called when the node enters the scene tree for the first time. +func _ready(): + connect("pressed", self, "_on_Pix_pressed") + + normal_style.set_corner_radius_all(corner_radius) + + outline_style.set_corner_radius_all(corner_radius) + outline_style.set_border_width_all(5) + outline_style.set_border_color(Color.webpurple) + + # Set default style + _on_Pix_pressed(true) + + +func _on_Pix_pressed(bypass: bool = false): + if (!bypass): + value = (value + 1) % 2 + + if value == 0: + set_color(Color.blanchedalmond) + else: + set_color(Color.black) + + if (!bypass): + emit_signal("value_changed") + + +func set_color(color): + normal_style.set_bg_color(color) + set("custom_styles/normal", normal_style) + + outline_style.set_bg_color(color) + set("custom_styles/focus", outline_style) + set("custom_styles/hover", outline_style) diff --git a/Pix.tscn b/Pix.tscn new file mode 100644 index 0000000..9ffe4a0 --- /dev/null +++ b/Pix.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://Pix.gd" type="Script" id=1] + +[node name="Pix" type="Button" groups=[ +"Pix", +]] +margin_right = 100.0 +margin_bottom = 100.0 +rect_min_size = Vector2( 50, 50 ) +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..65d9bdc --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# Picross clone made in Godot +This is my first godot game (without counting the tutorial). It was made in a day (counting making the tutorial first) and polished a bit after. It is far from being a complete game since for now there is only one level and the puzzle is hardcoded. + +The objective is to have a level selector and a level editor. The level files could be shared (in JSON ?). +But truly the ojective was learning Godot and see how fast making a game could be (with almost 0 game making experience as a developper). diff --git a/assets/fonts/FONTLOG.txt b/assets/fonts/FONTLOG.txt new file mode 100644 index 0000000..826c7d8 --- /dev/null +++ b/assets/fonts/FONTLOG.txt @@ -0,0 +1,253 @@ +Please distribute this file along with the Xolonium fonts when possible. + + +Source + + Find the sourcefiles of Xolonium at + + + +Credits + + Xolonium is created with FontForge , + Inkscape , Python , and + FontTools . + + It originated as a custom font for the open-source + game Xonotic . With many thanks to the + Xonotic community for your support. + + +Supported OpenType features + + case Provides case sensitive placement of punctuation, + brackets, and math symbols for uppercase text. + frac Replaces number/number sequences with diagonal fractions. + Numbers that touch a slash should not exceed 10 digits. + kern Provides kerning for Latin, Greek, and Cyrillic scripts. + locl Dutch: Replaces j with a stressed version if it follows í. + Sami: Replaces n-form Eng with the preferred N-form version. + Romanian and Moldovan: Replaces ŞşŢţ with the preferred ȘșȚț. + pnum Replaces monospaced digits with proportional versions. + sinf Replaces digits with scientific inferiors below the baseline. + subs Replaces digits with subscript versions on the baseline. + sups Replaces digits with superscript versions. + zero Replaces zero with a slashed version. + + +Supported glyph sets + + Adobe Latin 3 + OpenType W1G + ISO 8859-1 Western European + ISO 8859-2 Central European + ISO 8859-3 South European + ISO 8859-4 North European + ISO 8859-5 Cyrillic + ISO 8859-7 Greek + ISO 8859-9 Turkish + ISO 8859-10 Nordic + ISO 8859-13 Baltic Rim + ISO 8859-14 Celtic + ISO 8859-15 Western European + ISO 8859-16 South-Eastern European + + +Available glyphs + + !"#$%&'()*+,-./0123456789:;<=>? + @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ + `abcdefghijklmnopqrstuvwxyz{|}~ + +  ¡¢£¤¥¦§¨©ª«¬ ®¯°±²³´µ¶·¸¹º»¼½¾¿ + ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞß + àáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ + ĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğ + ĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľ + ĿŀŁłŃńŅņŇňŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞş + ŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽž + ƒǺǻǼǽǾǿȘșȚțȷ + + ˆˇˉ˘˙˚˛˜˝ + + ͺ;΄΅Ά·ΈΉΊΌΎΏΐ + ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫάέήίΰ + αβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ + + ЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОП + РСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп + рстуфхцчшщъыьэюяѐёђѓєѕіїјљњћќѝўџ + ѢѣѲѳѴѵҐґҒғҔҕҖҗҘҙҚқҜҝҞҟҠҡҢңҤҥҦҧҨҩ + ҪҫҬҭҮүҰұҲҳҴҵҶҷҸҹҺһҼҽӀӁӂӇӈӋӌӏӐӑӒӓ + ӔӕӖӗӘәӜӝӞӟӠӡӢӣӤӥӦӧӨөӮӯӰӱӲӳӴӵӶӷӸӹ + Ԥԥ + + ḂḃḊḋḞḟṀṁṖṗṠṡṪṫẀẁẂẃẄẅẞỲỳ + +      ‒–—―‘’‚‛“”„‟†‡•…‰′″‹›‽‾⁄ + ⁰⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿ₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎ + ₤₦₩₫€₯₱₹₺₽₿ + ℅ℓ№℗™Ω℮ + ⅛⅜⅝⅞ + ←↑→↓ + ∂∆∏∑−∕∙√∞∟∫≈≠≤≥ + ⌖ + ■▬▮▰▲▶▼◀◆◊●◢◣◤◥ + ☄★☠☢☣⚙⚛⚠⚡⛔ + ❇❈❌❤❰❱❲❳ + fffiflffiffl + 🌌🌍🌎🌏👽💣🔥🔫 + 😁😃😄😆😇😈😉😊😎😐😒😕😘 + 😛😝😞😟😠😣😭😮😲😴😵 + 🚀 + + +Debugging glyphs + +  U+EFFD Font version +  U+F000 Font hinting indicator + + +Changelog + + Xolonium 4.1 2016-11-22 Severin Meyer + Reverted frac OpenType feature to a more stable implementation + + Xolonium 4.0 2016-10-08 Severin Meyer + Decreased width of most glyphs + Thinner vertical stems in Xolonium-Regular + Thicker horizontal stems in Xolonium-Bold + Revised diagonal stems + Lowered middle bars + Revised diacritical bars + Added glyphs: + ӏẞ₿ + U+2007 U+2008 U+2009 U+200A U+202F + U+EFFD U+F000 + Revised glyphs: + $&,JKQRXkwxy~¢¤ßǻ˜ζκλμξφЖУжћѴѵ∕₱₺₦₩€ℓ№≈ffffiffl + ❤🌍🌎🌏😁😄😇😈😉😊😘😭😮😴🚀 + Removed uncommon glyphs: + ʼnſʼҌҍҎҏҾҿӃӄӇӈӚӛӪӫӬӭ + U+0312 U+0313 U+0326 + Simplified OpenType features pnum, zero, and case + Removed OpenType feature dlig + Revised vertical metrics + Merged outlines of composite glyphs in otf version + Added ttf version with custom outlines and instructions + Added woff and woff2 version + + Xolonium 3.1 2015-06-10 Severin Meyer + Added currency glyphs: + ₦₩₫₱₹₺₽ + Revised glyph: + ₯ + Relicensed public release under the SIL Open Font License 1.1 + + Xolonium 3.0 2015-05-04 Severin Meyer + Decreased width of glyphs + Decreased descender height + Increased height of super/subscript glyphs + Revised width of dashes, underscore, and overscore + Sharper bends with more circular proportions + Decreased stroke thickness of mathematical glyphs + Revised diacritical marks + Revised diacritical bars + Revised Cyrillic hooks + Revised glyphs: + GQRYjmuwßŊŒſƒǻfffiffiffl + ΞΨΩδζιξπςστυφω + ЉЄДЛУЭЯбдлэяєљђєћѢѣҨҩҼҽӃӄӘә + #$&'()*,/69?@[]{}~¡£¤¥§©®¿ + ‹›₤€₯ℓ№℗℮←↑→↓∂∏∑∞≈▰☄❈❰❱❲❳😝 + Raised vertical position of mathematical glyphs + Unified advance width of numeral and monetary glyphs + Unified advance width of mathematical glyphs + Revised bearings + Rewrote kern feature + Bolder Xolonium-Bold with improved proportions + Updated glyph names to conform to the AGLFN 1.7 + Revised hints and PS Private Dictionary + Added glyphs: + ӶӷԤԥ + Added OpenType features: + case frac liga locl pnum sinf subs sups zero + + Xolonium 2.4 2014-12-23 Severin Meyer + Added dingbats: + ⛔💣🔥 + Revised size and design of emoticons + Revised dingbats: + ⌖☄☠☣⚙⚛⚠⚡❇❈🌌🌍🌎🌏🔫 + Removed dingbat: + 💥 + + Xolonium 2.3 2014-08-14 Severin Meyer + Bugfixed ε and έ, thanks to bowzee for the feedback + + Xolonium 2.2 2014-03-01 Severin Meyer + Added dingbats: + ⌖◆●❌💥 + Revised dingbats: + •←↑→↓◊☄★☠☣⚙⚛⚠⚡❇❈❤🌌🌍🌎🌏👽🔫🚀 + Removed dingbats: + ♻✪💡📡🔋🔧🔭 + + Xolonium 2.1 2013-10-20 Severin Meyer + Added dingbats: + ←↑→↓❰❱❲❳■▬▮▰▲▶▼◀◢◣◤◥ + ☄★☠☢☣♻⚙⚛⚠⚡✪❇❈❤ + 🌌🌍🌎🌏👽💡📡🔋🔧🔫🔭🚀 + 😁😃😄😆😇😈😉😊😎😐😒😕 + 😘😛😝😞😟😠😣😭😮😲😴😵 + + Xolonium 2.0.1 2013-07-12 Severin Meyer + Reorganised and simplified files + + Xolonium 2.0 2012-08-11 Severin Meyer + Revised bends + Revised thickness of uppercase diagonal stems + Revised diacritical marks + Revised hints and PS Private Dictionary + Revised glyphs: + *1469@DPRly{}§©®¶ÐÞƒΘΞαεζνξνυЄЉЊ + ЏБЗЛУЧЪЫЬЭЯбзлчъыьэяєљњџ•€∂∙√∞∫≠ + Completed glyph sets: + Adobe Latin 3 + OpenType World Glyph Set 1 (W1G) + Ghostscript Standard (ghostscript-fonts-std-8.11) + Added OpenType kern feature + Added Xolonium-Bold + + Xolonium 1.2 2011-02-12 Severin Meyer + Revised glyphs: + D·Ðı + Completed glyph sets: + ISO 8859-7 (Greek) + Unicode Latin Extended-A block + Added glyphs: + †‡•…‰⁄™∂∑−√∞≠≤≥ + + Xolonium 1.1 2011-01-17 Severin Meyer + Revised placement of cedilla and ogonek in accented glyphs + Revised glyphs: + ,;DKTjkvwxy¥§Ð˛€ + Completed glyph sets: + ISO 8859-2 (Central European) + ISO 8859-3 (South European, Esperanto) + ISO 8859-4 (North European) + ISO 8859-5 (Cyrillic) + ISO 8859-9 (Turkish) + ISO 8859-10 (Nordic) + ISO 8859-13 (Baltic Rim) + ISO 8859-14 (Celtic) + ISO 8859-16 (South-Eastern European) + Added glyphs: + ȷʼ̒ ЀЍѐѝ‒–—‘’‚‛“”„‟‹› + + Xolonium 1.0 2011-01-04 Severin Meyer + Completed glyph sets: + ISO 8859-1 (Western European) + ISO 8859-15 (Western European) + Added glyphs: + ĄĆĘŁŃŚŹŻąćęłńśźżıˆˇ˙˚˛˜ diff --git a/assets/fonts/LICENSE.txt b/assets/fonts/LICENSE.txt new file mode 100644 index 0000000..cd6cd46 --- /dev/null +++ b/assets/fonts/LICENSE.txt @@ -0,0 +1,94 @@ +Copyright 2011-2016 Severin Meyer , +with Reserved Font Name Xolonium. + +This Font Software is licensed under the SIL Open Font License, +Version 1.1. This license is copied below, and is also available +with a FAQ at + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/assets/fonts/Xolonium-Regular.ttf b/assets/fonts/Xolonium-Regular.ttf new file mode 100644 index 0000000..031d627 Binary files /dev/null and b/assets/fonts/Xolonium-Regular.ttf differ diff --git a/default_env.tres b/default_env.tres new file mode 100644 index 0000000..20207a4 --- /dev/null +++ b/default_env.tres @@ -0,0 +1,7 @@ +[gd_resource type="Environment" load_steps=2 format=2] + +[sub_resource type="ProceduralSky" id=1] + +[resource] +background_mode = 2 +background_sky = SubResource( 1 ) diff --git a/git_api.gdnlib b/git_api.gdnlib new file mode 100644 index 0000000..42f2fb6 --- /dev/null +++ b/git_api.gdnlib @@ -0,0 +1,16 @@ +[general] + +singleton=true +load_once=true +symbol_prefix="godot_" +reloadable=false + +[entry] + +Windows.64="res://bin/win64/release/libgitapi.dll" +X11.64="res://bin/x11/release/libgitapi.so" + +[dependencies] + +Windows.64=[ ] +X11.64=[ ] diff --git a/git_api.gdns b/git_api.gdns new file mode 100644 index 0000000..adab80a --- /dev/null +++ b/git_api.gdns @@ -0,0 +1,9 @@ +[gd_resource type="NativeScript" load_steps=2 format=2] + +[ext_resource path="res://git_api.gdnlib" type="GDNativeLibrary" id=1] + +[resource] +resource_name = "GitAPI" +class_name = "GitAPI" +library = ExtResource( 1 ) +script_class_name = "GitAPI" diff --git a/icon.png b/icon.png new file mode 100644 index 0000000..c98fbb6 Binary files /dev/null and b/icon.png differ diff --git a/icon.png.import b/icon.png.import new file mode 100644 index 0000000..96cbf46 --- /dev/null +++ b/icon.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.png" +dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.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=true +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 diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..ee717a2 --- /dev/null +++ b/project.godot @@ -0,0 +1,39 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=4 + +_global_script_classes=[ { +"base": "", +"class": "GitAPI", +"language": "NativeScript", +"path": "res://git_api.gdns" +}, { +"base": "Label", +"class": "LineHeader", +"language": "GDScript", +"path": "res://LineHeader.gd" +} ] +_global_script_class_icons={ +"GitAPI": "", +"LineHeader": "" +} + +[application] + +config/name="Picross" +run/main_scene="res://Grid.tscn" +config/icon="res://icon.png" + +[gdnative] + +singletons=[ "res://git_api.gdnlib" ] + +[rendering] + +environment/default_environment="res://default_env.tres"