⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 daemon.java

📁 一套MMORPG手机网络游戏的服务端
💻 JAVA
字号:
package com.swing.game.crystal.utils;

import java.util.*;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.Logger;

import com.swing.game.crystal.CrystalController;
import com.swing.game.crystal.CrystalPlayer;
import com.swing.server.common.*;

public class Daemon implements Runnable {

    public static Logger logger = Logger.getLogger(Daemon.class);
    static {
        PropertyConfigurator.configure("./cfg/Log4j.properties");
    }

    public static final long INTERVAL = 10000;

    // private int mapNum = 0;

    private boolean ifRun;

    private int liveNum = 0;

    public void start() {
        this.ifRun = true;
        new Thread(this).start();
        System.out.println("CheckTimer starts");
    }

    public void stop() {
        this.ifRun = false;
        System.out.println("CheckTimer stops");
    }

    public void run() {
        while (ifRun) {
            try {
                Thread.sleep(INTERVAL);
                long current = System.currentTimeMillis();

                // check if the user haven't sent data to server for a long time
                liveNum++;
                if (liveNum > 4) {
                    CrystalPlayer u = null;
                    for (Iterator iter = CrystalController.getGameController().playersByPlayerId
                            .values().iterator(); iter.hasNext();) {
                        u = (CrystalPlayer) iter.next();
                        if (current - u.time >= CrystalPlayer.INTERVAL) {
                            logger.info("User " + u.id
                                    + " was kicked by Deamon");
                            // 删除用户~~
                            ((GameFunction) CrystalController
                                    .getGameController().function.get("E"))
                                    .handleRequest(u.id, "E");
                        }
                    }
                }
                /*
                 * // check the pk relationship PKPair pk = null; int flag = -1;
                 * for (Iterator iter = GameServer.PKList.values();
                 * iter.hasNext(); ) {
                 * 
                 * pk = (PKPair) iter.next(); if (pk.status == PKStatus.OVER) {
                 * iter.remove(); pk = null; continue; } if (pk.status ==
                 * PKStatus.WAITING) { if (current - pk.sponserTimer > INTERVAL)
                 * flag = 1; else if (current - pk.embracerTimer > INTERVAL)
                 * flag = 2; if (flag != -1) { synchronized (pk) { switch (flag) { //
                 * sponser overtime case 1: pk.sponserComm.append("r");
                 * pk.pk(pk.sponser.id); break; // embracer overtime case 2:
                 * pk.embracerComm.append("r"); pk.pk(pk.embracer.id); break; }
                 * ////// pk.status = PKStatus.OVER; } flag = -1; } } }
                 */
            } catch (Exception e) {
                logger.error(e);
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -