Example #1
0
func main() {
	lconf.LogLevel = conf.Server.LogLevel
	lconf.LogPath = conf.Server.LogPath

	logger.GetLogger().Infof("prepare Run:")
	leaf.Run(
		game.Module,
		gate.Module,
		login.Module,
	)
	logger.GetLogger().Infof("prepare Exit")
}
Example #2
0
//todo:warrior 实现 time.Receiver 接口,这样就可以得到时间片来进行行动了
func (self *Battle) Receive(ts dataStructure.TimeSpan) {

	fmt.Printf("Receive:[%v] ,status is: [%v]\n", ts, self.Status)
	switch self.Status {
	case STATUS_INIT:
		self.Start()
		fallthrough
	case STATUS_ING:
		//		fmt.Printf("Receive actSeq:[%v]\n",self.ActSeq.Len())
		//累加进行时间
		self.Report.AddTimeConsumed(ts)
		/*
			进行战斗:
			* 从行动队列里,取出行动顺序最高的角色,按照顺序分配动作时间片
		*/
		for oneWarrior := self.ActSeq.List.Front(); oneWarrior != nil; oneWarrior = oneWarrior.Next() {
			w := oneWarrior.Value.(*Warrior)
			if w.Status != WARRIOR_DEAD {
				//对角色进行时间片输入
				w.Receive(ts)
			}

		}

		//发射事件 func(目前为止总时间,本次流失时间)
		self.Emit(EVENT_TIME_ELAPSED, self.Report.TimeConsumed, ts)

	case STATUS_OVER:
		//如果战斗已经结束,还收到时间片,不做事情
		//		self.END()
	default:
		logger.GetLogger().Errorf("wrong status :%v", self.Status)
	}
}
Example #3
0
func Login(args []interface{}) {
	m := args[0].(*C2S.Login)
	a := args[1].(gate.Agent)

	//1个简单的登录逻辑验证,如果发送的accId不在配置文件配置的范围内,则登录失败
	//	if len(m.AccID) < gamedata.AccIDMin || len(m.AccID) > gamedata.AccIDMax {
	//		a.WriteMsg(&msg.S2C_Auth{Err: msg.S2C_Auth_AccIDInvalid})
	//		return
	//	}

	logger.GetLogger().Debugf("login prepare login: [%v]", m)
	// login
	game.ChanRPC.Go("UserLogin", m, a)
	logger.GetLogger().Debugf("login after send: [%v]", m)

	//	a.WriteMsg(&msg.H{Err: msg.S2C_Auth_OK})
}
Example #4
0
//时间源开始不断的工作,产生一片一片时间片,并顺着接收者管道派发下去
func (self *Source) Begin() {
	self.State = STATE_RUNNING
	logger := logger.GetLogger()
	tickCount := 0         //记录生成的时间片数量
	printDuration := 10000 //每个多少次打印一下
	//建立一个计时器,计时器的轮休时间,就是单位时间片
	self.ticker = time.NewTicker(self.GameTimeUnit.RealSpan)
	//	logger.Infof("已创建帧间隔为 %d ms的ticker,准备进入时间生成主循环",self.GameTimeUnit.RealSpan / 1000000)
	logger.Infof("已创建帧间隔为 %v 的ticker,准备进入时间生成主循环", self.GameTimeUnit.RealSpan)

	go func() {
		for _ = range self.ticker.C {
			tickCount++
			if tickCount == printDuration {
				logger.Infof("已产生%v个时间片", tickCount)
				tickCount = 0
			}
			for _, r := range self.Receivers {
				//分发给接受者
				r.Receive(self.GameTimeUnit)
			}
		}
	}()
}