/*! * Updates the game time based on the given elapsed millisecond since * the last update. * For every day passed, it calls the updateCountries() method and update * the user's amount of money. * \param elapsed The number of millisecond since the last update. Set to -1 * to reset the counter. * \return True if time has changed. */ bool GameSession::updateTime(int elapsed) { if (elapsed == -1) { time_elapsed_ = 0; return false; } time_elapsed_ += elapsed; if (time_elapsed_ > hour_delay_) { // Computes how much hours have passed int hour_elapsed = time_elapsed_ / hour_delay_; // Reset the counter time_elapsed_ = 0; // Number of days in that time int day_elapsed = hour_elapsed / 24; int hour_remain = hour_elapsed % 24; // Hour update time_hour_ += hour_remain; // Update research money_ -= researchMan_.process(hour_remain, money_); // Collect taxes if we reached the end of the day if (time_hour_ > 23) { time_hour_ -= 24; time_day_++; if (time_day_ > 365) { time_day_ = 1; time_year_++; } // Update money money_ += updateCountries(); } if (day_elapsed != 0) { for (int i=0; i<day_elapsed; i++) { time_day_++; if (time_day_ > 365) { time_day_ = 1; time_year_++; } // Update research for a day money_ -= researchMan_.process(24, money_); // Update money money_ += updateCountries(); } } return true; } return false; }
void VideoMetadataImp::saveToDatabase() { if (m_title.isEmpty()) m_title = VideoMetadata::FilenameToMeta(m_filename, 1); if (m_hash.isEmpty()) m_hash = VideoMetadata::VideoFileHash(m_filename, m_host); if (m_subtitle.isEmpty()) m_subtitle = VideoMetadata::FilenameToMeta(m_filename, 4); if (m_director.isEmpty()) m_director = VIDEO_DIRECTOR_UNKNOWN; if (m_plot.isEmpty()) m_plot = VIDEO_PLOT_DEFAULT; if (m_rating.isEmpty()) m_rating = VIDEO_RATING_DEFAULT; if (m_coverfile.isEmpty()) m_coverfile = VIDEO_COVERFILE_DEFAULT; if (m_screenshot.isEmpty()) m_screenshot = VIDEO_SCREENSHOT_DEFAULT; if (m_banner.isEmpty()) m_banner = VIDEO_BANNER_DEFAULT; if (m_fanart.isEmpty()) m_fanart = VIDEO_FANART_DEFAULT; if (m_trailer.isEmpty()) m_trailer = VIDEO_TRAILER_DEFAULT; if (m_inetref.isEmpty()) m_inetref = VIDEO_INETREF_DEFAULT; if (isnan(m_userrating)) m_userrating = 0.0; if (m_userrating < -10.0 || m_userrating > 10.0) m_userrating = 0.0; if (m_releasedate.toString().isEmpty()) m_releasedate = QDate::fromString("0000-00-00", "YYYY-MM-DD"); bool inserting = m_id == 0; MSqlQuery query(MSqlQuery::InitCon()); if (inserting) { m_browse = 1; m_watched = 0; query.prepare("INSERT INTO videometadata (title,subtitle,tagline,director,studio,plot," "rating,year,userrating,length,season,episode,filename,hash," "showlevel,coverfile,inetref,homepage,browse,watched,trailer," "screenshot,banner,fanart,host,processed) VALUES (:TITLE, :SUBTITLE, " ":TAGLINE, :DIRECTOR, :STUDIO, :PLOT, :RATING, :YEAR, :USERRATING, " ":LENGTH, :SEASON, :EPISODE, :FILENAME, :HASH, :SHOWLEVEL, " ":COVERFILE, :INETREF, :HOMEPAGE, :BROWSE, :WATCHED, " ":TRAILER, :SCREENSHOT, :BANNER, :FANART, :HOST, :PROCESSED)"); } else { query.prepare("UPDATE videometadata SET title = :TITLE, subtitle = :SUBTITLE, " "tagline = :TAGLINE, director = :DIRECTOR, studio = :STUDIO, " "plot = :PLOT, rating= :RATING, year = :YEAR, " "releasedate = :RELEASEDATE, userrating = :USERRATING, " "length = :LENGTH, season = :SEASON, episode = :EPISODE, " "filename = :FILENAME, hash = :HASH, trailer = :TRAILER, " "showlevel = :SHOWLEVEL, coverfile = :COVERFILE, " "screenshot = :SCREENSHOT, banner = :BANNER, fanart = :FANART, " "inetref = :INETREF, homepage = :HOMEPAGE, browse = :BROWSE, " "watched = :WATCHED, host = :HOST, playcommand = :PLAYCOMMAND, " "childid = :CHILDID, category = :CATEGORY, processed = :PROCESSED " " WHERE intid = :INTID"); query.bindValue(":PLAYCOMMAND", m_playcommand); query.bindValue(":CHILDID", m_childID); query.bindValue(":CATEGORY", m_categoryID); query.bindValue(":INTID", m_id); } query.bindValue(":TITLE", m_title); query.bindValue(":SUBTITLE", m_subtitle.isNull() ? "" : m_subtitle); query.bindValue(":TAGLINE", m_tagline); query.bindValue(":DIRECTOR", m_director); query.bindValue(":STUDIO", m_studio); query.bindValue(":PLOT", m_plot); query.bindValue(":RATING", m_rating); query.bindValue(":YEAR", m_year); query.bindValue(":RELEASEDATE", m_releasedate); query.bindValue(":USERRATING", m_userrating); query.bindValue(":LENGTH", m_length); query.bindValue(":SEASON", m_season); query.bindValue(":EPISODE", m_episode); query.bindValue(":FILENAME", m_filename); query.bindValue(":HASH", m_hash); query.bindValue(":TRAILER", m_trailer); query.bindValue(":SHOWLEVEL", m_showlevel); query.bindValue(":COVERFILE", m_coverfile); query.bindValue(":SCREENSHOT", m_screenshot); query.bindValue(":BANNER", m_banner); query.bindValue(":FANART", m_fanart); query.bindValue(":INETREF", m_inetref); query.bindValue(":HOMEPAGE", m_homepage); query.bindValue(":BROWSE", m_browse); query.bindValue(":WATCHED", m_watched); query.bindValue(":HOST", m_host); query.bindValue(":PROCESSED", m_processed); if (!query.exec() || !query.isActive()) { MythDB::DBError("video metadata update", query); return; } if (inserting) { // Must make sure we have 'id' filled before we call updateGenres or // updateCountries if (!query.exec("SELECT LAST_INSERT_ID()") || !query.next()) { MythDB::DBError("metadata id get", query); return; } m_id = query.value(0).toUInt(); if (0 == m_id) { LOG(VB_GENERAL, LOG_ERR, QString("%1: The id of the last inserted row to " "videometadata seems to be 0. This is odd.") .arg(__FILE__)); return; } } updateGenres(); updateCountries(); updateCast(); }