From e2632db0d2f622771d942e235be614e26ae87f85 Mon Sep 17 00:00:00 2001
From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com>
Date: Fri, 19 Jun 2020 20:47:37 +0000
Subject: [PATCH] Reverted previous commit.
---
.../commons/util/PrimitiveDoubleEnumMap.java | 232 ------------------
.../model/actor/stat/CreatureStat.java | 15 +-
2 files changed, 7 insertions(+), 240 deletions(-)
delete mode 100644 L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/commons/util/PrimitiveDoubleEnumMap.java
diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/commons/util/PrimitiveDoubleEnumMap.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/commons/util/PrimitiveDoubleEnumMap.java
deleted file mode 100644
index 44d02dffeb..0000000000
--- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/commons/util/PrimitiveDoubleEnumMap.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package org.l2jmobius.commons.util;
-
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * @author Mobius
- */
-public class PrimitiveDoubleEnumMap
-{
- private Entry[] _array;
- private final int _initialSize;
- private int _size = 0;
-
- private class Entry
- {
- private final Enum> key;
- private double value;
-
- public Entry(Enum> key, double value)
- {
- this.key = key;
- this.value = value;
- }
- }
-
- public PrimitiveDoubleEnumMap()
- {
- _initialSize = 10;
- _array = new Entry[_initialSize];
- }
-
- public PrimitiveDoubleEnumMap(int size)
- {
- _initialSize = size;
- _array = new Entry[size];
- }
-
- public PrimitiveDoubleEnumMap(PrimitiveDoubleEnumMap map)
- {
- _initialSize = map.getInitialSize();
- _array = new Entry[map.size()];
-
- for (Entry element : map.getEntries())
- {
- if (element != null)
- {
- put(element.key, element.value);
- }
- }
- }
-
- public int size()
- {
- return _size;
- }
-
- public int getInitialSize()
- {
- return _initialSize;
- }
-
- public void clear()
- {
- _size = 0;
- _array = new Entry[_initialSize];
- }
-
- public Entry[] getEntries()
- {
- return _array;
- }
-
- public double get(Enum> key)
- {
- return getOrDefault(key, 0);
- }
-
- public double getOrDefault(Enum> key, double defaultValue)
- {
- for (Entry element : _array)
- {
- if ((element != null) && (element.key == key))
- {
- return element.value;
- }
- }
- return defaultValue;
- }
-
- public void put(Enum> key, double value)
- {
- if (_array.length >= _size)
- {
- for (int i = 0; i < _array.length; i++)
- {
- if (_array[i] == null)
- {
- _size++;
- _array[i] = new Entry(key, value);
- }
- }
- }
- else
- {
- int newPosition = _array.length;
- increaseSize(_array.length); // Double size.
- _size++;
- _array[newPosition] = new Entry(key, value);
- }
- }
-
- public void increaseSize(int count)
- {
- Entry[] temp = new Entry[_array.length + count];
- for (int i = 0; i < _array.length; i++)
- {
- temp[i] = _array[i];
- }
- _array = temp;
- temp = null;
- }
-
- public void remove(Enum> key)
- {
- for (int i = 0; i < _array.length; i++)
- {
- if (_array[i] != null)
- {
- _size--;
- _array[i] = null;
- }
- }
- }
-
- public Set> keySet()
- {
- final Set> result = new HashSet<>(_size);
- for (Entry element : _array)
- {
- if (element != null)
- {
- result.add(element.key);
- }
- }
- return result;
- }
-
- public double[] values()
- {
- double[] result = new double[_size];
- int position = 0;
- for (Entry element : _array)
- {
- if (element != null)
- {
- result[position++] = element.value;
- }
- }
- return result;
- }
-
- public boolean containsKey(Enum> key)
- {
- for (Entry element : _array)
- {
- if ((element != null) && (element.key == key))
- {
- return true;
- }
- }
- return false;
- }
-
- public boolean containsValue(double value)
- {
- for (Entry element : _array)
- {
- if ((element != null) && (element.value == value))
- {
- return true;
- }
- }
- return false;
- }
-
- public void mergeAdd(Enum> key, double value)
- {
- // Existing key.
- for (Entry element : _array)
- {
- if ((element != null) && (element.key == key))
- {
- element.value += value;
- return;
- }
- }
- // Non existing key.
- put(key, value);
- }
-
- public void mergeMul(Enum> key, double value)
- {
- // Existing key.
- for (Entry element : _array)
- {
- if ((element != null) && (element.key == key))
- {
- element.value *= value;
- return;
- }
- }
- // Non existing key.
- put(key, value);
- }
-}
diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
index b328ce9c01..893844d6e8 100644
--- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
+++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
@@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.model.actor.stat;
import java.util.Collections;
import java.util.Deque;
+import java.util.EnumMap;
import java.util.EnumSet;
import java.util.HashSet;
import java.util.Iterator;
@@ -32,7 +33,6 @@ import java.util.function.BiFunction;
import java.util.function.BiPredicate;
import org.l2jmobius.Config;
-import org.l2jmobius.commons.util.PrimitiveDoubleEnumMap;
import org.l2jmobius.gameserver.enums.AttributeType;
import org.l2jmobius.gameserver.enums.Position;
import org.l2jmobius.gameserver.model.actor.Creature;
@@ -60,8 +60,8 @@ public class CreatureStat
private int _maxBuffCount = Config.BUFFS_MAX_AMOUNT;
private double _vampiricSum = 0;
- private final PrimitiveDoubleEnumMap _statsAdd = new PrimitiveDoubleEnumMap();
- private final PrimitiveDoubleEnumMap _statsMul = new PrimitiveDoubleEnumMap();
+ private final Map _statsAdd = new EnumMap<>(Stat.class);
+ private final Map _statsMul = new EnumMap<>(Stat.class);
private final Map> _moveTypeStats = new ConcurrentHashMap<>();
private final Map _reuseStat = new ConcurrentHashMap<>();
private final Map _mpConsumeStat = new ConcurrentHashMap<>();
@@ -772,7 +772,7 @@ public class CreatureStat
*/
public void mergeAdd(Stat stat, double value)
{
- _statsAdd.mergeAdd(stat, value);
+ _statsAdd.merge(stat, value, stat::functionAdd);
}
/**
@@ -782,7 +782,7 @@ public class CreatureStat
*/
public void mergeMul(Stat stat, double value)
{
- _statsMul.mergeMul(stat, value);
+ _statsMul.merge(stat, value, stat::functionMul);
}
/**
@@ -887,9 +887,8 @@ public class CreatureStat
public void recalculateStats(boolean broadcast)
{
// Copy old data before wiping it out
- final PrimitiveDoubleEnumMap adds = !broadcast ? new PrimitiveDoubleEnumMap() : new PrimitiveDoubleEnumMap(_statsAdd);
- final PrimitiveDoubleEnumMap muls = !broadcast ? new PrimitiveDoubleEnumMap() : new PrimitiveDoubleEnumMap(_statsMul);
-
+ final Map adds = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsAdd);
+ final Map muls = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsMul);
_lock.writeLock().lock();
try
{