Implement base star event handler

This commit is contained in:
Ethan O'Brien
2024-05-04 17:31:10 -05:00
parent ea84ffdc65
commit 05aecd02c6
7 changed files with 240 additions and 31 deletions

View File

@ -51,17 +51,8 @@ pub fn get_login_bonus_info(id: i64) -> JsonValue {
LOTTERY_INFO[id.to_string()].clone()
}
pub fn bonus(req: HttpRequest, body: String) -> HttpResponse {
let key = global::get_login(req.headers(), &body);
let user = userdata::get_acc(&key);
let mut user_home = userdata::get_acc_home(&key);
fn do_bonus(user_home: &mut JsonValue, bonuses: &mut JsonValue) -> JsonValue {
let last_reset = global::timestamp_since_midnight();
let mut bonuses = userdata::get_acc_loginbonus(&key);
if bonuses["bonus_list"].is_empty() {
global::start_login_bonus(1, &mut bonuses);
}
let to_send;
if bonuses["last_rewarded"].as_u64().unwrap() < last_reset {
let mut to_rm = array![];
@ -77,19 +68,58 @@ pub fn bonus(req: HttpRequest, body: String) -> HttpResponse {
}
let item_id = crate::router::user::get_info_from_id(info["days"][current]["masterLoginBonusRewardId"].as_i64().unwrap());
items::gift_item(&item_id, &format!("Login bonus day {}!", current+1), &mut user_home);
items::gift_item(&item_id, &format!("Event login bonus day {}!", current+1), user_home);
data["day_counts"].push(current + 1).unwrap();
}
for (i, data) in to_rm.members().enumerate() {
bonuses["bonus_list"].array_remove(data.as_usize().unwrap() - i);
}
bonuses["last_rewarded"] = last_reset.into();
userdata::save_acc_loginbonus(&key, bonuses.clone());
to_send = bonuses["bonus_list"].clone();
} else {
to_send = array![];
}
to_send
}
pub fn bonus(req: HttpRequest, body: String) -> HttpResponse {
let key = global::get_login(req.headers(), &body);
let user = userdata::get_acc(&key);
let mut user_home = userdata::get_acc_home(&key);
let mut bonuses = userdata::get_acc_loginbonus(&key);
if bonuses["bonus_list"].is_empty() {
global::start_login_bonus(1, &mut bonuses);
}
let to_send = do_bonus(&mut user_home, &mut bonuses);
userdata::save_acc_loginbonus(&key, bonuses.clone());
userdata::save_acc_home(&key, user_home);
let resp = object!{
"code": 0,
"server_time": global::timestamp(),
"data": {
"login_bonus_list": to_send,
"start_time": bonuses["start_time"].clone(),
"clear_mission_ids": user["clear_mission_ids"].clone()
}
};
global::send(resp)
}
pub fn bonus_event(req: HttpRequest, body: String) -> HttpResponse {
let key = global::get_login(req.headers(), &body);
let user = userdata::get_acc(&key);
let mut user_home = userdata::get_acc_home(&key);
let mut bonuses = userdata::get_acc_eventlogin(&key);
if bonuses["bonus_list"].is_empty() {
global::start_login_bonus(20039, &mut bonuses);
}
let to_send = do_bonus(&mut user_home, &mut bonuses);
userdata::save_acc_eventlogin(&key, bonuses.clone());
userdata::save_acc_home(&key, user_home);
let resp = object!{