Implement Avatar Expedition System

Co-Authored-By: ShigemoriHakura <62388797+ShigemoriHakura@users.noreply.github.com>
Co-Authored-By: KanyeWestc <104547412+KanyeWestc@users.noreply.github.com>
Co-Authored-By: QAQ 天小络 <72185326+XTL676@users.noreply.github.com>
Co-Authored-By: nkxingxh <25559053+nkxingxh@users.noreply.github.com>
Co-Authored-By: Yazawazi <47273265+Yazawazi@users.noreply.github.com>
Co-Authored-By: wuwuwu223 <81224214+wuwuwu223@users.noreply.github.com>
Co-Authored-By: omg-xtao <100690902+omg-xtao@users.noreply.github.com>
Co-Authored-By: Sakura <104815797+Sakura@users.noreply.github.com>
Co-Authored-By: NewNeko-2022 <104819344+NewNeko-2022@users.noreply.github.com>
Co-Authored-By: JimWails <30657653+JimWails@users.noreply.github.com>
Co-Authored-By: buttercookies <19878609+ButterCookies@users.noreply.github.com>
This commit is contained in:
Kinesis
2022-05-06 22:40:16 +08:00
committed by Melledy
parent 63a37acc1b
commit 19a2c9b7ea
17 changed files with 564 additions and 1 deletions

View File

@@ -14,6 +14,7 @@ import emu.grasscutter.game.avatar.AvatarStorage;
import emu.grasscutter.game.entity.EntityGadget;
import emu.grasscutter.game.entity.EntityItem;
import emu.grasscutter.game.entity.GameEntity;
import emu.grasscutter.game.expedition.ExpeditionInfo;
import emu.grasscutter.game.friends.FriendsList;
import emu.grasscutter.game.friends.PlayerProfile;
import emu.grasscutter.game.gacha.PlayerGachaInfo;
@@ -50,6 +51,7 @@ import emu.grasscutter.server.packet.send.*;
import emu.grasscutter.utils.DateHelper;
import emu.grasscutter.utils.Position;
import emu.grasscutter.utils.MessageHandler;
import emu.grasscutter.utils.Utils;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
@@ -101,6 +103,7 @@ public class Player {
private ArrayList<AvatarProfileData> shownAvatars;
private Set<Integer> rewardedLevels;
private ArrayList<ShopLimit> shopLimit;
private Map<Long, ExpeditionInfo> expeditionInfo;
private int sceneId;
private int regionId;
@@ -170,6 +173,7 @@ public class Player {
this.moonCardGetTimes = new HashSet<>();
this.shopLimit = new ArrayList<>();
this.expeditionInfo = new HashMap<>();
this.messageHandler = null;
this.mapMarksManager = new MapMarksManager();
this.movementManager = new MovementManager(this);
@@ -673,6 +677,28 @@ public class Player {
session.send(new PacketCardProductRewardNotify(getMoonCardRemainDays()));
}
public Map<Long, ExpeditionInfo> getExpeditionInfo() {
return expeditionInfo;
}
public void addExpeditionInfo(long avaterGuid, int expId, int hourTime, int startTime){
ExpeditionInfo exp = new ExpeditionInfo();
exp.setExpId(expId);
exp.setHourTime(hourTime);
exp.setState(1);
exp.setStartTime(startTime);
expeditionInfo.put(avaterGuid, exp);
}
public void removeExpeditionInfo(long avaterGuid){
expeditionInfo.remove(avaterGuid);
}
public ExpeditionInfo getExpeditionInfo(long avaterGuid){
return expeditionInfo.get(avaterGuid);
}
public List<ShopLimit> getShopLimit() {
return shopLimit;
}
@@ -1029,6 +1055,22 @@ public class Player {
this.resetSendPlayerLocTime();
}
}
// Expedition
var timeNow = Utils.getCurrentSeconds();
var needNotify = false;
for (Long key : expeditionInfo.keySet()) {
ExpeditionInfo e = expeditionInfo.get(key);
if(e.getState() == 1){
if(timeNow - e.getStartTime() >= e.getHourTime() * 60 * 60){
e.setState(2);
needNotify = true;
}
}
}
if(needNotify){
this.save();
this.sendPacket(new PacketAvatarExpeditionDataNotify(this));
}
}