+
[,$itemType, $itemFunc,,,]){
- $itemCode = $general[$itemType];
- $itemClass = buildItemClass($itemCode);
- if(!$itemClass->isBuyable()){
+ foreach($itemTypes as $itemType=>$itemTypeName){
+ $itemClassName = $general[$itemType];
+ $itemClass = buildItemClass($itemClassName);
+ if($itemClass->isBuyable()){
+ continue;
+ }
+
+ if(key_exists($itemClassName, $itemOwners)){
+ $itemOwners[$itemClassName][] = $general;
+ }
+ else{
+ $itemOwners[$itemClassName] = [$general];
+ }
+
+ }
+}
+
+foreach(GameConst::$allItems as $itemType=>$itemList){
+ $itemNameType = $itemTypes[$itemType];
+ $itemList = array_reverse($itemList, true);
+
+
+ $itemRanker = [];
+ foreach($itemList as $itemClassName=>$itemCnt){
+ if($itemCnt==0){
+ continue;
+ }
+ $itemClass = buildItemClass($itemClassName);
+
+ if($itemClass->isBuyable()){
continue;
}
$info = $itemClass->getInfo();
$name = $itemClass->getName();
+
if($info){
$name = $templates->render('tooltip', [
- 'text'=>$text,
+ 'text'=>$name,
'info'=>$info,
]);
}
-
+ foreach(Util::range($itemCnt) as $itemIdx){
+ if(($itemOwners[$itemClassName][$itemIdx]??null) === null){
+ $emptyCard = [
+ 'rankName' => $name,
+ 'pictureFullPath' => GetImageURL(0)."/default.jpg",
+ 'value'=>$itemClassName,
+ 'name'=>'미발견',
+ 'bgColor'=>GameConst::$basecolor4,
+ 'fgColor'=>newColor(GameConst::$basecolor4),
+ ];
+ $itemRanker[] = $emptyCard;
+ continue;
+ }
- $general['rankName'] = $name;
- $general['value'] = $itemCode;
- $itemTypes[$itemIdx][5][$itemCode] = $general;
- }
-}
+ $general = $itemOwners[$itemClassName][$itemIdx];
-foreach($itemTypes as [$itemNameType, $itemType, $itemFunc, $itemMinCode, $itemMaxCode, $itemOwners]){
- $itemRanker = [];
- for($itemCode = $itemMaxCode; $itemCode >= $itemMinCode; $itemCode--){
- if(!key_exists($itemCode, $itemOwners)){
- $emptyCard = [
- 'rankName' => ($itemFunc)($itemCode),
- 'pictureFullPath' => GetImageURL(0)."/default.jpg",
- 'value'=>$itemCode,
- 'name'=>'미발견',
- 'bgColor'=>GameConst::$basecolor4,
- 'fgColor'=>newColor(GameConst::$basecolor4),
+ $card = [
+ 'rankName' => $name,
+ 'pictureFullPath' => $general['pictureFullPath'],
+ 'value'=>$itemClassName,
+ 'nationName'=>$general['nationName'],
+ 'name'=>$general['name'],
+ 'bgColor'=>$general['bgColor'],
+ 'fgColor'=>$general['dfColor'],
];
- $itemRanker[$itemCode] = $emptyCard;
- continue;
+ $itemRanker[] = $card;
}
-
- $general = $itemOwners[$itemCode];
- $itemRanker[$itemCode] = $general;
}
-
+
echo $templates->render('hallOfFrame', [
'typeName'=>$itemNameType,
'generals'=>$itemRanker
diff --git a/hwe/sammo/BaseItem.php b/hwe/sammo/BaseItem.php
index f74daef9..1b73d684 100644
--- a/hwe/sammo/BaseItem.php
+++ b/hwe/sammo/BaseItem.php
@@ -23,6 +23,13 @@ class BaseItem implements iAction{
function getRawName(){
return $this->rawName;
}
+
+ public function getRawClassName(bool $shortName=true):string{
+ if($shortName){
+ return Util::getClassNameFromObj($this);
+ }
+ return static::class;
+ }
function getCost(){
return $this->cost;
diff --git a/showErrorLog.php b/showErrorLog.php
index 47f124f9..a5051852 100644
--- a/showErrorLog.php
+++ b/showErrorLog.php
@@ -4,6 +4,15 @@ namespace sammo;
require(__DIR__.'/vendor/autoload.php');
$session = Session::requireLogin('./')->setReadOnly();
+if(key_exists('from', $_REQUEST) && is_numeric($_REQUEST['from'])){
+ $from = (int)$_REQUEST['from'];
+ if($from < 0){
+ $from = 0;
+ }
+}
+else{
+ $from = 0;
+}
$allowUpdate = false;
@@ -34,7 +43,7 @@ $err_logs = $fdb->select('err_log', [
'webuser'
], [
'ORDER'=>['id'=>'DESC'],
- 'LIMIT'=>100
+ 'LIMIT'=>[$from, 100]
]);
?>
@@ -74,6 +83,7 @@ $err_logs = $fdb->select('err_log', [