Fizz

joined 3 years ago
MODERATOR OF
[–] Fizz@lemmy.nz 1 points 42 minutes ago

Had no idea about the events or story of the odyssey so I went in very blind. It was a great story truely epic. Loved the ending so much as I thought Odysseus was going to die. Agamemnon looked fucking cool I was very disappointed to find out the historical recreation of his amour looks like crap. The cyclops part was great. I have no idea who those big armored guys on the island were but they were cool. I will have to read the book oneday because that did not feel like it was a very accurate retelling.

[–] Fizz@lemmy.nz 2 points 8 hours ago

Yeah there is an extreme euphoria that normally happens on an LSD trip. Everything just looks beautiful and the universe feels at peace. Visuals are all over the place, everything vibrating, perspectives shifting, light fracturing, objects warping into different forms. I have only done 150ug 1 tab. 3 tabs is way above that.

The come down is miserable. Your mentally exhausted from all the brain activity but still to energised to sleep.

[–] Fizz@lemmy.nz 1 points 8 hours ago (1 children)

Who would watch robots fight like this. They can't even do anything. They have no idea how to fight whoever built them has no idea how yo fight. Its like watching blind people spam moves until something lands.

[–] Fizz@lemmy.nz 2 points 8 hours ago

Its sad that over the top satire like this is shop close to what's actually happening on media shows being watched by hundreds of millions of people

[–] Fizz@lemmy.nz 1 points 8 hours ago

Its not AI writing. It reads exactly like someone casually talking. Its consice and to the point. There is no "its not x, its y"

He has been blogging dor dam near 6 years you can go read his older posts the writing is consistent.

[–] Fizz@lemmy.nz 0 points 8 hours ago

There is already no incentive to increase wages for a service worker. Its a low skilled position in an economy with 6% unemployment.

It doesnt matter if the wages increase or not because they're tied to min wage. So worst case servers will make what they currently make and best case they get a wage boost from tips. Thats why they are always in favour of adding it. Go ask a server in the us if they would like to get rid of tips and go to min wage they'll say fuck no I dont want $7 an hours I'm making 15-20$ an hour right now.

The $3 min wage you keep referencing undermines your point because it only applies when servers are making over the federal hourly min wage. Its a win/win for server and business and lose for customers.

[–] Fizz@lemmy.nz 0 points 9 hours ago

Yeah but thats no different to a normal distro. Normal distros dont just randomly require troubleshooting they are pretty stable given that regressions are caught upstream and bazzite is based off fedora stable.

The majority of linux troubleshooting is when you're trying to get something new working (like a game/software/device) and that will always be extra on non standard distros like bazzite. I would consider this changed once bazzite specific guides/scripts are commonplace.

[–] Fizz@lemmy.nz 0 points 15 hours ago (2 children)

Ok? You dont have to "tinker with anything to play" on other distros either.

[–] Fizz@lemmy.nz 1 points 15 hours ago

Yes i know they mean moderate dems because actual far left they like.

[–] Fizz@lemmy.nz 1 points 20 hours ago (2 children)

Thats not going to happen the far right loves having the far left around

[–] Fizz@lemmy.nz 1 points 20 hours ago

How many times has this been nationalised now? Also is this another Starmer W first rail now steel. Love him or have him the guy is getting thing done.

[–] Fizz@lemmy.nz 1 points 20 hours ago

Every creator was sadly reviewing this on its release saying how bad it was. Now all the follow up reviews are like "actually its pretty good and its the machine ive always wanted". Where was that energy on release

11
Cats change people (www.youtube.com)
 

I'm really not sure how to feel about this one. On one hand its great that less dogs are being put down. On the other hand people who got their dog impounded and couldnt afford $93 are taking an after pay loan to get it back. As someone who used to live in south auckland I feel like this is going to make the roaming dog problem way worse. If you're getting your dog impounded and after paying $93 then you are probably not equipped to be owning a dog.

 

I want to preface this by saying that I think I got cooked by AI here.

I have a game where I am working on a job system. The job system has a job objects which I need to put into a data structure that can be searched via id, location, or work type. At first I was building with the mindset of "do whatever to solve this problem and make it work" but it became very hard to implement new features because I would break everything. So I started trying to think ahead and design ways of doing things that would handle all the different jobs and things.

At first I put all jobs into an array and iterated through. Then I learned about dictionaries and started using them for way to many things and so i updated my job queue to be a dictionary with the Key as ID > JobObj

Then I decided to plan out the job system before writing anything and "do it properly". I decided I needed to upgrade the data structure holding jobs because its a core part of the game and will be heavily interacted with. But I realized I only know array, dictionary and database, so I asked AI what data structure I should use and it suggested a nested dictionary.

Now im using multiple dictionaries but im really hating it. Its hard for me to work with and conceptually im not sure I can visualize how its even working.

How I am thinking about it is there is multiple layers of keys, 1st layer is work types, then once I find the work type it points to a dictionary of region IDs and that points to an array of jobs in the region.

Job def is work type like Planting Region id: the map is broken down into region IDs so i dont have to check every tile and can limit seaching

#python
var job_pool: Dictionary = {}

func register(designation: DesignationObj) -> void:
	var job_def = designation.job
	var region_id = designation.region_id
	if not job_pool.has(job_def):
		job_pool[job_def] = {} 
	if not job_pool[job_def].has(region_id):
		job_pool[job_def][region_id] = []
	job_pool[job_def][region_id].append(designation)

Here is how I am picturing it in my head.

var job_pool {
	"plants": {
		"1": {
			"job1"
			"job2"
		}
		"2": {
			"job3"
		}
	}
	"mining": {
		"1": {
			"job4"
			"job5"
		}
	}
	"hunting": {
		"5":{
			"job12"
		}
	}
}

But now I want to add ID look up into this im stuck and im thinking the entire structure does not work for what it needs to do.

 

Photo taken by Dorothee Ehrich

 

I am working on the input and it feels like its getting out of hand. I wanted to check in with people and see how people structure their input handling.

Currently I have 1 function _unhandled_unput(event) and inside there I have a ton of elif statements trying to handle every possible situation and event. Its manageable at the moment but I only have like 4 events so its going to get very out of hand if I continue.

I need to have 100s of these events based on whats selected and what mouse/keyboard buttons are being pressed and I need some way to resuse the actions.

spoiler

func _unhandled_input(event):
	if event is InputEventMouseButton and event.pressed:
		if event.button_index == MOUSE_BUTTON_RIGHT:
			clear_selection()
			gui.queue_redraw()
			get_viewport().set_input_as_handled()
			return
	if selected_item == "colonist": #broken
		if event is InputEventKey:
			if event.OS.get_keycode_string() == "r":
				for colonist in selected_group:
					colonist.set_state("DRAFT")
					get_viewport().set_input_as_handled()
					gui.queue_redraw()
	#nothing selected dragbox to select things and single click to select things - does not work at the moment
	elif selected_type == "" or selected_type == "basic":
		if is_dragging and event is InputEventMouseMotion:
				drag_end = camera.get_global_mouse_position()
				cam_drag_end= get_viewport().get_mouse_position()
				get_selection(drag_start, drag_end)
				gui.queue_redraw()
				get_viewport().set_input_as_handled()
				return
		elif event is InputEventMouseButton and not event.pressed:
			is_dragging = false
			gui.queue_redraw()
			drag_start = null
			drag_end = null
			get_viewport().set_input_as_handled()
			return
		elif event is InputEventMouseButton and event.pressed:
			if event.button_index == MOUSE_BUTTON_LEFT:
				selected_type = "basic"
				is_dragging = true
				drag_start = camera.get_global_mouse_position()
				cam_drag_start = get_viewport().get_mouse_position()
				gui.queue_redraw()
				get_viewport().set_input_as_handled()
				return
	#command flow for dragging a selection box
	elif selected_type == "command":
		if selected_item == "structure_dict_growing":
			if is_dragging and event is InputEventMouseMotion:
				var grid_pos = tilemap.local_to_map(camera.get_global_mouse_position())
				var local_pos = tilemap.map_to_local(grid_pos)
				drag_end = local_pos + Vector2(32, 32)
				cam_drag_end = get_viewport().get_mouse_position()
				gui.queue_redraw()
				get_viewport().set_input_as_handled()
				return
			elif event is InputEventMouseButton and not event.pressed:
				if event.button_index == MOUSE_BUTTON_LEFT:
					is_dragging = false
					gui.queue_redraw()
					get_viewport().set_input_as_handled()
					MessageBus.rpc_id(1, "request_zone_growing", selected_item ,drag_start, drag_end, multiplayer.get_unique_id())
					drag_start = null
					drag_end = null
					return
			elif event is InputEventMouseButton and event.pressed:
				if event.button_index == MOUSE_BUTTON_LEFT:
					is_dragging = true
					#to snap to grid
					var grid_pos = tilemap.local_to_map(camera.get_global_mouse_position())
					var local_pos = tilemap.map_to_local(grid_pos)
					drag_start = local_pos - Vector2(32, 32)
					cam_drag_start = get_viewport().get_mouse_position() #this is broken cbf fixing maybe one day after selection is working 
					gui.queue_redraw()
					get_viewport().set_input_as_handled()
					return
	elif selected_type == "floor":
		if event is InputEventMouseButton and event.pressed:
			if event.button_index == MOUSE_BUTTON_LEFT:
				var global_mouse_pos = camera.get_global_mouse_position()
				var grid_pos = tilemap.local_to_map(global_mouse_pos)
				if selected_item == "":
					return
				MessageBus.rpc_id(1, "request_build_floor", selected_item, grid_pos, multiplayer.get_unique_id())
				get_viewport().set_input_as_handled()
				return
	elif selected_type == "building":
		if event is InputEventMouseButton and event.pressed:
			if event.button_index == MOUSE_BUTTON_LEFT:
				var global_mouse_pos = camera.get_global_mouse_position()
				var grid_pos = tilemap.local_to_map(global_mouse_pos)
				if selected_item == "":
					return
				MessageBus.rpc_id(1, "request_build_structure", selected_item, grid_pos, multiplayer.get_unique_id())
				get_viewport().set_input_as_handled()
				return

 

Edit: ah i was reading an old doc because the reddit comment I saw was 6 years old. The property is get_property_list()

I have a script that is a global it contains a bunch of dictionaries that describe items. I need a way to get a list of the different types.

Searching for solutions I found https://docs.godotengine.org/en/3.2/classes/class_script.html#class-script-method-get-script-property-list

but I cant seem to get it working. Godot says "Function "get_script_property_list()" not found in base self"

Example of the what im trying to get a list of

var tile_dict_grass = {
	"name": "grass",
	"source": 1,
	"atlas": Vector2i(1,0),
	"move_speed": 0.80,
	"path_cost": 2,
	"fertility": 1,
	"cleanliness": 1.5,
	"flammability": 0.60,
	"build_categories": "all",
	"solid": false
}
var tile_dict_rich_soil = {
	"name": "rich soil",
	"source": 1,
	"atlas": Vector2i(1,0),
	"move_speed": 0.80,
	"path_cost": 2,
	"fertility": 1.4,
	"cleanliness": -1.0,
	"flammability": 0.0,
	"build_categories": "all",
	"solid": false
}

How im trying to get it.

func get_tile_dict():
	var property_list = self.get_script_property_list()
	var tile_list = []
	for attr in dir(self):
		if attr.startswith('tile_dict'):
			value = getattr(self, attr)
			tile_list.append(value)
	return tile_list
 

I have a characterbody2d and I want to display the equipment being worn. So this equipment would need to be swapped around during game play.

I currently am using several sprites layered. How is best to handle this situation?

view more: next ›