Search in sources :

Example 1 with Order

use of se.oort.diplicity.apigen.Order in project android-diplicity by zond.

the class GameActivity method showOrders.

public void showOrders() {
    hideAllExcept(R.id.orders_view);
    handleReq(JoinObservable.when(JoinObservable.from(orderService.ListOrders(game.ID, phaseMeta.PhaseOrdinal.toString())).and(phaseService.PhaseLoad(game.ID, phaseMeta.PhaseOrdinal.toString())).then(new Func2<MultiContainer<Order>, SingleContainer<Phase>, Object>() {

        @Override
        public Object call(MultiContainer<Order> orderMultiContainer, SingleContainer<Phase> phaseSingleContainer) {
            Map<String, String> resultMap = new HashMap<String, String>();
            if (phaseSingleContainer.Properties.Resolutions != null) {
                for (Resolution resolution : phaseSingleContainer.Properties.Resolutions) {
                    resultMap.put(resolution.Province, resolution.Resolution);
                }
            }
            List<String> orders = new ArrayList<String>();
            for (SingleContainer<Order> orderContainer : orderMultiContainer.Properties) {
                String resolution = resultMap.get(orderContainer.Properties.Parts.get(0));
                if (resolution == null) {
                    orders.add(getResources().getString(R.string.nation_order, orderContainer.Properties.Nation, TextUtils.join(" ", orderContainer.Properties.Parts)));
                } else {
                    orders.add(getResources().getString(R.string.nation_order_result, orderContainer.Properties.Nation, TextUtils.join(" ", orderContainer.Properties.Parts), resolution));
                }
            }
            Collections.sort(orders);
            final EditText ordersView = (EditText) findViewById(R.id.orders_view);
            ordersView.setOnTouchListener(new View.OnTouchListener() {

                @Override
                public boolean onTouch(View view, MotionEvent motionEvent) {
                    flickFrameLayout.onTouchEvent(motionEvent);
                    ordersView.onTouchEvent(motionEvent);
                    return true;
                }
            });
            StringBuffer orderBuffer = new StringBuffer();
            for (String order : orders) {
                orderBuffer.append(order + "\n");
            }
            ordersView.setText(orderBuffer);
            return null;
        }
    })).toObservable(), null, getResources().getString(R.string.loading_orders));
}
Also used : Order(se.oort.diplicity.apigen.Order) EditText(android.widget.EditText) Phase(se.oort.diplicity.apigen.Phase) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) NavigationView(android.support.design.widget.NavigationView) UserView(se.oort.diplicity.UserView) View(android.view.View) AdapterView(android.widget.AdapterView) TextView(android.widget.TextView) ListView(android.widget.ListView) ScrollView(android.widget.ScrollView) MotionEvent(android.view.MotionEvent) SingleContainer(se.oort.diplicity.apigen.SingleContainer) MultiContainer(se.oort.diplicity.apigen.MultiContainer) Func2(rx.functions.Func2) Resolution(se.oort.diplicity.apigen.Resolution)

Example 2 with Order

use of se.oort.diplicity.apigen.Order in project android-diplicity by zond.

the class GameActivity method showMap.

public void showMap() {
    hideAllExcept(R.id.map_view);
    final Sendable<String> renderer = new Sendable<String>() {

        @Override
        public void send(String url) {
            ((MapView) findViewById(R.id.map_view)).load(GameActivity.this, url);
        }
    };
    if (game.Started) {
        findViewById(R.id.rewind).setVisibility(View.VISIBLE);
        FloatingActionButton firstPhaseButton = (FloatingActionButton) findViewById(R.id.rewind);
        if (phaseMeta.PhaseOrdinal < 3) {
            firstPhaseButton.setEnabled(false);
            firstPhaseButton.setAlpha(0.3f);
        } else {
            firstPhaseButton.setEnabled(true);
            firstPhaseButton.setAlpha(1.0f);
            firstPhaseButton.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    firstPhase();
                }
            });
        }
        findViewById(R.id.previous).setVisibility(View.VISIBLE);
        FloatingActionButton previousPhaseButton = (FloatingActionButton) findViewById(R.id.previous);
        if (phaseMeta.PhaseOrdinal < 2) {
            previousPhaseButton.setEnabled(false);
            previousPhaseButton.setAlpha(0.3f);
        } else {
            previousPhaseButton.setEnabled(true);
            previousPhaseButton.setAlpha(1.0f);
            previousPhaseButton.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    prevPhase();
                }
            });
        }
        findViewById(R.id.next).setVisibility(View.VISIBLE);
        FloatingActionButton nextPhaseButton = (FloatingActionButton) findViewById(R.id.next);
        if (game.NewestPhaseMeta != null && game.NewestPhaseMeta.get(0).PhaseOrdinal <= phaseMeta.PhaseOrdinal) {
            nextPhaseButton.setEnabled(false);
            nextPhaseButton.setAlpha(0.3f);
        } else {
            nextPhaseButton.setEnabled(true);
            nextPhaseButton.setAlpha(1.0f);
            nextPhaseButton.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    nextPhase();
                }
            });
        }
        FloatingActionButton lastPhaseButton = (FloatingActionButton) findViewById(R.id.fast_forward);
        if (game.NewestPhaseMeta != null && game.NewestPhaseMeta.get(0).PhaseOrdinal <= phaseMeta.PhaseOrdinal + 1) {
            lastPhaseButton.setEnabled(false);
            lastPhaseButton.setAlpha(0.3f);
        } else {
            lastPhaseButton.setEnabled(true);
            lastPhaseButton.setAlpha(1.0f);
            findViewById(R.id.fast_forward).setVisibility(View.VISIBLE);
            lastPhaseButton.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    lastPhase();
                }
            });
        }
        String url = getBaseURL() + "Game/" + game.ID + "/Phase/" + phaseMeta.PhaseOrdinal + "/Map";
        if (getLocalDevelopmentMode() && !getLocalDevelopmentModeFakeID().equals("")) {
            url = url + "?fake-id=" + getLocalDevelopmentModeFakeID();
        }
        renderer.send(url);
        if (member != null && !phaseMeta.Resolved) {
            handleReq(JoinObservable.when(JoinObservable.from(optionsService.GetOptions(game.ID, phaseMeta.PhaseOrdinal.toString())).and(orderService.ListOrders(game.ID, phaseMeta.PhaseOrdinal.toString())).and(phaseService.PhaseLoad(game.ID, phaseMeta.PhaseOrdinal.toString())).then(new Func3<SingleContainer<Map<String, OptionsService.Option>>, MultiContainer<Order>, SingleContainer<Phase>, Object>() {

                @Override
                public Object call(SingleContainer<Map<String, OptionsService.Option>> opts, MultiContainer<Order> ords, SingleContainer<Phase> phase) {
                    options = opts.Properties;
                    orders.clear();
                    for (SingleContainer<Order> orderContainer : ords.Properties) {
                        String srcProvince = orderContainer.Properties.Parts.get(0);
                        if (srcProvince.indexOf('/') != -1) {
                            srcProvince = srcProvince.substring(0, srcProvince.indexOf('/'));
                        }
                        orders.put(srcProvince, orderContainer.Properties);
                    }
                    boolean hasBuildOpts = false;
                    boolean hasDisbandOpts = false;
                    for (OptionsService.Option opt : options.values()) {
                        if (opt.Next.containsKey("Build")) {
                            hasBuildOpts = true;
                        }
                        if (opt.Next.containsKey("Disband")) {
                            hasDisbandOpts = true;
                        }
                    }
                    int units = 0;
                    int scs = 0;
                    for (UnitWrapper unit : phase.Properties.Units) {
                        if (unit.Unit.Nation.equals(member.Nation)) {
                            units++;
                        }
                    }
                    for (SC sc : phase.Properties.SCs) {
                        if (sc.Owner.equals(member.Nation)) {
                            scs++;
                        }
                    }
                    if (hasBuildOpts && units < scs) {
                        Toast.makeText(GameActivity.this, getResources().getString(R.string.you_can_build_n_this_phase, getResources().getQuantityString(R.plurals.unit, scs - units, scs - units)), Toast.LENGTH_LONG).show();
                    } else if (hasDisbandOpts && scs < units) {
                        Toast.makeText(GameActivity.this, getResources().getString(R.string.you_have_to_disband_n_this_phase, getResources().getQuantityString(R.plurals.unit, units - scs, units - scs)), Toast.LENGTH_LONG).show();
                    }
                    return null;
                }
            })).toObservable(), new Sendable<Object>() {

                @Override
                public void send(Object o) {
                    acceptOrders();
                }
            }, getResources().getString(R.string.loading_state));
        }
    } else {
        findViewById(R.id.rewind).setVisibility(View.GONE);
        findViewById(R.id.previous).setVisibility(View.GONE);
        findViewById(R.id.next).setVisibility(View.GONE);
        findViewById(R.id.fast_forward).setVisibility(View.GONE);
        handleReq(variantService.GetStartPhase(game.Variant), new Sendable<SingleContainer<VariantService.Phase>>() {

            @Override
            public void send(SingleContainer<VariantService.Phase> phaseSingleContainer) {
                String url = null;
                for (Link link : phaseSingleContainer.Links) {
                    if (link.Rel.equals("map")) {
                        url = link.URL;
                        break;
                    }
                }
                if (url != null) {
                    renderer.send(url);
                } else {
                    App.firebaseCrashReport("No map URL found in variant " + game.Variant + "?");
                    Toast.makeText(getBaseContext(), R.string.unknown_error, Toast.LENGTH_SHORT).show();
                }
            }
        }, getResources().getString(R.string.loading_start_state));
    }
}
Also used : VariantService(se.oort.diplicity.VariantService) Phase(se.oort.diplicity.apigen.Phase) SC(se.oort.diplicity.apigen.SC) MultiContainer(se.oort.diplicity.apigen.MultiContainer) FloatingActionButton(android.support.design.widget.FloatingActionButton) Func3(rx.functions.Func3) Order(se.oort.diplicity.apigen.Order) OptionsService(se.oort.diplicity.OptionsService) UnitWrapper(se.oort.diplicity.apigen.UnitWrapper) NavigationView(android.support.design.widget.NavigationView) UserView(se.oort.diplicity.UserView) View(android.view.View) AdapterView(android.widget.AdapterView) TextView(android.widget.TextView) ListView(android.widget.ListView) ScrollView(android.widget.ScrollView) SingleContainer(se.oort.diplicity.apigen.SingleContainer) Sendable(se.oort.diplicity.Sendable) Map(java.util.Map) HashMap(java.util.HashMap) Link(se.oort.diplicity.apigen.Link)

Example 3 with Order

use of se.oort.diplicity.apigen.Order in project android-diplicity by zond.

the class GameActivity method setOrder.

private void setOrder(String province, List<String> parts) {
    Sendable<SingleContainer<Order>> handler = new Sendable<SingleContainer<Order>>() {

        @Override
        public void send(SingleContainer<Order> orderSingleContainer) {
            MapView mv = (MapView) findViewById(R.id.map_view);
            mv.evaluateJS("window.map.removeOrders()");
            for (Map.Entry<String, Order> entry : orders.entrySet()) {
                mv.evaluateJS("window.map.addOrder(" + new Gson().toJson(entry.getValue().Parts) + ", col" + entry.getValue().Nation + ");");
            }
        }
    };
    if (parts == null || parts.size() == 0) {
        if (orders.containsKey(province)) {
            orders.remove(province);
            handleReq(orderService.OrderDelete(game.ID, phaseMeta.PhaseOrdinal.toString(), province), handler, getResources().getString(R.string.removing_order));
        }
    } else {
        Order order = new Order();
        order.GameID = game.ID;
        order.Nation = member.Nation;
        order.PhaseOrdinal = phaseMeta.PhaseOrdinal;
        order.Parts = parts;
        orders.put(province, order);
        handleReq(orderService.OrderCreate(order, game.ID, phaseMeta.PhaseOrdinal.toString()), handler, getResources().getString(R.string.saving_order));
    }
}
Also used : SingleContainer(se.oort.diplicity.apigen.SingleContainer) Order(se.oort.diplicity.apigen.Order) Sendable(se.oort.diplicity.Sendable) Gson(com.google.gson.Gson) Map(java.util.Map) HashMap(java.util.HashMap)

Aggregations

HashMap (java.util.HashMap)3 Order (se.oort.diplicity.apigen.Order)3 SingleContainer (se.oort.diplicity.apigen.SingleContainer)3 NavigationView (android.support.design.widget.NavigationView)2 View (android.view.View)2 AdapterView (android.widget.AdapterView)2 ListView (android.widget.ListView)2 ScrollView (android.widget.ScrollView)2 TextView (android.widget.TextView)2 Map (java.util.Map)2 Sendable (se.oort.diplicity.Sendable)2 UserView (se.oort.diplicity.UserView)2 MultiContainer (se.oort.diplicity.apigen.MultiContainer)2 Phase (se.oort.diplicity.apigen.Phase)2 FloatingActionButton (android.support.design.widget.FloatingActionButton)1 MotionEvent (android.view.MotionEvent)1 EditText (android.widget.EditText)1 Gson (com.google.gson.Gson)1 ArrayList (java.util.ArrayList)1 Func2 (rx.functions.Func2)1