부대 편성 일부 수정

This commit is contained in:
2018-07-29 13:57:10 +09:00
parent cab159921d
commit dbf7daa17e
4 changed files with 187 additions and 275 deletions
+122 -100
View File
@@ -12,13 +12,58 @@ $connect=$db->get();
increaseRefresh("부대편성", 1);
$query = "select no,nation,troop from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
$me = $db->queryFirstRow('SELECT no,nation,troop FROM general WHERE owner=%i', $userID);
$query = "select * from troop where nation='{$me['nation']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$troopcount = MYDB_num_rows($result);
$troops = [];
foreach($db->query('SELECT troop,name,no FROM troop WHERE nation = %i', $me['nation']) as $rawTroop){
$troops[$rawTroop['troop']] = [
'troop'=>$rawTroop['troop'],
'name'=>$rawTroop['name'],
'no'=>$rawTroop['no'],
'users'=>[]
];
}
foreach($db->query(
'SELECT no,name,turntime,troop,city FROM general WHERE troop!=0 AND nation = %i ORDER BY turntime ASC',
$me['nation']
) as $general
){
if(!key_exists($general['troop'], $troops)){
trigger_error("올바르지 않은 부대 소속 {$general['no']}, {$general['name']} : {$general['troop']}");
continue;
}
$general['cityText'] = CityConst::byID($general['city'])->name;
$troops[$general['troop']]['users'][] = $general;
}
if($troops){
foreach($db->query(
'SELECT no,name,picture,imgsvr,turntime,city,turn0,turn1,turn2,turn3,turn4,turn5,troop FROM general WHERE no IN (%li)',
array_column($troops, 'no')
) as $troopLeader
){
$imageTemp = GetImageURL($troopLeader['imgsvr']);
$troopLeader['pictureFullPath'] = "$imageTemp/{$troopLeader['picture']}";
$troopLeader['cityText'] = CityConst::byID($troopLeader['city'])->name;
$troopLeader['turnText'] = join('<br>', [
'1 : '.((DecodeCommand($troopLeader['turn0'])[0] == 26)?'집합':'~'),
'2 : '.((DecodeCommand($troopLeader['turn1'])[0] == 26)?'집합':'~'),
'3 : '.((DecodeCommand($troopLeader['turn2'])[0] == 26)?'집합':'~'),
'4 : '.((DecodeCommand($troopLeader['turn3'])[0] == 26)?'집합':'~'),
'5 : '.((DecodeCommand($troopLeader['turn4'])[0] == 26)?'집합':'~'),
]);
$troops[$troopLeader['troop']]['leader'] = $troopLeader;
}
}
uasort($troops, function($lhs, $rhs){
return $lhs['leader']['turntime']<=>$rhs['leader']['turntime'];
})
?>
<!DOCTYPE html>
@@ -30,6 +75,7 @@ $troopcount = MYDB_num_rows($result);
<title><?=UniqueConst::$serverName?>: 부대편성</title>
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('css/common.css')?>
<?=WebUtil::printCSS('css/troops.css')?>
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
<?=WebUtil::printJS('js/ext.plugin_troop.js')?>
</head>
@@ -50,121 +96,97 @@ $troopcount = MYDB_num_rows($result);
<td width=130 class='bg1 center' style=table-layout:fixed;word-break:break-all;>부대장행동</td>
</tr>
</thead>
<tfoot><tr><td colspan='5'>
<?php if(!$troops): ?>
<?php elseif($me['troop'] == 0): ?>
<input type=submit name=btn value='부 대 가 입'>
<?php else: ?>
<input type=submit name=btn value='부 대 탈 퇴' onclick='return confirm(\"정말 부대를 탈퇴하시겠습니까?\")'>
<?php endif;?>
</td></tr></tfoot>
<tbody>
<?php
for($i=0; $i < $troopcount; $i++) {
$troop = MYDB_fetch_array($result);
foreach ($troops as $troopNo=>$troop) {
$troopLeader = $troop['leader'];
$genlistText = [];
$cityText = $troopLeader['cityText'];
$cityID = $troopLeader['city'];
$leaderID = $troopLeader['no'];
$genlist = "";
$query = "select no,name,picture,imgsvr,turntime,city,turn0,turn1,turn2,turn3,turn4,turn5 from general where troop='{$troop['troop']}'";
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$gencount = MYDB_num_rows($genresult);
for($j=0; $j < $gencount; $j++) {
$general = MYDB_fetch_array($genresult);
$genlist .= $general['name'].", ";
if($troop['no'] == $general['no']) {
$picture = $general['picture'];
$imageTemp = GetImageURL($general['imgsvr']);
$name = $general['name'];
$turntime = $general['turntime'];
$query = "select name from city where city='{$general['city']}'";
$cityresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$city = MYDB_fetch_array($cityresult);
$cityname = $city['name'];
$turn = "";
for($k=0; $k < 5; $k++) {
$m = $k+1;
$turnK = DecodeCommand($general["turn{$k}"]);
if($turnK[0] == 26) {
$turn .= "&nbsp;$m : 집합<br>";
} else {
$turn .= "&nbsp;$m : <br>";
}
}
foreach ($troop['users'] as $troopUser) {
$spanClass = 'troopUser';
if ($troopUser['city'] !== $cityID) {
$spanClass.= ' diffCity';
}
if ($troopUser['no'] == $leaderID) {
$spanClass.= ' leader';
}
$genlistText[] = "<span class='$spanClass' data-general-id='{$troopUser['no']}'
><span class='generalName'>{$troopUser['name']}</span><span class='cityText'>【{$troopUser['cityText']}】</span
></span>";
}
$genlist .= "({$gencount}명)";
if($me['troop'] == 0) {
echo "
$genlistText = sprintf('%s (%d명)', join(', ', $genlistText), count($genlistText)); ?>
<?php if ($me['troop'] == 0): ?>
<tr>
<td align=center rowspan=2><input "; echo $i==0?"checked ":""; echo "type=radio name=troop value='{$troop['troop']}'></td>
<td align=center >{$troop['name']}<br>【 $cityname 】</td>
<td height=64 style='background:no-repeat center url(\"{$imageTemp}/{$picture}\");background-size:64px;'>&nbsp;</td>
<td rowspan=2 width=62>$genlist</td>
<td rowspan=2>$turn</td>
<td align=center rowspan=2><input type='radio' name='troop' value='<?=$troop['troop']?>'></td>
<td align=center><?=$troop['name']?><br>【 <?=$cityText?> 】</td>
<td height=64 style='background:no-repeat center url("<?=$troopLeader['pictureFullPath']?>");background-size:64px;'>&nbsp;</td>
<td rowspan=2 width=62><?=$genlistText?></td>
<td rowspan=2><?=$troopLeader['turnText']?></td>
</tr>
<tr><td align=center><font size=2>【턴】".substr($turntime, 14)."</font></td><td align=center><font size=1>$name</font></td></tr>
<tr><td colspan=5>";
} else {
echo "
<tr>
<td align=center><font size=2>【턴】 <?=substr($troopLeader['turntime'], 14)?></font></td>
<td align=center><font size=1><?=$troopLeader['name']?></font></td></tr>
<tr><td colspan=5>
<?php else: ?>
<tr>
<td align=center rowspan=2>&nbsp;</td>
<td align=center >{$troop['name']}<br>【 $cityname 】</td>
<td height=64 style='background:no-repeat center url(\"{$imageTemp}/{$picture}\");background-size:64px;'>&nbsp;</td>
<td rowspan=2 width=576>$genlist</td>
<td rowspan=2>";
if($troop['no'] == $me['no']) {
$query = "select no,name from general where troop='{$troop['troop']}' and no!='{$me['no']}' order by binary(name)";
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$genCount = MYDB_num_rows($genresult);
echo "
<td align=center ><?=$troop['name']?><br>【 <?=$cityText?> 】</td>
<td height=64 style='background:no-repeat center url("<?=$troopLeader['pictureFullPath']?>");background-size:64px;'>&nbsp;</td>
<td rowspan=2 width=62><?=$genlistText?></td>
<td rowspan=2>
<?php if ($me['no'] == $troopLeader['no']): ?>
<select name=gen size=3 style=color:white;background-color:black;font-size:13px;width:128px;>";
for($k=0; $k < $genCount; $k++) {
$general = MYDB_fetch_array($genresult);
echo "
<option value={$general['no']}>{$general['name']}</option>";
}
echo "
<?php foreach ($troop['users'] as $troopUser): ?>
<?php if ($troopUser['no'] == $me['no']) {
continue;
} ?>
<option value='<?=$troopUser['no']?>'><?=$troopUser['name']?></option>
<?php endforeach; ?>
</select><br>
<input type=submit name=btn value='부 대 추 방' style=width:130px;height:25px;>";
} else {
echo $turn;
}
echo "
<input type=submit name=btn value='부 대 추 방' style=width:130px;height:25px;>
<?php else: ?>
<?=$troopLeader['turnText']?>
<?php endif; ?>
</td>
</tr>
<tr><td align=center><font size=2>【턴】".substr($turntime, 14)."</font></td><td align=center><font size=1>$name</font></td></tr>
<tr><td colspan=5></td></tr>";
}
}
echo "</tbody>
<tfoot><tr><td>";
if ($troopcount == 0) {
}
else if($me['troop'] == 0) {
echo"
<input type=submit name=btn value='부 대 가 입'>";
} else {
echo"
<input type=submit name=btn value='부 대 탈 퇴' onclick='return confirm(\"정말 부대를 탈퇴하시겠습니까?\")'>";
}
<tr><td align=center><font size=2>【턴】 <?=substr($troopLeader['turntime'], 14)?></font></td>
<td align=center><font size=1><?=$troopLeader['name']?></font></td></tr>
<tr><td colspan=5></td></tr>
<?php endif;
} //foreach ($troops as $troopNo=>$troop) {
?>
</tbody>
echo "
</td></tr>
</tfoot>
</table>
<br>";
echo "
<br>
<table width=1000 class='tb_layout bg0'>
<tr>
<td width=80 id=bg1>부 대 명</td>
<td width=130><input type=text style=color:white;background-color:black; size=18 maxlength=9 name=name></td>";
if($me['troop'] == 0) {
echo "
<td><input type=submit name=btn value='부 대 창 설'></td>";
} else {
echo "
<td><input type=submit name=btn value='부 대 변 경'></td>";
}
echo "
<td width=130><input type=text style=color:white;background-color:black; size=18 maxlength=9 name=name></td>
<?php if($me['troop'] == 0): ?>
<td><input type=submit name=btn value='부 대 창 설'></td>
<?php else: ?>
<td><input type=submit name=btn value='부 대 변 경'></td>
<?php endif; ?>
</tr>
</table>";
</table>
?>
<table width=1000 class='tb_layout bg0'>
<tr><td><?=backButton()?></td></tr>
<tr><td><?=banner()?> </td></tr>
+23
View File
@@ -0,0 +1,23 @@
#troop_list .cityText{
display:none;
}
#troop_list .diffCity .cityText{
display:inline;
}
#troop_list .diffCity {
color:red;
}
#troop_list .leader{
color:lightgreen;
}
#troop_list .leader::before{
content:'*';
}
#troop_list .leader::after{
content:'*';
}
+40 -174
View File
@@ -8,94 +8,8 @@ $(function(){
var $userFrame;
window.groupList = groupList;
window.userList = userList;
var aGroup = {};
$('#troop_list tbody > tr').each(function(idx){
var $this = $(this);
//console.log(this);
//console.log($this);
if(idx%3 == 0){
aGroup = {
turn : '77:77',
turnTime : 5555,
부대장 : '에러-집합장없음',
부대명 : '에러-부대명없음',
srclist : [],
도시 : '없지롱',
list: [],
trs:[]
};
aGroup.trs.push($this);
var $children = $this.children();
var names = $.trim($children.eq(1).text()).split('【');
var 부대명 = $.trim(names[0]);
var 도시 = $.trim(names[1].substr(0,names[1].length-1));
aGroup.도시 = 도시;
aGroup.부대명 = 부대명;
aGroup.obj = $this;
aGroup.$users = $children.eq(3);
var lists = $.trim($children.eq(3).text()).split(', ');
lists.pop();
aGroup.srcList = lists;
}
else if(idx%3 == 1){
aGroup.trs.push($this);
var turnBase = $this.children().eq(0).text().split('】')[1];
//console.log(turnBase);
var userName = $this.children().eq(1).text();
var turn = turnBase;
var turnMS = turnBase.split(':');
var turnM = parseInt(turnMS[0]);
var turnS = parseInt(turnMS[1]);
var turnTime = turnM*60+turnS;
aGroup.turn = turn;
aGroup.turnTime = turnTime;
aGroup.부대장 = userName;
aGroup.obj2 = $this;
groupList[aGroup.부대명] = aGroup;
tGroup.push(aGroup);
}
else{
if($this.find('input').length==0){
$this.detach();
}
}
});
$.each(tGroup,function(idx,val){
console.log(val);
for(var i=0;i<val.trs.length;i++){
val.trs[i].detach();
}
});
tGroup.sort(function(lhs,rhs){
return lhs.turnTime-rhs.turnTime;
});
var $last = $('table:eq(1) tr:eq(-1)');
var $tbody = $('table:eq(1) tbody');
$last.detach();
console.log($last);
$.each(tGroup,function(idx,val){
for(var i=0;i<val.trs.length;i++){
$tbody.append(val.trs[i]);
}
$tbody.append('<tr><td colspan="5"></td></tr>');
});
$tbody.find('tr:eq(-1)').detach();
$tbody.append($last);
var runAnalysis = function(){
$.each(groupList,function(idx,val){
val.list = [];
@@ -111,19 +25,15 @@ $(function(){
var tmpUsers = {};
$html.each(function(idx){
if(this.tagName == "TABLE"){
cnt+=1;
if(cnt==2){
tmpUsers = $(this);
return false;
}
var $this = $(this);
if($this.attr('id') == "general_list"){
tmpUsers = $(this);
return false;
}
});
tmpUsers.find("tbody > tr").each(function(idx){
var $this = $(this);
var $부대 = $this.children('.i_troop');
var 부대 = $.trim($부대.text());
@@ -134,73 +44,27 @@ $(function(){
}
$부대.remove();
var $name = $this.children('.i_name');
$name.addClass('nameplate');
var name = $name.find('.t_name').text();
var $도시 = $this.children('.i_city');
var 도시 = $.trim($도시.text());
var $턴 = $this.children('.i_action');
//console.log($턴);
var 턴0 = $턴.text().split(':');
var = parseInt(턴0[0])*60 + parseInt(턴0[1]);
var userInfo = {
이름 : name,
부대 : 부대,
도시 : 도시,
: ,
obj : $this
};
groupList[부대].list.push(userInfo);
userList[name] = userInfo;
var generalID = parseInt($this.data('general-id'));
userList[generalID] = $this;
$this.hide();
$content.append($this);
});
$.each(groupList,function(부대명,aGroup){
aGroup.$users.html('');
$.each(aGroup.list,function(idx,userInfo){
var $user = $('<span><span class="name"></span><span class="other"></span></span>');
var $userName = $user.children('.name');
if(userInfo.이름 == aGroup.부대장){
$userName.html('*'+userInfo.이름+'*');
$userName.css('color','lightgreen');
}
else{
$userName.html(userInfo.이름);
}
if(userInfo.도시 != aGroup.도시){
$userName.css('color','red');
$user.children('.other').html('【'+userInfo.도시+'】');
}
$user.hover(function(){
var top = aGroup.obj2.offset().top + aGroup.obj2.outerHeight();
$userFrame.css('top',top);
userInfo.obj.show();
$userFrame.show();
console.log('올림!'+userInfo.이름);
},function(){
$userFrame.hide();
userInfo.obj.hide();
console.log('내림!'+userInfo.이름);
});
$user.append(', ');
aGroup.$users.append($user);
});
aGroup.$users.append('('+aGroup.list.length+'명)');
$('.troopUser').hover(function(){
var $this = $(this);
var parent = $this.closest('tr');
var generalID = parseInt($this.data('general-id'));
console.log(generalID);
var top = parent.offset().top + parent.outerHeight();
$userFrame.css('top',top);
userList[generalID].show();
$userFrame.show();
},function(){
var $this = $(this);
var parent = $this.closest('tr');
var generalID = parseInt($this.data('general-id'));
userList[generalID].hide();
$userFrame.hide();
});
}
catch(err){
@@ -223,24 +87,26 @@ $(function(){
$userFrame = $('<div id="on_mover" style="position:absolute;">'+
'<table class="tb_layout bg0" style="width:100%;"><thead><tr>'+
'<td width="98" align="center" class="bg1">이 름</td>'+
'<td width="98" align="center" class="bg1"">통무지</td>'+
'<td width="58" align="center" class="bg1">자 금</td>'+
'<td width="58" align="center" class="bg1">군 량</td>'+
'<td width="48" align="center" class="bg1">도시</td>'+
'<td width="28" align="center" class="bg1">守</td>'+
'<td width="58" align="center" class="bg1">병 종</td>'+
'<td width="68" align="center" class="bg1">병 </td>'+
'<td width="48" align="center" class="bg1">훈련</td>'+
'<td width="48" align="center" class="bg1">사기</td>'+
'<td width="148" align="center" class="bg1">명 령</td>'+
'<td width="58" align="center" class="bg1">삭턴</td>'+
'<td width="58" align="center" class="bg1">턴</td>'+
'</tr></thead><tbody class="content"></tbody></table></div>');
$userFrame = $("<div id='on_mover' style='position:absolute;'>"+
"<table class='tb_layout bg0' style='width:100%;'><thead>"+
"<tr>"+
"<td width=98 class='bg1 center'>이 름</td>"+
"<td width=98 class='bg1 center'>통무지</td>"+
"<td width=53 class='bg1 center'>자 금</td>"+
"<td width=53 class='bg1 center'>군 량</td>"+
"<td width=48 class='bg1 center'>도시</td>"+
"<td width=28 class='bg1 center'>守</td>"+
"<td width=58 class='bg1 center'>병 </td>"+
"<td width=63 class='bg1 center'>병 사</td>"+
"<td width=38 class='bg1 center'>훈련</td>"+
"<td width=38 class='bg1 center'>사기</td>"+
"<td width=213 class='bg1 center'>명 령</td>"+
"<td width=38 class='bg1 center'>삭턴</td>"+
"<td width=48 class='bg1 center'>턴</td>"+
"</tr>"+
"</thead></thead><tbody class='content'></tbody></table></div>");
$userFrame.find('thead td');
$userFrame.css('width','900px').css('margin','0').css('padding','0').css('left','50%').css('margin-left','-450px');
$userFrame.css('width','960px').css('margin','0').css('padding','0').css('left','50%').css('margin-left','-480px');
$userFrame.hide();
+2 -1
View File
@@ -156,7 +156,8 @@ CREATE TABLE `general` (
INDEX `turntime` (`turntime`, `no`),
INDEX `no_member` (`owner`),
INDEX `npc` (`npc`),
INDEX `npcid` (`npcid`)
INDEX `npcid` (`npcid`),
INDEX `troop` (`troop`, `turntime`)
)
DEFAULT CHARSET=utf8mb4
ENGINE=MyISAM;