From f4878896078a4bcb5a82069246a6c04b48907be6 Mon Sep 17 00:00:00 2001 From: Relintai Date: Wed, 27 Apr 2022 18:05:21 +0200 Subject: [PATCH] Added java and c# like access modifier support because why not. --- project/UMLGenerator.gd | 48 +++++++++++-- project/examples/PlayField.java.umlg | 100 +++++++++++++++++++++++++++ 2 files changed, 142 insertions(+), 6 deletions(-) create mode 100755 project/examples/PlayField.java.umlg diff --git a/project/UMLGenerator.gd b/project/UMLGenerator.gd index 6853a94..600cb67 100644 --- a/project/UMLGenerator.gd +++ b/project/UMLGenerator.gd @@ -18,6 +18,12 @@ enum AccessModifierState { ACCESS_MODIFIER_PUBLIC }; +enum AccessModifierParseType { + ACCESS_MODIFIER_PARSE_TYPE_GROUPED = 0, + ACCESS_MODIFIER_PARSE_TYPE_INDIVIDUAL = 1, + ACCESS_MODIFIER_PARSE_TYPE_IGNORE = 2, +}; + var _content_container : Control var _files : PoolStringArray var _error_files : PoolStringArray @@ -87,8 +93,10 @@ func _process_state_next(delta): var in_class : bool = false var current_class_access_modifier : int = AccessModifierState.ACCESS_MODIFIER_PRIVATE + var current_access_modifier_parse_type : int = AccessModifierParseType.ACCESS_MODIFIER_PARSE_TYPE_GROUPED var class_control : Control = null + for i in range(lines.size()): var l : String = lines[i] l = l.strip_edges() @@ -99,6 +107,19 @@ func _process_state_next(delta): if l[0] == "#": continue + if l.begins_with("access_modifier_parse_type "): + var t : String = l.trim_prefix("access_modifier_parse_type ") + + if t == "GROUPED" || t == "ACCESS_MODIFIER_PARSE_TYPE_GROUPED" || t == "0": + current_access_modifier_parse_type = AccessModifierParseType.ACCESS_MODIFIER_PARSE_TYPE_GROUPED + elif t == "INDIVIDUAL" || t == "ACCESS_MODIFIER_PARSE_TYPE_INDIVIDUAL" || t == "1": + current_access_modifier_parse_type = AccessModifierParseType.ACCESS_MODIFIER_PARSE_TYPE_INDIVIDUAL + elif t == "IGNORE" || t == "ACCESS_MODIFIER_PARSE_TYPE_IGNORE" || t == "2": + current_access_modifier_parse_type = AccessModifierParseType.ACCESS_MODIFIER_PARSE_TYPE_IGNORE + + continue + + if l.begins_with("new_column"): current_content_container = create_sub_content_container() continue @@ -144,12 +165,27 @@ func _process_state_next(delta): l = l.replace(";", "") - if current_class_access_modifier == AccessModifierState.ACCESS_MODIFIER_PUBLIC: - l = "+ " + l - elif current_class_access_modifier == AccessModifierState.ACCESS_MODIFIER_PROTECTED: - l = "# " + l - elif current_class_access_modifier == AccessModifierState.ACCESS_MODIFIER_PRIVATE: - l = "- " + l + if current_access_modifier_parse_type == AccessModifierParseType.ACCESS_MODIFIER_PARSE_TYPE_GROUPED: + if current_class_access_modifier == AccessModifierState.ACCESS_MODIFIER_PUBLIC: + l = "+ " + l + elif current_class_access_modifier == AccessModifierState.ACCESS_MODIFIER_PROTECTED: + l = "# " + l + elif current_class_access_modifier == AccessModifierState.ACCESS_MODIFIER_PRIVATE: + l = "- " + l + + elif current_access_modifier_parse_type == AccessModifierParseType.ACCESS_MODIFIER_PARSE_TYPE_INDIVIDUAL: + if l.find("public ") != -1: + l = l.replace("public ", "+ ") + elif l.find("protected ") != -1: + l = l.replace("protected ", "# ") + elif l.find("private ") != -1: + l = l.replace("private ", "- ") + else: + l = "- " + l + + elif current_access_modifier_parse_type == AccessModifierParseType.ACCESS_MODIFIER_PARSE_TYPE_IGNORE: + #ignore + pass class_control.add_line(l) diff --git a/project/examples/PlayField.java.umlg b/project/examples/PlayField.java.umlg new file mode 100755 index 0000000..43cc4f5 --- /dev/null +++ b/project/examples/PlayField.java.umlg @@ -0,0 +1,100 @@ + +access_modifier_parse_type INDIVIDUAL + +class Widget +inherit +class PlayField + private final Circle knobBounds = new Circle(0, 0, 0); + private final Circle deadzoneBounds = new Circle(0, 0, 0); + private final Vector2 knobPosition = new Vector2(); + private final Vector2 knobPercent = new Vector2(); + -- + private GameData gameData; + private Player player; + + private PlayFieldStyle style; + -- + boolean touched; + private final Rectangle bounds = new Rectangle(); + private final Vector2 selectedGem = new Vector2(); + private final Vector2 selectedMoveTo = new Vector2(); + private boolean isGemSelected = false; + private boolean isGemMoving = false; + private boolean isGemReturning = false; + private boolean isGemFalling = false; + private boolean isGemFallingFromTop = false; + private boolean isGemMissing = false; + private float timeSinceLastMove = 0; + private int[] playerDestroyed; + private int playerTouchColor; + private float fallSpeed; + private float moveSpeed; +-- + private GemHelper[][] gems; + -- + public PlayField (Skin skin, GameData gameData, Player player); + public PlayField (Skin skin, String styleName, GameData gameData, Player player); + public PlayField (PlayFieldStyle style, GameData gameData, Player player); + void calculatePositionAndValue (float x, float y, boolean isTouchUp); +-- + public void swapGems(int i, int j); + + public void setStyle (PlayFieldStyle style); + + public PlayFieldStyle getStyle (); + + public Actor hit (float x, float y, boolean touchable); +-- + + public void layout (); + + public void draw (SpriteBatch batch, float parentAlpha); + public float getPrefWidth (); + + public float getPrefHeight (); + + public boolean isTouched (); + + public void act (float delta); +-- + public void setGemFalling(int i, int fromJ, int toJ, boolean fromTop); + + protected void checkFalling(); + + public void setGemMissing(); + public void setPlayerDestroyed(int[] dest); + + public void reShuffle(); + + +new_column + + class PlayFieldStyle + public Drawable gemRed; + public Drawable gemViolet; + public Drawable gemGreen; + public Drawable gemYellow; + public Drawable gemBlue; + + public Drawable background; + + public PlayFieldStyle (); + + public PlayFieldStyle (Drawable gemRed, Drawable gemViolet, Drawable gemGreen, Drawable gemYellow, Drawable gemBlue, Drawable background); + + public PlayFieldStyle (PlayFieldStyle style); + + + public static class GemHelper + public Rectangle bounds; + public boolean falling; + public float fallY; + public boolean movingX; + public boolean movingY; + public float moveToX; + public float moveToY; + public int directionFactor; + + public GemHelper(); + + public GemHelper(Rectangle bounds);