about summary refs log tree commit diff stats
path: root/app/views/admin/blogs/drafts.html.haml
Commit message (Collapse)AuthorAgeFilesLines
* Do it more I guessStar Rauchenberger2023-10-111-2/+2
|
* Added page titlesKelly Rauchenberger2018-07-061-0/+1
| | | | refs #4
* Blog drafts no longer require slugsKelly Rauchenberger2018-07-041-1/+4
| | | | | | 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/+10
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
Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
extends Spatial

var orientation = ""  # north, south, east, west
var move = false
var move_to_x
var move_to_z
var target = null
var key


func _ready():
	var _connected = get_tree().get_root().get_node("Spatial/player").connect(
		"looked_at", self, "_looked_at"
	)
	if move:
		key.get_node("Viewport/GUI/Panel/TextEdit").connect(
			"answer_correct", self, "_answer_correct"
		)


func _answer_correct():
	var apclient = global.get_node("Archipelago")
	if not apclient._door_shuffle or apclient.paintingIsVanilla(self.get_parent().name):
		movePainting()


func movePainting():
	self.get_parent().translation.x = move_to_x
	self.get_parent().translation.z = move_to_z


func _looked_at(body, painting):
	if body.is_in_group("player") and (painting.get_name() == self.get_parent().get_name()):
		var apclient = global.get_node("Archipelago")
		apclient.checkPainting(painting.get_name())

		if target != null:
			var target_dir = _dir_to_int(target.orientation)
			var source_dir = _dir_to_int(orientation)
			var rotate = target_dir - source_dir
			if rotate < 0:
				rotate += 4
			rotate *= 90

			var target_painting = target.get_parent()

			# this is ACW
			if rotate == 0:
				body.translation.x = (
					target_painting.translation.x + (body.translation.x - painting.translation.x)
				)
				body.translation.y = (
					target_painting.translation.y + (body.translation.y - painting.translation.y)
				)
				body.translation.z = (
					target_painting.translation.z + (body.translation.z - painting.translation.z)
				)
			elif rotate == 180:
				body.translation.x = (
					target_painting.translation.x - (body.translation.x - painting.translation.x)
				)
				body.translation.y = (
					target_painting.translation.y + (body.translation.y - painting.translation.y)
				)
				body.translation.z = (
					target_painting.translation.z - (body.translation.z - painting.translation.z)
				)
				body.rotate_y(PI)
				body.velocity = body.velocity.rotated(Vector3(0, 1, 0), PI)
			elif rotate == 90:
				var diff_x = body.translation.x - painting.translation.x
				var diff_y = body.translation.y - painting.translation.y
				var diff_z = body.translation.z - painting.translation.z
				body.translation.x = target_painting.translation.x + diff_z
				body.translation.y = target_painting.translation.y + diff_y
				body.translation.z = target_painting.translation.z - diff_x
				body.rotate_y(PI / 2)
				body.velocity = body.velocity.rotated(Vector3(0, 1, 0), PI / 2)
			elif rotate == 270:
				var diff_x = body.translation.x - painting.translation.x
				var diff_y = body.translation.y - painting.translation.y
				var diff_z = body.translation.z - painting.translation.z
				body.translation.x = target_painting.translation.x - diff_z
				body.translation.y = target_painting.translation.y + diff_y
				body.translation.z = target_painting.translation.z + diff_x
				body.rotate_y(3 * PI / 2)
				body.velocity = body.velocity.rotated(Vector3(0, 1, 0), 3 * PI / 2)

			if !apclient._pilgrimage_allows_paintings:
				global.sunwarp = 1
				body.get_node("pivot/camera/sunwarp_background").visible = false


func _dir_to_int(dir):
	if dir == "north":
		return 0
	elif dir == "west":
		return 1
	elif dir == "south":
		return 2
	elif dir == "east":
		return 3
	return 4