예제 #1
0
        public void UpdateProjection(IEvent @event)
        {
            if (@event is T)
            {
                onEvent((T)@event);
            }
            else
            {
                var json = @event.ToJson();

                dynamic duckTypedEvent;

                if (typeof(T).IsAbstract)
                {
                    duckTypedEvent = new DynamicEvent(json.FromJsonTo <dynamic>());
                }
                else
                {
                    duckTypedEvent = json.FromJsonTo <T>();
                }

                TrySetStreamNameFrom(@event.GetType(), duckTypedEvent, @event.EventStreamName());

                onEvent(duckTypedEvent);
            }
        }
예제 #2
0
        public void When_Timestamp_is_set_then_it_can_be_retrieved()
        {
            var e = new DynamicEvent(new JObject());

            var timestamp = Any.DateTimeOffset();

            e.Timestamp = timestamp;

            e.Timestamp.Should().Be(timestamp);
        }
예제 #3
0
        public void When_AggregateId_is_set_then_it_can_be_retrieved()
        {
            var e = new DynamicEvent(new JObject());

            var guid = Any.Guid();

            e.AggregateId = guid;

            e.AggregateId.Should().Be(guid);
        }
예제 #4
0
        public void When_DynamicEvent_is_instantiated_via_a_JObject_then_AggregateId_can_be_retrieved_via_IEvent_interface()
        {
            var guid = Any.Guid();
            var json = new
            {
                AggregateId = guid
            }.ToJson();

            IEvent dynamicEvent = new DynamicEvent(
                json.FromJsonTo <dynamic>());

            dynamicEvent.AggregateId.Should().Be(guid);
        }
예제 #5
0
        public void When_DynamicEvent_is_instantiated_via_a_JObject_then_Timestamp_can_be_retrieved_via_IEvent_interface()
        {
            var timestamp = Any.DateTimeOffset();
            var json      = new
            {
                Timestamp = timestamp
            }.ToJson();

            var jobject = json.FromJsonTo <dynamic>();

            IEvent dynamicEvent = new DynamicEvent(jobject);

            dynamicEvent.Timestamp.Should().Be(timestamp);
        }
예제 #6
0
    /// <summary>
    /// 특정 블록에 이벤트 생성 후 초기화
    /// </summary>
    /// <param name="blockIndex">생성 위치 블록의 인덱스값</param>
    /// <param name="eventIndex">초기화 값 : 이벤트 인덱스</param>
    /// <param name="_count">초기화 값 : 수량</param>
    /// <param name="creator">초기화 값 : 이벤트 생성자</param>
    public DynamicEvent CreateEventObject(int blockIndex, int eventIndex, int _count, Player creator)
    {
        Debug.LogWarning("이벤트 생성 :: " + blockIndex + " 에서 생성됨");

        // 아이템 오브젝트 생성 후 스크립트 확보
        DynamicEvent dEvent = Create(blockIndex);

        // 아이템 셋팅
        dEvent.SetUp(eventIndex, _count, creator);


        // 목록에 추가
        eventObjectList.Add(dEvent);

        // 장애물 등록
        dEvent.CreateBarricade();

        return(dEvent);
    }
예제 #7
0
    //public void CallMessageBox()
    //{
    //    MessageBox mb = GameData.gameMaster.messageBox;

    //    // 메시지 박스 임시모드
    //    if (!mb.gameObject.activeSelf)
    //        mb.PopUp(0);

    //    // 호출
    //    eventBox.gameObject.SetActive(true);
    //}

    //public void CloseMessageBox()
    //{
    //    MessageBox mb = GameData.gameMaster.messageBox;

    //    // 메시지 박스 임시모드일 경우 닫기
    //    if (mb.pageSwitch.objectList[0].activeSelf)
    //        mb.PopUp(MessageBox.Type.Close);

    //    // 비활성
    //    eventBox.gameObject.SetActive(false);
    //}



    /// <summary>
    /// 특정 블록에 아이템 생성
    /// </summary>
    /// <param name="blockIndex">특정 블록의 인덱스 값</param>
    DynamicEvent Create(int blockIndex)
    {
        // 생성할 좌표
        Vector3 pos = GameData.blockManager.GetBlock(blockIndex).transform.position;

        // y축 보정
        pos.y = 2.5f;

        // 이벤트 오브젝트 생성
        Transform obj = Instantiate(eventPrefab, pos, Quaternion.identity, transform).transform;

        // 결과물
        DynamicEvent result = obj.GetComponent <DynamicEvent>();

        // 위치 설정
        result.location = blockIndex;


        return(result);
    }
예제 #8
0
    public void Tester(string blockIndex_eventID)
    {
        int blockIndex = 7;
        int eventID    = 1;

        string[] str = blockIndex_eventID.Split('_');
        int.TryParse(str[0], out blockIndex);
        if (str.Length > 1)
        {
            int.TryParse(str[1], out eventID);
        }

        DynamicEvent de =
            CreateEventObject(
                blockIndex,
                eventID,
                1,
                Player.me
                );
    }
예제 #9
0
    /// <summary>
    /// 오브젝트 단일 습득
    /// </summary>
    /// <param name="current"></param>
    /// <returns></returns>
    IEnumerator GetObject(DynamicObject current)
    {
        // 습득중 처리
        objectPickUpStep = ActionProgress.Working;

        // 아이템일 경우
        if (current.type == DynamicObject.Type.Item)
        {
            DynamicItem di = (DynamicItem)current;

            Debug.LogWarning("아이템 오브젝트 :: 습득 => " + di.item.index);

            // 획득
            di.GetItem(owner);

            // 연출 명령
            yield return(null);
        }

        // 아이템일 경우
        else if (current.type == DynamicObject.Type.Event)
        {
            DynamicEvent de = (DynamicEvent)current;

            Debug.LogWarning("이벤트 오브젝트 :: 습득 => " + de.iocEvent.index);

            // 획득
            //de.GetEvent(owner, de.location);
            de.GetEvent(owner);

            // 연출 명령
            yield return(null);
        }

        // 습득 리스트에서 제거
        objectPickUpList.Remove(current);

        // 습득중 완료 처리
        objectPickUpStep = ActionProgress.Start;
    }
예제 #10
0
    public static void ReCreateAll(bool isDeleted)
    {
        Debug.LogError("이벤트 오브젝트 :: 재생성 요청됨 => 총 " + eventObjectList.Count);

        // 백업
        List <DynamicEvent> temp = eventObjectList;

        // 초기화
        eventObjectList = new List <DynamicEvent>();

        // 반복 재생성
        for (int i = 0; i < temp.Count; i++)
        {
            DynamicEvent dTemp = temp[i];

            // 리스트 및 장애물 제거
            //dTemp.Remove();
            dTemp.RemoveBarricade();

            Debug.LogError(dTemp.location);
            Debug.LogError(dTemp.iocEvent.index);
            Debug.LogError(dTemp.count);
            Debug.LogError(dTemp.creator.name);

            // 생성
            GameMaster.script.eventManager.CreateEventObject(
                dTemp.location,
                dTemp.iocEvent.index,
                dTemp.count,
                dTemp.creator
                );

            // 제거
            if (!isDeleted)
            {
                Destroy(dTemp.transform);
            }
        }
    }
예제 #11
0
        public JsonResult InsertDynamicEvent(HDB context, DynamicEvent dynamicEvent)
        {
            if (context.DynamicEvents.Count() > 0)
            {
                if (context.DynamicEvents.Select(d => d.ID).Contains(dynamicEvent.ID))
                {
                    return(Json(new InsertionOutcome {
                        outcome = "Found", ID = dynamicEvent.ID.ToString()
                    }));
                }
            }

            if (dynamicEvent.ID < 0)
            {
                dynamicEvent.ID = 0;
            }
            context.DynamicEvents.Add(dynamicEvent);
            context.SaveChanges();

            return(Json(new InsertionOutcome {
                outcome = "Success", ID = dynamicEvent.ID.ToString()
            }));
        }
예제 #12
0
 public void AddDynamicEvent(DynamicEvent dynamicEvent)
 {
     mDynamicEvents.Add(dynamicEvent);
 }
예제 #13
0
    /// <summary>
    /// 세이브 코드 반환
    /// </summary>
    static StringBuilder SaveCode()
    {
        StringBuilder sb = new StringBuilder();

        // 게임 정보
        sb
        .Append(GameRule.area)
        .Append(codeData)
        .Append(GameRule.section)
        .Append(codeData)
        .Append(Cycle.now)
        .Append(codeData)
        .Append(Cycle.goal)
        .Append(codeData)
        .Append(Player.allPlayer.Count)
        .Append(codeData)
        .Append(BlockWork.plusBlockValue)
        .Append(codeData)
        .Append(BlockWork.minusBlockValue)

        .Append(codeChapter)
        ;

        // 플레이어 정보
        for (int i = 0; i < Player.allPlayer.Count; i++)
        {
            Player temp = Player.allPlayer[i];

            sb
            .Append(Turn.Index(temp))
            .Append(codeData)
            .Append((int)(temp.type))
            .Append(codeData)
            .Append(temp.character.index)
            .Append(codeData)
            .Append(temp.isAutoPlay)
            .Append(codeData)
            .Append(temp.name)
            .Append(codeData)
            .Append(temp.movement.location)
            .Append(codeData)

            .Append(temp.life.Value)
            .Append(codeData)
            .Append(temp.coin.Value)
            .Append(codeData)

            .Append(temp.dice.count)
            .Append(codeData)
            .Append(temp.dice.valueTotal)
            .Append(codeData)
            .Append(temp.dice.valueRecord)
            .Append(codeData)
            ;

            for (int j = 0; j < Player.inventoryMax; j++)
            {
                if (temp.inventory[j].count > 0)
                {
                    // 유효한 아이템
                    sb
                    .Append(temp.inventory[j].item.index)
                    .Append(codeData)
                    .Append(temp.inventory[j].count)
                    ;
                }
                else
                {
                    // 아이템 없음
                    sb
                    .Append(-1)
                    .Append(codeData)
                    .Append(0)
                    ;
                }


                if (j < Player.inventoryMax - 1)
                {
                    sb.Append(codeData);
                }
            }

            if (Player.allPlayer.Count > 1 && i != Player.allPlayer.Count - 1)
            {
                sb.Append(codeLine);
            }
        }
        sb.Append(codeChapter);


        // 아이템 오브젝트 배치
        for (int i = 0; i < ItemManager.itemObjectList.Count; i++)
        {
            DynamicItem obj = ItemManager.itemObjectList[i];

            sb
            .Append(obj.location)
            .Append(codeData)
            .Append(obj.item.index)
            .Append(codeData)
            .Append(obj.count)
            ;

            if (i > 0 && i != ItemManager.itemObjectList.Count - 1)
            {
                sb.Append(codeLine);
            }
        }
        sb.Append(codeChapter);


        // 이벤트 오브젝트 배치
        for (int i = 0; i < EventManager.eventObjectList.Count; i++)
        {
            DynamicEvent obj = EventManager.eventObjectList[i];

            sb
            .Append(obj.location)
            .Append(codeData)
            .Append(obj.iocEvent.index)
            .Append(codeData)
            .Append(obj.count)
            .Append(codeData)
            .Append(Player.Index(obj.creator))
            ;

            if (i > 0 && i != EventManager.eventObjectList.Count - 1)
            {
                sb.Append(codeLine);
            }
        }
        sb.Append(codeChapter);


        // 상황 설정
        sb
        .Append(Player.Index(Turn.now))
        .Append(codeData)
        .Append((int)GameData.gameFlow)
        .Append(codeData)
        .Append((int)Turn.turnAction)

        //.Append(codeChapter)
        ;


        // 종료 문자
        sb.Append('#');

        return(sb);
    }
예제 #14
0
 public void OnEvent(DynamicEvent data, long sequence, bool endOfBatch)
 {
 }
예제 #15
0
	public void AddDynamicEvent(DynamicEvent dynamicEvent)
	{
		mDynamicEvents.Add(dynamicEvent);
	}
예제 #16
0
 public EventErrorDescriptor(DynamicEvent eventData, string eventType, EventHeader header)
     : this()
 {
     EventData = new EventData(eventType, eventData);
     Header    = header;
 }