Skip to content

Commit

Permalink
Merge pull request #4271 from iHDeveloper/discord-rpc/improvement
Browse files Browse the repository at this point in the history
feat(discord-rpc): improve the system
  • Loading branch information
skaldarnar authored Mar 5, 2021
2 parents b63fa50 + 7fd8605 commit f454f38
Show file tree
Hide file tree
Showing 6 changed files with 605 additions and 269 deletions.
3 changes: 3 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions facades/PC/src/main/resources/logback.xml
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,5 @@
<logger name="com.snowplowanalytics" level="${logOverrideLevel:-error}" />
<logger name="io.netty" level="${logOverrideLevel:-warn}" />

<logger name="com.jagrosh.discordipc" level="OFF"/>
</configuration>
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
// Copyright 2020 The Terasology Foundation
// SPDX-License-Identifier: Apache-2.0

package org.terasology.engine.subsystem.discordrpc;

import java.time.OffsetDateTime;

/**
* A threaded-safe shared buffer used to store information for {@link DiscordRPCThread} to be processed as {@link com.jagrosh.discordipc.entities.RichPresence}
*
* It helps avoiding allocating unnecessary objects for the rich presence.
*/
public final class DiscordRPCBuffer {
private String details;
private String state;
private OffsetDateTime startTimestamp;
private int partySize;
private int partyMax;
private boolean changed;

public DiscordRPCBuffer() {
reset();
}

/**
* Resets the buffer data
*/
public synchronized void reset() {
this.details = null;
this.state = null;
this.startTimestamp = null;
this.changed = true;
this.partySize = -1;
this.partyMax = -1;
}

/**
* Sets the details of the current game
*
* @param details Details about the current game (null for nothing)
*/
public synchronized void setDetails(String details) {
this.details = details;
}

/**
* Gets the details about the current game
*
* @return Detail about the current game
*/
public synchronized String getDetails() {
return details;
}

/**
* Sets the current party status
*
* @param state The current party status (null for nothing)
*/
public synchronized void setState(String state) {
this.state = state;
this.changed = true;
}

/**
* Returns the current party status
*
* @return The current party status
*/
public synchronized String getState() {
return state;
}

/**
* Sets the start of the game
*
* @param startTimestamp The time when that action has start or null to hide it
*/
public synchronized void setStartTimestamp(OffsetDateTime startTimestamp) {
this.startTimestamp = startTimestamp;
this.changed = true;
}

/**
* Returns the start of the game
*
* @return The start of the game
*/
public synchronized OffsetDateTime getStartTimestamp() {
return startTimestamp;
}

/**
* Sets the current party size
*
* @param partySize The current party size
*/
public synchronized void setPartySize(int partySize) {
this.partySize = partySize;
this.changed = true;
}

/**
* Returns the current party size
*
* @return The party size
*/
public synchronized int getPartySize() {
return partySize;
}

/**
* Sets the maximum number of the players in the party
*
* @param partyMax The number of the players
*/
public synchronized void setPartyMax(int partyMax) {
this.partyMax = partyMax;
this.changed = true;
}

/**
* Returns the maximum number of players in the party
*
* @return The maximum number of players in the party
*/
public synchronized int getPartyMax() {
return partyMax;
}

/**
* Check if the buffer has changed
*
* @return if the buffer has changed
*/
public synchronized boolean hasChanged() {
return changed;
}

/**
* Check if the buffer is empty
*
* @return if the buffer is empty
*/
public synchronized boolean isEmpty() {
return this.details == null && this.state == null && this.startTimestamp == null;
}

/**
* Resets the buffer's change state to false
*/
synchronized void resetState() {
this.changed = false;
}
}
Loading

0 comments on commit f454f38

Please sign in to comment.