khanat-client/scenes/creatures/creatures_creation.gd

175 lines
7.5 KiB
GDScript

extends Spatial
onready var character = $character
var is_over_ui = false
func _ready():
$creature_creation_menu._on_race_id_pressed( 0 )
$creature_creation_menu._on_sex_id_pressed( 0 )
if Globals.creatures_editor_mode == Globals.CREATURES_EDITOR_MODE.player:
$creature_creation_menu/margin_box/window_box/content_box/tabs_box/definition/race.hide()
elif Globals.creatures_editor_mode == Globals.CREATURES_EDITOR_MODE.npc:
$creature_creation_menu.max_caracteristiques_points = 999
$creature_creation_menu/margin_box/window_box/tools_box/buttons_box/choose.hide()
func _input( event ):
if event is InputEventMouseMotion and Input.is_mouse_button_pressed( 1 ):
if self.character and not self.is_over_ui:
self.character.rotate_y( event.relative.x *0.01 )
if event is InputEventMouseMotion and Input.is_mouse_button_pressed( 3 ):
if not self.is_over_ui:
if $camera.current:
$camera.translation.x -= event.relative.x *0.001
$camera.translation.y += event.relative.y *0.001
elif $camera_head.current:
$camera_head.translation.x -= event.relative.x *0.001
$camera_head.translation.y += event.relative.y *0.001
if event.is_action_pressed( "camera_zoom_in" ) and not self.is_over_ui:
if $camera.current:
$camera.size -= 0.1
elif $camera_head.current:
$camera_head.size -= 0.1
elif event.is_action_pressed( "camera_zoom_out" ) and not self.is_over_ui:
if $camera.current:
$camera.size += 0.1
elif $camera_head.current:
$camera_head.size += 0.1
func _on_creature_creation_menu_updated(value_name, value):
var need_model_change = false
if value_name == "race":
need_model_change = true
elif value_name == "sex":
need_model_change = true
var need_creature_update =false
if self.character:
self.character.get_node( "creature" ).creature.set_data( value_name, value )
need_creature_update = true
if need_model_change:
var old_creature_datas = null
if self.character:
old_creature_datas = self.character.get_node( "creature" ).creature
var race = old_creature_datas.get_data( "race" )
var sex = old_creature_datas.get_data( "sex" )
if race == Globals.RACE.human and sex == Globals.SEX.female:
self.character.show()
self.character.change_creature( "res://scenes/creatures/human/human_female.tscn" )
need_creature_update = true
elif race == Globals.RACE.human and sex == Globals.SEX.male:
self.character.show()
self.character.change_creature( "res://scenes/creatures/human/human_male.tscn" )
need_creature_update = true
if self.character and old_creature_datas:
self.character.get_node( "creature" ).creature = old_creature_datas
if need_creature_update:
if self.character:
self.character.get_node( "creature" ).update()
func save_creature():
if self.character:
var emplacement = "pc"
if Globals.creatures_editor_mode == Globals.CREATURES_EDITOR_MODE.npc:
emplacement = "res"
self.character.get_node( "creature" ).creature.save( emplacement )
$creature_creation_menu/margin_box/window_box/tooltips.text = "Créature enregistrée."
$creature_creation_menu/margin_box/window_box/tooltips.set( "custom_colors/font_color", Color.green )
func load_creature( p_name = null ):
var creature = null
var race = Globals.get_race_id( $creature_creation_menu/margin_box/window_box/content_box/tabs_box/definition/race/value.text )
if race == Globals.RACE.human:
creature = Datas.Human.new()
else:
creature = Datas.Creature.new()
var filename = $creature_creation_menu/margin_box/window_box/content_box/tabs_box/definition/name/value/first_name.text + "_" + $creature_creation_menu/margin_box/window_box/content_box/tabs_box/definition/name/value/last_name.text+".creature"
if p_name:
filename = p_name + ".creature"
if Globals.creatures_editor_mode == Globals.CREATURES_EDITOR_MODE.npc:
creature.load( "res://ressources/files/creatures/"+filename )
else:
creature.load( "user://saves/save_temp/ressources/files/creatures/pc/"+filename )
if creature.get_filename() == "unknow.creature":
$creature_creation_menu/margin_box/window_box/tooltips.text = "Echec du chargement de la créature."
$creature_creation_menu/margin_box/window_box/tooltips.set( "custom_colors/font_color", Color.red )
else:
$creature_creation_menu/margin_box/window_box/tooltips.text = "Créature chargée avec succès."
$creature_creation_menu/margin_box/window_box/tooltips.set( "custom_colors/font_color", Color.green )
$creature_creation_menu.update_sliders( creature )
func _on_creature_creation_menu_mouse_entered_ui():
self.is_over_ui = true
func _on_creature_creation_menu_mouse_exited_ui():
self.is_over_ui = false
func _on_creature_creation_menu_load_pressed():
self.load_creature()
func _on_creature_creation_menu_save_pressed():
self.save_creature()
func _on_creature_creation_menu_choose_pressed():
self.save_creature()
Globals.player_name = $creature_creation_menu/margin_box/window_box/content_box/tabs_box/definition/name/value/first_name.text + "_" + $creature_creation_menu/margin_box/window_box/content_box/tabs_box/definition/name/value/last_name.text
Globals.goto_scene( "res://scenes/game/game.tscn" )
func _on_creature_creation_menu_quit_pressed():
Globals.goto_scene( "res://scenes/main/main.tscn" )
func _on_creature_creation_menu_cloths_button_toggled(button_pressed):
if $character/creature.creature.get_data( "sex" ) == Globals.SEX.female:
if button_pressed:
$character/creature/cloths/mh_human_female_tshirt.show()
$character/creature/cloths/mh_human_female_pant.show()
$character/creature/cloths/mh_human_female_shoes.show()
else:
$character/creature/cloths/mh_human_female_tshirt.hide()
$character/creature/cloths/mh_human_female_pant.hide()
$character/creature/cloths/mh_human_female_shoes.hide()
elif $character/creature.creature.get_data( "sex" ) == Globals.SEX.male:
if button_pressed:
$character/creature/cloths/mh_human_male_tshirt.show()
$character/creature/cloths/mh_human_male_pant.show()
$character/creature/cloths/mh_human_male_shoes.show()
else:
$character/creature/cloths/mh_human_male_tshirt.hide()
$character/creature/cloths/mh_human_male_pant.hide()
$character/creature/cloths/mh_human_male_shoes.hide()
func _on_creature_creation_menu_underwear_button_toggled(button_pressed):
pass
# if button_pressed:
# $character/creature/cloths/mh_human_female_underwear_top.show()
# $character/creature/cloths/mh_human_female_underwear_bottom.show()
# else:
# $character/creature/cloths/mh_human_female_underwear_top.hide()
# $character/creature/cloths/mh_human_female_underwear_bottom.hide()
func _on_creature_creation_menu_zoom_head_button_toggled(button_pressed):
if button_pressed:
$camera_head.make_current()
else:
$camera.make_current()