about summary refs log tree commit diff stats
path: root/db/migrate
Commit message (Collapse)AuthorAgeFilesLines
* Widened Lingo user ID fieldStar Rauchenberger2022-12-101-0/+6
|
* Installed LINGO scoreboardStar Rauchenberger2022-12-104-0/+70
|
* Added started/finished on dates to GameKelly Rauchenberger2019-03-131-0/+8
|
* Started game trackerKelly Rauchenberger2019-03-122-0/+43
|
* Add link entry typeKelly Rauchenberger2018-08-121-0/+10
|
* Added tagsKelly Rauchenberger2018-07-076-0/+135
| | | | | | Blogs and streams can now be tagged. Records now show the appropriate tags for an entry. Updates work oddly, because their records show the stream's tags, since updates do not have tags themselves. refs #2
* Blog drafts no longer require slugsKelly Rauchenberger2018-07-041-0/+5
| | | | | | They do still technically require titles, but the engine will fill in "Untitled draft" if it is left blank. Unpublished posts can be viewed at a different URL than published posts would be. Quick links to view published and unpublished posts have been added to the admin panel. refs #1
* Added blog draftsKelly Rauchenberger2018-07-041-0/+17
| | | | | | | | An unpublished post is not viewable unless you are logged in. The "Create record" field is disabled for unpublished posts, though this is only in JavaScript and the backend will not disallow creating records for unpublished posts if forced to. Unpublishing a post does not destroy records for that post. This only applies to blog posts, currently; streams and stream updates cannot be drafted. Unpublished posts still require titles and slugs. There is no autosaving functionality yet. refs #1
* Implemented streamsKelly Rauchenberger2018-07-032-0/+21
| | | | | | Currently there are no links to the pages for editing stream updates, and the admin panel for managing streams could probably have a better look & feel, but here's some basic working functionality. refs #8
* Collapsed Entry -> Blog single-table inheritance to BlogKelly Rauchenberger2018-07-031-0/+24
|
* Updated pokeviewer (Pokédex)Kelly Rauchenberger2018-01-291-0/+21
|
* Added migration from previous pokeviewer updateKelly Rauchenberger2018-01-141-0/+20
|
* Actually added migration from previous commitKelly Rauchenberger2018-01-131-0/+40
|
* Fixed two migration similar to previousKelly Rauchenberger2017-10-152-3/+5
|
* Fixed migration againKelly Rauchenberger2017-10-151-1/+1
|
* Fixed MySQL choking on a pokeviewer migrationKelly Rauchenberger2017-10-151-1/+3
| | | | See hatkirby/pokeviewer@a29b86011d9c53709279d125f4501140c17ccc1e.
* Fixed typo in some pokeviewer foreign keysKelly Rauchenberger2017-10-151-5/+5
|
* Added pokeviewerKelly Rauchenberger2017-10-1522-0/+470
|
* Set up CapistranoKelly Rauchenberger2017-07-021-0/+8
|
* Created admin panelKelly Rauchenberger2017-07-021-0/+23
| | | | | | | Currently allows you to create and edit blogs, including associated records. Uses a WYSIWYG editor that allows uploading images. Also included jQuery :(
* Added logging in and logging outKelly Rauchenberger2017-06-251-0/+44
|
* Started designing index pageKelly Rauchenberger2017-06-252-0/+22
le_input(false) Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) # Increase the WebSocket input buffer size so that we can download large # data packages. ProjectSettings.set_setting("network/limits/websocket_client/max_in_buffer_kb", 8192) # Create the global AP manager, if it doesn't already exist. if not global.has_node("Archipelago"): var ap_script = ResourceLoader.load("user://maps/Archipelago/manager.gd") var ap_instance = ap_script.new() ap_instance.name = "Archipelago" ap_instance.SCRIPT_client = load("user://maps/Archipelago/client.gd") ap_instance.SCRIPT_keyboard = load("user://maps/Archipelago/keyboard.gd") ap_instance.SCRIPT_locationListener = load("user://maps/Archipelago/locationListener.gd") ap_instance.SCRIPT_uuid = load("user://maps/Archipelago/vendor/uuid.gd") ap_instance.SCRIPT_victoryListener = load("user://maps/Archipelago/victoryListener.gd") global.add_child(ap_instance) # Let's also inject any scripts we need to inject now. installScriptExtension(ResourceLoader.load("user://maps/Archipelago/animationListener.gd")) installScriptExtension(ResourceLoader.load("user://maps/Archipelago/collectable.gd")) installScriptExtension(ResourceLoader.load("user://maps/Archipelago/door.gd")) installScriptExtension(ResourceLoader.load("user://maps/Archipelago/keyHolder.gd")) installScriptExtension(ResourceLoader.load("user://maps/Archipelago/keyHolderChecker.gd")) installScriptExtension( ResourceLoader.load("user://maps/Archipelago/keyHolderResetterListener.gd") ) installScriptExtension(ResourceLoader.load("user://maps/Archipelago/painting.gd")) installScriptExtension(ResourceLoader.load("user://maps/Archipelago/panel.gd")) installScriptExtension(ResourceLoader.load("user://maps/Archipelago/pauseMenu.gd")) installScriptExtension(ResourceLoader.load("user://maps/Archipelago/player.gd")) installScriptExtension(ResourceLoader.load("user://maps/Archipelago/saver.gd")) installScriptExtension(ResourceLoader.load("user://maps/Archipelago/teleport.gd")) installScriptExtension(ResourceLoader.load("user://maps/Archipelago/teleportListener.gd")) installScriptExtension(ResourceLoader.load("user://maps/Archipelago/visibilityListener.gd")) installScriptExtension(ResourceLoader.load("user://maps/Archipelago/worldportListener.gd")) var proto_script = load("user://maps/Archipelago/generated/proto.gd") var gamedata_script = load("user://maps/Archipelago/gamedata.gd") var gamedata_instance = gamedata_script.new(proto_script) gamedata_instance.load( FileAccess.get_file_as_bytes("user://maps/Archipelago/generated/data.binpb") ) gamedata_instance.name = "Gamedata" global.add_child(gamedata_instance) var messages_script = load("user://maps/Archipelago/messages.gd") var messages_instance = messages_script.new() messages_instance.name = "Messages" global.add_child(messages_instance) var textclient_script = load("user://maps/Archipelago/textclient.gd") var textclient_instance = textclient_script.new() textclient_instance.name = "Textclient" global.add_child(textclient_instance) var ap = global.get_node("Archipelago") var gamedata = global.get_node("Gamedata") ap.connect("ap_connected", connectionSuccessful) ap.connect("could_not_connect", connectionUnsuccessful) ap.connect("connect_status", connectionStatus) # Populate textboxes with AP settings. $Panel/server_box.text = ap.ap_server $Panel/player_box.text = ap.ap_user $Panel/password_box.text = ap.ap_pass var history_box = $Panel/connection_history if ap.connection_history.is_empty(): history_box.disabled = true else: history_box.disabled = false var i = 0 for details in ap.connection_history: history_box.get_popup().add_item("%s (%s)" % [details[1], details[0]], i) i += 1 history_box.get_popup().connect("id_pressed", historySelected) # Show client version. $Panel/title.text = "ARCHIPELAGO (%d.%d)" % [gamedata.objects.get_version(), ap.MOD_VERSION] # Increase font size in text boxes. $Panel/server_box.add_theme_font_size_override("font_size", 36) $Panel/player_box.add_theme_font_size_override("font_size", 36) $Panel/password_box.add_theme_font_size_override("font_size", 36) # Set up version mismatch dialog. $Panel/VersionMismatch.connect("confirmed", startGame) $Panel/VersionMismatch.get_cancel_button().pressed.connect(versionMismatchDeclined) # Adapted from https://gitlab.com/Delta-V-Modding/Mods/-/blob/main/game/ModLoader.gd func installScriptExtension(childScript: Resource): # Force Godot to compile the script now. # We need to do this here to ensure that the inheritance chain is # properly set up, and multiple mods can chain-extend the same # class multiple times. # This is also needed to make Godot instantiate the extended class # when creating singletons. # The actual instance is thrown away. childScript.new() var parentScript = childScript.get_base_script() var parentScriptPath = parentScript.resource_path global._print("ModLoader: Installing script extension over %s" % parentScriptPath) childScript.take_over_path(parentScriptPath) func connectionStatus(message): var popup = self.get_node("Panel/AcceptDialog") popup.title = "Connecting to Archipelago" popup.dialog_text = message popup.exclusive = true popup.get_ok_button().visible = false popup.popup_centered() func connectionSuccessful(): var ap = global.get_node("Archipelago") var gamedata = global.get_node("Gamedata") # Check for major version mismatch. if ap.apworld_version[0] != gamedata.objects.get_version(): $Panel/AcceptDialog.exclusive = false var popup = self.get_node("Panel/VersionMismatch") popup.title = "Version Mismatch!" popup.dialog_text = ( "This slot was generated using v%d.%d of the Lingo 2 apworld,\nwhich has a different major version than this client (v%d.%d).\nIt is highly recommended to play using the correct version of the client.\nYou may experience bugs or logic issues if you continue." % [ ap.apworld_version[0], ap.apworld_version[1], gamedata.objects.get_version(), ap.MOD_VERSION ] ) popup.exclusive = true popup.popup_centered() return startGame() func startGame(): var ap = global.get_node("Archipelago") # Save connection details var connection_details = [ap.ap_server, ap.ap_user, ap.ap_pass] if ap.connection_history.has(connection_details): ap.connection_history.erase(connection_details) ap.connection_history.push_front(connection_details) if ap.connection_history.size() > 10: ap.connection_history.resize(10) ap.saveSettings() # Switch to the_entry Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) global.user = ap.getSaveFileName() global.universe = "lingo" global.map = "the_entry" unlocks.resetCollectables() unlocks.resetData() ap.setup_keys() unlocks.loadCollectables() unlocks.loadData() unlocks.unlockKey("capslock", 1) clearResourceCache("res://objects/meshes/gridDoor.tscn") clearResourceCache("res://objects/nodes/collectable.tscn") clearResourceCache("res://objects/nodes/door.tscn") clearResourceCache("res://objects/nodes/keyHolder.tscn") clearResourceCache("res://objects/nodes/listeners/animationListener.tscn") clearResourceCache("res://objects/nodes/listeners/keyHolderChecker.tscn") clearResourceCache("res://objects/nodes/listeners/keyHolderResetterListener.tscn") clearResourceCache("res://objects/nodes/listeners/teleportListener.tscn") clearResourceCache("res://objects/nodes/listeners/visibilityListener.tscn") clearResourceCache("res://objects/nodes/listeners/worldportListener.tscn") clearResourceCache("res://objects/nodes/panel.tscn") clearResourceCache("res://objects/nodes/player.tscn") clearResourceCache("res://objects/nodes/saver.tscn") clearResourceCache("res://objects/nodes/teleport.tscn") clearResourceCache("res://objects/scenes/menus/pause_menu.tscn") var paintings_dir = DirAccess.open("res://objects/meshes/paintings") if paintings_dir: paintings_dir.list_dir_begin() var file_name = paintings_dir.get_next() while file_name != "": if not paintings_dir.current_is_dir() and file_name.ends_with(".tscn"): clearResourceCache("res://objects/meshes/paintings/" + file_name) file_name = paintings_dir.get_next() switcher.switch_map.call_deferred("res://objects/scenes/the_entry.tscn") func connectionUnsuccessful(error_message): $Panel/connect_button.disabled = false var popup = $Panel/AcceptDialog popup.title = "Could not connect to Archipelago" popup.dialog_text = error_message popup.exclusive = true popup.get_ok_button().visible = true popup.popup_centered() func versionMismatchDeclined(): $Panel/AcceptDialog.hide() func historySelected(index): var ap = global.get_node("Archipelago") var details = ap.connection_history[index] $Panel/server_box.text = details[0] $Panel/player_box.text = details[1] $Panel/password_box.text = details[2] func clearResourceCache(path): ResourceLoader.load(path, "", ResourceLoader.CACHE_MODE_REPLACE)