From 1b1c72e86a15559e30a88cf465e7a24224f18595 Mon Sep 17 00:00:00 2001 From: Yannik <80621863+vaporvee@users.noreply.github.com> Date: Wed, 12 Apr 2023 14:15:54 +0200 Subject: [PATCH] curseword bbcode censor effect --- assets/lang/en/dialogue/npcs/message_one.json | 2 +- scenes/gui/dialog_bubble.tscn | 4 ++- scenes/player.tscn | 2 +- src/gdscript/tool/bbcodeeffects/cuss.gd | 33 +++++++++++++++++++ src/gdscript/tool/bbcodeeffects/cuss.tres | 7 ++++ 5 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 src/gdscript/tool/bbcodeeffects/cuss.gd create mode 100644 src/gdscript/tool/bbcodeeffects/cuss.tres diff --git a/assets/lang/en/dialogue/npcs/message_one.json b/assets/lang/en/dialogue/npcs/message_one.json index 4942b92..b2026cd 100644 --- a/assets/lang/en/dialogue/npcs/message_one.json +++ b/assets/lang/en/dialogue/npcs/message_one.json @@ -1,3 +1,3 @@ { - "": "This is a cool debug test!" + "": "[cuss]FUCKING HELL[/cuss]" } \ No newline at end of file diff --git a/scenes/gui/dialog_bubble.tscn b/scenes/gui/dialog_bubble.tscn index eb0933f..9e8a439 100644 --- a/scenes/gui/dialog_bubble.tscn +++ b/scenes/gui/dialog_bubble.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=7 format=3 uid="uid://cqfthyrbb8k6v"] +[gd_scene load_steps=8 format=3 uid="uid://di368n7hi66po"] [ext_resource type="Script" path="res://src/scene-scripts/dialog_bubble.cs" id="1_xtj1q"] [ext_resource type="FontFile" uid="uid://cx6bvqk0ghmjv" path="res://assets/fonts/urbane-rounded-medium.otf" id="2_qrihj"] [ext_resource type="AudioStream" uid="uid://cg6grs5k5m33n" path="res://assets/audios/typewrite/default_tw.wav" id="2_wg62u"] +[ext_resource type="RichTextEffect" uid="uid://0o1lbwcdjg28" path="res://src/gdscript/tool/bbcodeeffects/cuss.tres" id="3_lmnhk"] [ext_resource type="Texture2D" uid="uid://04pdpdvkg2s" path="res://assets/textures/dialogue/dialogue_answer_ninepatch.png" id="3_n3y1v"] [ext_resource type="AudioStream" uid="uid://7si4jccoofsf" path="res://assets/audios/ui/small_btn.wav" id="5_w6jq7"] @@ -55,6 +56,7 @@ theme_override_fonts/normal_font = ExtResource("2_qrihj") theme_override_font_sizes/normal_font_size = 42 bbcode_enabled = true scroll_active = false +custom_effects = [ExtResource("3_lmnhk")] visible_characters_behavior = 1 metadata/_edit_lock_ = true diff --git a/scenes/player.tscn b/scenes/player.tscn index ef15463..d198bd7 100644 --- a/scenes/player.tscn +++ b/scenes/player.tscn @@ -2,7 +2,7 @@ [ext_resource type="Script" path="res://src/scene-scripts/player.cs" id="1_qehox"] [ext_resource type="Texture2D" uid="uid://olceowuycu8c" path="res://assets/textures/debug/dummy-player-atlas.png" id="2_yu1q5"] -[ext_resource type="PackedScene" uid="uid://cqfthyrbb8k6v" path="res://scenes/gui/dialog_bubble.tscn" id="3_8f573"] +[ext_resource type="PackedScene" uid="uid://di368n7hi66po" path="res://scenes/gui/dialog_bubble.tscn" id="3_8f573"] [sub_resource type="AtlasTexture" id="AtlasTexture_068kt"] atlas = ExtResource("2_yu1q5") diff --git a/src/gdscript/tool/bbcodeeffects/cuss.gd b/src/gdscript/tool/bbcodeeffects/cuss.gd new file mode 100644 index 0000000..a42a50a --- /dev/null +++ b/src/gdscript/tool/bbcodeeffects/cuss.gd @@ -0,0 +1,33 @@ +@tool +extends RichTextEffect + + +# Syntax: [cuss][/cuss] +var bbcode = "cuss" + +var VOWELS : PackedInt32Array = [97,101,105,111,117,65,69,73,79,85]#a,e,i,o,u,A,E,I,O,U +var CHARS : PackedInt32Array = [38,36,33,64,42,35,37]#&,$,!,@,*,#,% +var SPACE : int = 32 + +var _was_space = false + +func get_text_server(): + return TextServerManager.get_primary_interface() + +func _process_custom_fx(char_fx): + var c = char_fx.glyph_index + + var vowelBool : bool = false + for x in VOWELS: + if char_fx.glyph_index == get_text_server().font_get_glyph_index(char_fx.font, 1, x, 0): + vowelBool = true + + if not _was_space and not char_fx.relative_index == 0 and not c == get_text_server().font_get_glyph_index(char_fx.font, 1, SPACE, 0): + var t = char_fx.elapsed_time + char_fx.glyph_index * 10.2 + char_fx.relative_index * 2 + t *= 4.3 + if vowelBool or sin(t) > 0.0: + char_fx.glyph_index = get_text_server().font_get_glyph_index(char_fx.font, 1, CHARS[int(t) % len(CHARS)], 0) + + _was_space = c == get_text_server().font_get_glyph_index(char_fx.font, 1, SPACE, 0) + + return true diff --git a/src/gdscript/tool/bbcodeeffects/cuss.tres b/src/gdscript/tool/bbcodeeffects/cuss.tres new file mode 100644 index 0000000..ab1a636 --- /dev/null +++ b/src/gdscript/tool/bbcodeeffects/cuss.tres @@ -0,0 +1,7 @@ +[gd_resource type="RichTextEffect" load_steps=2 format=3 uid="uid://0o1lbwcdjg28"] + +[ext_resource type="Script" path="res://src/gdscript/tool/bbcodeeffects/cuss.gd" id="1_ctc4u"] + +[resource] +resource_name = "cuss" +script = ExtResource("1_ctc4u")