Esempio n. 1
0
    void Start()
    {
        bs     = cam.AddComponent <BattleStart>();
        bq     = cam.AddComponent <BattleQueue>();
        battle = cam.AddComponent <Battle>();

        allyArmy  = bs.CreateArmy("Ally");
        enemyArmy = bs.CreateArmy("Enemy");

        battleQueue = bq.CreateQueue(allyArmy, enemyArmy);
    }
Esempio n. 2
0
        public ActionResult PreBattle()
        {
            if (Session["gladiator"] == null) // If the gladiator session expired or for some reason null it send player back to index.
            {
                return(RedirectToAction("Index"));
            }
            else
            {
                int       gId       = (Session["gladiator"] as Gladiator).Id;          // taking out the gladiator id from the session.
                Gladiator gladiator = db.Gladiators.SingleOrDefault(i => i.Id == gId); // picking up the gladiator based on the Id.

                if (Session["enemy"] == null)                                          // If the session for opponent expired or for some reason null send player to gladiator menu.
                {
                    return(View("GladiatorMenu", gladiator));
                }
                else
                {
                    int      oId      = (Session["enemy"] as Opponent).Id;
                    Opponent opponent = db.Opponents.SingleOrDefault(i => i.Id == oId);

                    if (gladiator == null || opponent == null)
                    {
                        return(new HttpStatusCodeResult(400));
                    }
                    else
                    {
                        BattleStart battleStart = new BattleStart(); // Setting up a new battle
                        battleStart.Gladiator  = gladiator;          // Saving the gladiator into the BattleStart class.
                        battleStart.Opponent   = opponent;
                        battleStart.BattleDate = DateTime.Today;
                        battleStart.Finished   = "No";
                        db.Battles.Add(battleStart);
                        db.SaveChanges();

                        return(View("BattleView", battleStart));
                    }
                }
            }
        }
Esempio n. 3
0
    /*public static void InitializePlayersTeam()
     * {
     *  foreach (var i in playersTeam)
     *      managers.Add(i);
     * }
     *
     * public static void InitializeEnemyTeam()
     * {
     *  foreach (var i in enemyTeam)
     *      managers.Add(i);
     * }*/

    public static void InitializeBattleManager()
    {
        BattleStart.Initialize();
        battleManager.Initialize();
        ui.Initialize();
    }
Esempio n. 4
0
    public void HandleReceive()
    {
        lock (mutex)
        {
            do
            {
                if (offset < DataSizeOffset + DataSize)
                {
                    break;
                }

                // 先读取包的size
                int packet_size = ByteOrderConverter.NetworkToHostOrder(BitConverter.ToInt32(buffer, DataSizeOffset));

                int proto_total_len = packet_size + WrapperLen;

                if (offset < proto_total_len)
                {
                    break;
                }

                // 读取包id
                int id = ByteOrderConverter.NetworkToHostOrder(BitConverter.ToInt16(buffer, HandlerIdOfffset));

                // 处理具体的包协议
                object proto_data = null;
                int    proto_data_deserialize_offset = DataOffset;

                switch (id)
                {
                case ResponseId.JoinRoomResult:
                {
                    proto_data = JoinRoomResult.Deserialize(buffer, ref proto_data_deserialize_offset);
                }
                break;

                case ResponseId.BattleStart:
                {
                    proto_data = BattleStart.Deserialize(buffer, ref proto_data_deserialize_offset);
                }
                break;

                case ResponseId.Tick:
                {
                    proto_data = TickList.Deserialize(buffer, ref proto_data_deserialize_offset);
                }
                break;

                default:
                    break;
                }
                ;

                if (proto_data != null)
                {
                    ProtoData data = new ProtoData();
                    data.id    = id;
                    data.proto = proto_data;

                    proto_data_queue.Enqueue(data);
                }

                // 包体读取完毕
                Array.Copy(buffer, proto_total_len, buffer, 0, offset - proto_total_len);
                offset = offset - proto_total_len;
            }while(true);
        }
    }
Esempio n. 5
0
 public void InitiateBattle()
 {
     BattleStart?.Invoke();
 }
Esempio n. 6
0
    public void MainThreadFunc(float delta_time)
    {
        // called every frame
        ProtoData proto_data = receiveBuffer.DequeueProtoData();

        while (proto_data != null)
        {
            //Debug.Log("收到消息包 id : " + proto_data.id);

            switch (proto_data.id)
            {
            case ResponseId.JoinRoomResult:
            {
                JoinRoomResult result = proto_data.proto as JoinRoomResult;

                // 逻辑层更新
                BL.BLTimelineController.Instance().OnJoinRoom(result.team_id);
                // 表现层更新
                BattleField.battle_field.OnJoinRoom(result.team_id, result.team_id);
            }
            break;

            case ResponseId.BattleStart:
            {
                BattleStart result = proto_data.proto as BattleStart;

                BL.BLTimelineController.Instance().Start();
                BattleFieldInputHandle.Instance().enabled = true;
            }
            break;

            case ResponseId.Tick:
            {
                TickList tick_list = proto_data.proto as TickList;
                //Debug.Log("收到同步帧 " + tick_list.frame);

                // 先把指令放入队列
                for (int i = 0; i < tick_list.list.Count; ++i)
                {
                    Tick tick = tick_list.list[i];

                    switch (tick.command_type)
                    {
                    case BL.TickCommandType.Move:
                    {
                        BL.BLIntVector3 dest_position;
                        dest_position.x = tick.x;
                        dest_position.y = 0;
                        dest_position.z = tick.y;

                        BL.BLCommandBase command = BL.BLCommandManager.Instance().CreateMove2PositionCommand(tick.cast_id, tick_list.frame, dest_position);

                        BL.BLCommandManager.Instance().AddCommand(command.cast_frame, command);
                    }
                    break;

                    case BL.TickCommandType.PUT_HERO:
                    {
                        BL.BLCommandBase command = BL.BLCommandManager.Instance().CreatePutHeroCommand(tick.team_id, tick_list.frame, tick.hero_index);

                        BL.BLCommandManager.Instance().AddCommand(command.cast_frame, command);
                    }
                    break;

                    case BL.TickCommandType.PURSUE_TARGET:
                    {
                    }
                    break;
                    }
                    ;
                }

                // 时间轴控制进行一帧, 分发指令
                BL.BLTimelineController.Instance().frame_received++;
            }
            break;

            default:
                break;
            }
            ;

            proto_data = receiveBuffer.DequeueProtoData();
        }
    }