189 lines
6.9 KiB
TypeScript
189 lines
6.9 KiB
TypeScript
import DB from "../utils/DB";
|
|
import {MsgCode} from "../role/EEnum";
|
|
import SKDataUtil from "../gear/SKDataUtil";
|
|
import TeamMgr from "../core/TeamMgr";
|
|
import GameUtil from "../core/GameUtil";
|
|
|
|
export default class Marry {
|
|
|
|
static shared = new Marry();
|
|
|
|
// 结婚数据
|
|
marry_map: Map<number, any>;
|
|
|
|
constructor() {
|
|
this.marry_map = new Map<number, any>();
|
|
}
|
|
|
|
init() {
|
|
DB.selectMarry((code: any, info: any) => {
|
|
if (MsgCode.SUCCESS == code){
|
|
for (const data of info) {
|
|
this.marry_map.set(data.roleid_a,{roleid_a: data.roleid_a, rolename_a: data.rolename_a, roleid_b: data.roleid_b, rolename_b: data.rolename_b});
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
//获取结婚状态
|
|
getMarryState(roleid: number){
|
|
for(let [key, value] of this.marry_map){
|
|
if(value.roleid_a == roleid || value.roleid_b == roleid) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
//获取结婚对象
|
|
getMarryRoleName(roleid: number){
|
|
for(let [key, value] of this.marry_map){
|
|
if(value.roleid_a == roleid){
|
|
return value.rolename_b;
|
|
}
|
|
if(value.roleid_b == roleid){
|
|
return value.rolename_a;
|
|
}
|
|
}
|
|
}
|
|
|
|
getMarried(player: any, team: any){
|
|
for(let tplayer of team){
|
|
let flag = this.getMarryState(tplayer.roleid);
|
|
if(flag){
|
|
player.send_notice(`${tplayer.name}已结婚`);
|
|
return;
|
|
}
|
|
if(tplayer.money < 10000000 || tplayer.bind_jade < 100000){
|
|
player.send_notice(`${tplayer.name}结婚所需费用不足`);
|
|
return;
|
|
}
|
|
}
|
|
player.send("s2c_get_married",{
|
|
teamlist: SKDataUtil.toJson(team,"[]")
|
|
})
|
|
}
|
|
|
|
operationMarry(player: any, oper: number){
|
|
let team = TeamMgr.shared.getTeamPlayer(player.teamid);
|
|
if(team){
|
|
if(oper == 0){
|
|
player.send("s2c_operation_married",{
|
|
roleid: player.roleid,
|
|
oper: oper
|
|
})
|
|
}
|
|
if(oper == 1){
|
|
for(let tplayer of team){
|
|
tplayer.send_notice(`玩家${player.name}拒绝了结婚`);
|
|
}
|
|
return;
|
|
}
|
|
if(oper == 2){
|
|
for(let tplayer of team){
|
|
tplayer.send_notice(`玩家${player.name}没有确认,暂时不能为你们办理婚礼!`);
|
|
}
|
|
return;
|
|
}
|
|
if(oper == 3){
|
|
let leader = null;
|
|
let member = null;
|
|
for (let tplayer of team) {
|
|
if(tplayer.isleader){
|
|
leader = tplayer;
|
|
}else{
|
|
member = tplayer;
|
|
}
|
|
tplayer.addMoney(GameUtil.goldKind.Money,-10000000,"结婚")
|
|
tplayer.addMoney(GameUtil.goldKind.BindJade,-100000,"结婚")
|
|
}
|
|
if(leader != null && member != null){
|
|
this.marry_map.set(leader.roleid,{roleid_a: leader.roleid, roleid_b: member.roleid});
|
|
DB.insertMarry(leader.roleid,leader.name,member.roleid,member.name);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//离婚
|
|
divorceById(player: any){
|
|
let flag = false;
|
|
let otherid = 0; //另一个玩家的id
|
|
for(let [key, value] of this.marry_map){
|
|
if(value.roleid_a == player.roleid){
|
|
otherid = value.roleid_b;
|
|
flag = true;
|
|
break;
|
|
}
|
|
if(value.roleid_b == player.roleid){
|
|
otherid = value.roleid_a;
|
|
flag = true;
|
|
break;
|
|
}
|
|
}
|
|
if(flag){
|
|
if(player.team_id <= 0){
|
|
if(player.money < 5000000 || player.bind_jade < 500000){
|
|
player.send_notice('离婚所需费用不足!');
|
|
return;
|
|
}
|
|
let name = this.getMarryRoleName(player.roleid);
|
|
player.addMoney(GameUtil.goldKind.Money, -5000000, "离婚");
|
|
player.addMoney(GameUtil.goldKind.BindJade, -500000, "离婚");
|
|
this.confirmDivorce(player.roleid);
|
|
player.send_notice(`你已经和${name}离婚了`);
|
|
return;
|
|
}else{
|
|
let team = TeamMgr.shared.getTeamPlayer(player.teamid);
|
|
if(team.length > 2){
|
|
player.send_notice('组队成员只能有结婚对象!');
|
|
return;
|
|
}
|
|
if(team.length < 2){
|
|
if(player.money < 5000000 || player.bind_jade < 500000){
|
|
player.send_notice('离婚所需费用不足!');
|
|
return;
|
|
}
|
|
let name = this.getMarryRoleName(player.roleid);
|
|
player.addMoney(GameUtil.goldKind.Money, -5000000, "离婚");
|
|
player.addMoney(GameUtil.goldKind.BindJade, -500000, "离婚");
|
|
this.confirmDivorce(player.roleid);
|
|
player.send_notice(`你已经和${name}离婚了`);
|
|
return;
|
|
}else{
|
|
for(let tplayer of team){
|
|
if(tplayer.money < 5000000 || player.bind_jade < 500000){
|
|
player.send_notice(`${tplayer.name}离婚所需费用不足!`);
|
|
return;
|
|
}
|
|
}
|
|
for(let tplayer of team){
|
|
if(tplayer.roleid != player.roleid && tplayer.roleid == otherid){
|
|
player.addMoney(GameUtil.goldKind.Money, -1000000, "离婚");
|
|
player.addMoney(GameUtil.goldKind.BindJade, -100000, "离婚");
|
|
tplayer.addMoney(GameUtil.goldKind.Money, -1000000, "离婚");
|
|
tplayer.addMoney(GameUtil.goldKind.BindJade, -100000, "离婚");
|
|
player.send_notice(`你已经和${tplayer.name}离婚了`);
|
|
tplayer.send_notice(`你已经和${player.name}离婚了`);
|
|
this.confirmDivorce(player.roleid);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}else{
|
|
player.send_notice('你还没结过婚呢!');
|
|
return;
|
|
}
|
|
}
|
|
|
|
confirmDivorce(roleid: any){
|
|
for(let [key, value] of this.marry_map){
|
|
if(value.roleid_a == roleid || value.roleid_b == roleid) {
|
|
this.marry_map.delete(key);
|
|
DB.deleteMarry(value.roleid_a);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
} |