формате, недели, годы и другие временные отрезки? Високосные годы не считаем.
                  
                  
                  
                  
                  
                  Общее время игры считается в минутах. Сейчас есть три скорости игры, помимо паузы:
                  
                  
                  минуты += 1 за единицу времени
                  
                  
                  минуты += 15 за единицу времени
                  
                  
                  минуты += 50 за единицу времени
                  
                  
                  
                  
                  
                  Сделал костыль, который подходит, если только игровое время меняется со скоростью в пределах 59 минут. А хочется универсального решения, которое высчитывает текущее время из общего количества минут. Может, у кого есть идеи, как это сделать?
                  
                  
                  
                  
                  
                  Внизу код выбора скорости для контекста, а ниже сама функция-костыль, которой ищу замену на универсальное изящное решение:
                  
                  
                  
                  
                  
                    if Input.is_action_just_pressed("pause_game"):
                  
                  
                      game_speed = 0
                  
                  
                    if Input.is_action_just_pressed("game_speed_normal"):
                  
                  
                      game_speed = 1
                  
                  
                    if Input.is_action_just_pressed("game_speed_fast"):
                  
                  
                      game_speed = 15
                  
                  
                    if Input.is_action_just_pressed("game_speed_superfast"):
                  
                  
                      game_speed = 50
                  
                  
                    
                  
                  
                    minutes += game_speed
                  
                  
                    
                  
                  
                    show_time_and_date()
                  
                  
                  
                  
                  
                  func show_time_and_date():
                  
                  
                    
                  
                  
                    minute += game_speed
                  
                  
                    if minute >= 60:
                  
                  
                      var more_than_sixty : int = minute
                  
                  
                      minute = more_than_sixty - 60
                  
                  
                      hour += 1
                  
                  
                    if hour >= 24:
                  
                  
                      hour = 0
                  
                  
                      day += 1
                  
                  
                    if day == 365:
                  
                  
                      day = 0
                  
                  
                      year += 1
                  
                  
                
А что мешает использовать встроенные классы датывремени и unixtime?
Да и вообще, оператор %
 Dan
                          Adhip
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Dan
                          Adhip
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Мне как раз и кажется, что нужно использовать синглтон Time, однако в самой документации по нему в Годо нет примеров, и по поиску я не нашёл ни туториалов, ни кусков кода, хоть чем-то напоминающую мою задачу: находил только как вытащить системное время, а как общее число минут/секунд/часов преобразовать в дату/время, нет.
Храни unixtime в int64. Контролировать скорость просто - изменяешь дельту. Распаковывать в дату - тоже просто через Time. Проблема - посчитать точное распакованное время между двумя периодами, но это очень редко нужно
https://docs.godotengine.org/en/stable/classes/class_time.html#class-time-method-get-datetime-dict-from-unix-time
 Dan
                          Adhip
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Dan
                          Adhip
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Спасибо! И за прямую ссылку на нужный метод отдельное спасибо! Теперь всё изящно)
Dan Adhip (1) повысил карму Александр (9)
Обсуждают сегодня