|
4 | 4 |
|
5 | 5 | import math |
6 | 6 | from typing import Union |
| 7 | +from datetime import datetime |
7 | 8 | from flask import Flask, render_template, redirect, url_for, request |
8 | 9 | from flask_migrate import Migrate as MigrateClass |
9 | 10 | from flask_sqlalchemy import SQLAlchemy |
@@ -43,12 +44,35 @@ class User(db.Model): # user class |
43 | 44 | level: int = db.Column( |
44 | 45 | db.Integer, default=1, server_default="1", nullable=False |
45 | 46 | ) # user level |
| 47 | + last_time_clicked: datetime = db.Column( |
| 48 | + db.DateTime, |
| 49 | + default=datetime.utcnow(), |
| 50 | + server_default="CURRENT_TIMESTAMP", |
| 51 | + nullable=False, |
| 52 | + ) # user last time clicked |
| 53 | + time_multiplier: int = db.Column( |
| 54 | + db.Integer, default=1, server_default="1", nullable=False |
| 55 | + ) # user time multiplier |
46 | 56 |
|
47 | 57 | def add_xp(self, amount: float) -> None: # add XP |
48 | 58 | """ |
49 | 59 | Add XP (experience points) to the user. |
50 | 60 | amount - the amount to add XP. |
51 | 61 | """ |
| 62 | + current_time = datetime.utcnow() # get current time |
| 63 | + time_difference = current_time - self.last_time_clicked # get time difference |
| 64 | + time_difference_seconds = ( |
| 65 | + time_difference.total_seconds() |
| 66 | + ) # get time difference in seconds |
| 67 | + if ( |
| 68 | + time_difference_seconds < 5 |
| 69 | + ): # check if time difference is less than 5 seconds |
| 70 | + self.time_multiplier += 1 # increase time multiplier |
| 71 | + else: |
| 72 | + self.time_multiplier = ( |
| 73 | + 1 # reset time multiplier if time difference is more than 5 seconds |
| 74 | + ) |
| 75 | + self.last_time_clicked = current_time # set last time clicked to current time |
52 | 76 | if ( |
53 | 77 | amount == self.last_item_clicked |
54 | 78 | ): # check if amount is the same as last item clicked |
|
0 commit comments