Skip to content

Instantly share code, notes, and snippets.

View lazuee's full-sized avatar
:shipit:
Lazuee

John Marlo Lapiz lazuee

:shipit:
Lazuee
View GitHub Profile
@lazuee
lazuee / forge.config.ts
Created November 14, 2022 05:54
ElectronJS Configuration
import type { ForgeConfig } from "@electron-forge/shared-types";
import { MakerSquirrel } from "@electron-forge/maker-squirrel";
import { MakerZIP } from "@electron-forge/maker-zip";
import { WebpackPlugin } from "@electron-forge/plugin-webpack";
import { mainConfig, rendererConfig } from "./webpack.config";
const config: ForgeConfig = {
packagerConfig: {
name: "App Name",
@lazuee
lazuee / app.gd
Created November 4, 2022 06:52
Godot 4 Websocket Client to NodeJS Server
class_name App
extends Node
@export var WSS_URL: String = "ws://127.0.0.1:3000/server"
@export var client: Client = null
var _logger: Logger = null
func _enter_tree() -> void:
_logger = preload("res://src/classes/logger.gd").new("%s -> %s" % [get_parent().name, name])
@lazuee
lazuee / country.selector.example.gd
Last active October 21, 2022 05:08
Godot 4 - Load Image and set to ImageTexture
extends HBoxContainer
@export_dir var flagDir : String = ""
@export var flagImg : TextureRect = null
@export var optionBtn : OptionButton = null
var _flags : Array[Dictionary] = []
var _logger : Logger = null
func _enter_tree() -> void:
_logger = preload("res://src/core/scripts/logger.gd").new("%s -> %s" % [get_parent().name, name])
@lazuee
lazuee / wait_for.gd
Last active October 18, 2022 12:03
Godot 4 - Wait for value
extends Node
@onready var scene_root = get_tree().root if not Engine.is_editor_hint() else Engine.get_main_loop().editor_scene_root
@onready var rng := RandomNumberGenerator.new()
func _ready() -> void:
rng.randomize()
func wait_for(time: float, function: Callable, node: Node = null) -> Signal:
var _time = float(time)
@lazuee
lazuee / loader.gd
Last active October 3, 2022 02:57
Godot 4 Beta 2 - Loader
extends Node
signal is_completed
@export_range(1.0, 10.0, 0.5) var LOADER_WAIT_TIME : float = 3.0
@onready var _logger = null # preload("res://utils/scripts/logger.gd").new().set_module("%s -> %s" % [self.get_parent().name, self.name])
var _queue : Dictionary = {}
var _progress : Array[float] = []
@lazuee
lazuee / movement_controller.gd
Last active September 30, 2023 09:17
Godot 4 Beta 1 - Click to Move with NavigationAgent2D
extends Node2D
class_name MovementController
var player : CharacterBody2D = null
func _ready():
var parent = self.get_parent()
if parent:
if parent.get_class() == "CharacterBody2D": player = parent
@lazuee
lazuee / look_at_direction.gd
Last active September 27, 2022 13:47
Godot Compass direction finder
func look_at_direction(velocity : Vector2) -> String:
return _get_direction_string(velocity.angle())
func _get_direction_string(angle : float) -> String:
var angle_deg = round(rad_to_deg(angle))
var direction : String = ""
if angle_deg <= 15.0 and angle_deg >= -15.0: direction = "RIGHT"
elif angle_deg <= 60.0 and angle_deg >= 15.0: direction = "BOTTOMRIGHT"
elif angle_deg <= 120.0 and angle_deg >= 60.0: direction = "BOTTOM"
@lazuee
lazuee / PascalToSentenceCase.ts
Created August 11, 2022 13:50
PascalCase to SentenceCase
type Words<S extends string> = S extends S ? string extends S ? string[] : WordsAgg<S, []> : never;
type WordsAgg<S extends string, L extends string[]> = S extends ""
? L
: S extends `${AsciiUpper}${AsciiLower}${string}`
? PascalWord<S, L>
: S extends `${AsciiUpper}${string}`
? UpperWord<S, L>
: S extends `${AsciiLower}${string}`
? CharsetWord<S, L, AsciiLower>
: S extends `${AsciiDigit}${string}`
@lazuee
lazuee / Files.ts
Last active August 17, 2022 10:13
advanced file handler
import fs, { Dirent } from 'node:fs'
import path from 'node:path'
type Awaitable<T> = T | PromiseLike<T>;
export interface File {
[key: string]: any
default?: {
[key: string]: any
fileObj: {
@lazuee
lazuee / sendMessage.ts
Last active June 27, 2022 15:30
discord hybrid reply and send
async function sendMessage(
channel: TextChannel | DMChannel | BaseGuildTextChannel | GuildTextBasedChannel | PartialDMChannel,
user: User | undefined,
options: string | MessagePayload | MessageOptions
) {
let message;
try {
message = await channel.send(options);
} catch (error) {